454 lines
19 KiB
C++
Executable File
454 lines
19 KiB
C++
Executable File
#ifndef __IMORPHBYBONE__H
|
|
#define __IMORPHBYBONE__H
|
|
|
|
#include "iFnPub.h"
|
|
|
|
//***************************************************************
|
|
//Function Publishing System stuff
|
|
//****************************************************************
|
|
#define MORPHBYBONE_INTERFACE Interface_ID(0xDE17A34f, 0x8B52E4E3)
|
|
|
|
|
|
enum { morphbybone_addbone,
|
|
morphbybone_removebone,
|
|
morphbybone_selectbone,
|
|
morphbybone_getselectedbone,
|
|
morphbybone_getselectedmorph,
|
|
morphbybone_selectvertices,
|
|
morphbybone_isselectedvertex,
|
|
morphbybone_resetgraph,
|
|
morphbybone_grow,morphbybone_shrink,
|
|
morphbybone_ring,morphbybone_loop,
|
|
|
|
morphbybone_createmorph,
|
|
morphbybone_removemorph,
|
|
morphbybone_editmorph,
|
|
|
|
morphbybone_clearvertices,
|
|
morphbybone_deletevertices,
|
|
morphbybone_resetorientation,
|
|
|
|
morphbybone_reloadtarget,
|
|
morphbybone_mirrorpaste,
|
|
morphbybone_editfalloffgraph,
|
|
|
|
morphbybone_setexternalnode,
|
|
|
|
morphbybone_moveverts,
|
|
morphbybone_transformverts,
|
|
|
|
morphbybone_numberofbones,
|
|
|
|
morphbybone_bonegetinitialnodetm,
|
|
morphbybone_bonesetinitialnodetm,
|
|
|
|
morphbybone_bonegetinitialobjecttm,
|
|
morphbybone_bonesetinitialobjecttm,
|
|
|
|
morphbybone_bonegetinitialparenttm,
|
|
morphbybone_bonesetinitialparenttm,
|
|
|
|
morphbybone_bonegetnumberofmorphs,
|
|
|
|
morphbybone_bonegetmorphname,
|
|
morphbybone_bonesetmorphname,
|
|
|
|
morphbybone_bonegetmorphangle,
|
|
morphbybone_bonesetmorphangle,
|
|
|
|
morphbybone_bonegetmorphtm,
|
|
morphbybone_bonesetmorphtm,
|
|
|
|
morphbybone_bonegetmorphparenttm,
|
|
morphbybone_bonesetmorphparenttm,
|
|
|
|
morphbybone_bonegetmorphisdead,
|
|
morphbybone_bonegetmorphsetdead,
|
|
|
|
morphbybone_bonegetmorphnumpoints,
|
|
morphbybone_bonesetmorphnumpoints,
|
|
|
|
morphbybone_bonegetmorphvertid,
|
|
morphbybone_bonesetmorphvertid,
|
|
|
|
morphbybone_bonegetmorphvec,
|
|
morphbybone_bonesetmorphvec,
|
|
|
|
morphbybone_bonegetmorphpvec,
|
|
morphbybone_bonesetmorphpvec,
|
|
|
|
morphbybone_bonegetmorphop,
|
|
morphbybone_bonesetmorphop,
|
|
|
|
morphbybone_bonegetmorphowner,
|
|
morphbybone_bonesetmorphowner,
|
|
|
|
morphbybone_bonegetmorphfalloff,
|
|
morphbybone_bonesetmorphfalloff,
|
|
|
|
morphbybone_bonegetjointtype,
|
|
morphbybone_bonesetjointtype,
|
|
|
|
morphbybone_update,
|
|
|
|
morphbybone_getweight,
|
|
|
|
morphbybone_bonegetmorphenabled,
|
|
morphbybone_bonesetmorphenabled,
|
|
|
|
};
|
|
//****************************************************************
|
|
|
|
|
|
class IMorphByBone : public FPMixinInterface
|
|
{
|
|
public:
|
|
|
|
//Function Publishing System
|
|
//Function Map For Mixin Interface
|
|
//*************************************************
|
|
BEGIN_FUNCTION_MAP
|
|
|
|
VFN_1(morphbybone_addbone, fnAddBone, TYPE_INODE);
|
|
VFN_1(morphbybone_removebone, fnRemoveBone, TYPE_INODE);
|
|
VFN_2(morphbybone_selectbone, fnSelectBone, TYPE_INODE,TYPE_STRING);
|
|
FN_0(morphbybone_getselectedbone, TYPE_INODE, fnGetSelectedBone);
|
|
FN_0(morphbybone_getselectedmorph, TYPE_STRING, fnGetSelectedMorph);
|
|
VFN_2(morphbybone_selectvertices, fnSelectVertices, TYPE_INODE,TYPE_BITARRAY);
|
|
FN_2(morphbybone_isselectedvertex,TYPE_BOOL, fnIsSelectedVertex, TYPE_INODE,TYPE_INT);
|
|
|
|
VFN_0(morphbybone_resetgraph, fnResetGraph);
|
|
VFN_0(morphbybone_grow, fnGrow);
|
|
VFN_0(morphbybone_shrink, fnShrink);
|
|
VFN_0(morphbybone_ring, fnRing);
|
|
VFN_0(morphbybone_loop, fnLoop);
|
|
|
|
VFN_1(morphbybone_createmorph, fnCreateMorph, TYPE_INODE);
|
|
VFN_2(morphbybone_removemorph, fnRemoveMorph, TYPE_INODE,TYPE_STRING);
|
|
|
|
VFN_1(morphbybone_editmorph, fnEdit,TYPE_BOOL);
|
|
|
|
VFN_0(morphbybone_clearvertices, fnClearSelectedVertices);
|
|
VFN_0(morphbybone_deletevertices, fnDeleteSelectedVertices);
|
|
|
|
VFN_2(morphbybone_resetorientation, fnResetOrientation, TYPE_INODE,TYPE_STRING);
|
|
VFN_2(morphbybone_reloadtarget, fnReloadTarget, TYPE_INODE,TYPE_STRING);
|
|
VFN_1(morphbybone_mirrorpaste, fnMirrorPaste, TYPE_INODE);
|
|
|
|
VFN_2(morphbybone_editfalloffgraph, fnEditFalloffGraph, TYPE_INODE,TYPE_STRING);
|
|
|
|
VFN_3(morphbybone_setexternalnode, fnSetExternalNode, TYPE_INODE,TYPE_STRING,TYPE_INODE);
|
|
|
|
VFN_1(morphbybone_moveverts, fnMoveVerts, TYPE_POINT3);
|
|
|
|
VFN_2(morphbybone_transformverts, fnTransFormVerts, TYPE_MATRIX3, TYPE_MATRIX3);
|
|
|
|
FN_0(morphbybone_numberofbones, TYPE_INT, fnNumberOfBones);
|
|
|
|
FN_1(morphbybone_bonegetinitialnodetm, TYPE_MATRIX3, fnBoneGetInitialNodeTM, TYPE_INODE);
|
|
VFN_2(morphbybone_bonesetinitialnodetm, fnBoneSetInitialNodeTM, TYPE_INODE, TYPE_MATRIX3);
|
|
|
|
FN_1(morphbybone_bonegetinitialobjecttm, TYPE_MATRIX3, fnBoneGetInitialObjectTM, TYPE_INODE);
|
|
VFN_2(morphbybone_bonesetinitialobjecttm, fnBoneSetInitialObjectTM, TYPE_INODE, TYPE_MATRIX3);
|
|
|
|
FN_1(morphbybone_bonegetinitialparenttm, TYPE_MATRIX3, fnBoneGetInitialParentTM, TYPE_INODE);
|
|
VFN_2(morphbybone_bonesetinitialparenttm, fnBoneSetInitialParentTM, TYPE_INODE, TYPE_MATRIX3);
|
|
|
|
FN_1(morphbybone_bonegetnumberofmorphs, TYPE_INT, fnBoneGetNumberOfMorphs,TYPE_INODE);
|
|
|
|
FN_2(morphbybone_bonegetmorphname, TYPE_STRING, fnBoneGetMorphName,TYPE_INODE,TYPE_INT);
|
|
VFN_3(morphbybone_bonesetmorphname, fnBoneSetMorphName,TYPE_INODE,TYPE_INT,TYPE_STRING);
|
|
|
|
FN_2(morphbybone_bonegetmorphangle, TYPE_FLOAT, fnBoneGetMorphAngle,TYPE_INODE,TYPE_INT);
|
|
VFN_3(morphbybone_bonesetmorphangle, fnBoneSetMorphAngle,TYPE_INODE,TYPE_INT,TYPE_FLOAT);
|
|
|
|
FN_2(morphbybone_bonegetmorphtm, TYPE_MATRIX3, fnBoneGetMorphTM,TYPE_INODE,TYPE_INT);
|
|
VFN_3(morphbybone_bonesetmorphtm, fnBoneSetMorphTM,TYPE_INODE,TYPE_INT,TYPE_MATRIX3);
|
|
|
|
FN_2(morphbybone_bonegetmorphparenttm, TYPE_MATRIX3, fnBoneGetMorphParentTM,TYPE_INODE,TYPE_INT);
|
|
VFN_3(morphbybone_bonesetmorphparenttm, fnBoneSetMorphParentTM,TYPE_INODE,TYPE_INT,TYPE_MATRIX3);
|
|
|
|
FN_2(morphbybone_bonegetmorphisdead, TYPE_BOOL, fnBoneGetMorphIsDead,TYPE_INODE,TYPE_INT);
|
|
VFN_3(morphbybone_bonegetmorphsetdead, fnBoneSetMorphSetDead,TYPE_INODE,TYPE_INT,TYPE_BOOL);
|
|
|
|
FN_2 (morphbybone_bonegetmorphnumpoints, TYPE_INT, fnBoneGetMorphNumPoints,TYPE_INODE,TYPE_INT);
|
|
VFN_3(morphbybone_bonesetmorphnumpoints, fnBoneSetMorphNumPoints,TYPE_INODE,TYPE_INT,TYPE_INT);
|
|
|
|
|
|
FN_3 (morphbybone_bonegetmorphvertid, TYPE_INT, fnBoneGetMorphVertID,TYPE_INODE,TYPE_INT,TYPE_INT);
|
|
VFN_4(morphbybone_bonesetmorphvertid, fnBoneSetMorphVertID,TYPE_INODE,TYPE_INT,TYPE_INT,TYPE_INT);
|
|
|
|
|
|
FN_3 (morphbybone_bonegetmorphvec, TYPE_POINT3, fnBoneGetMorphVec,TYPE_INODE,TYPE_INT,TYPE_INT);
|
|
VFN_4(morphbybone_bonesetmorphvec, fnBoneSetMorphVec,TYPE_INODE,TYPE_INT,TYPE_INT,TYPE_POINT3);
|
|
|
|
FN_3 (morphbybone_bonegetmorphpvec, TYPE_POINT3, fnBoneGetMorphPVec,TYPE_INODE,TYPE_INT,TYPE_INT);
|
|
VFN_4(morphbybone_bonesetmorphpvec, fnBoneSetMorphPVec,TYPE_INODE,TYPE_INT,TYPE_INT,TYPE_POINT3);
|
|
|
|
|
|
FN_3 (morphbybone_bonegetmorphop, TYPE_POINT3, fnBoneGetMorphOP,TYPE_INODE,TYPE_INT,TYPE_INT);
|
|
VFN_4(morphbybone_bonesetmorphop, fnBoneSetMorphOP,TYPE_INODE,TYPE_INT,TYPE_INT,TYPE_POINT3);
|
|
|
|
|
|
FN_3 (morphbybone_bonegetmorphowner, TYPE_INODE, fnBoneGetMorphOwner,TYPE_INODE,TYPE_INT,TYPE_INT);
|
|
VFN_4(morphbybone_bonesetmorphowner, fnBoneSetMorphOwner,TYPE_INODE,TYPE_INT,TYPE_INT,TYPE_INODE);
|
|
|
|
FN_2 (morphbybone_bonegetmorphfalloff, TYPE_INT, fnBoneGetMorphFalloff,TYPE_INODE,TYPE_INT);
|
|
VFN_3(morphbybone_bonesetmorphfalloff, fnBoneSetMorphFalloff,TYPE_INODE,TYPE_INT,TYPE_INT);
|
|
|
|
FN_1 (morphbybone_bonegetjointtype, TYPE_INT, fnBoneGetJointType,TYPE_INODE);
|
|
VFN_2(morphbybone_bonesetjointtype, fnBoneSetJointType,TYPE_INODE,TYPE_INT);
|
|
|
|
VFN_0(morphbybone_update, fnUpdate);
|
|
|
|
FN_2(morphbybone_getweight, TYPE_FLOAT, fnGetWeight,TYPE_INODE,TYPE_STRING);
|
|
|
|
|
|
FN_2 (morphbybone_bonegetmorphenabled, TYPE_BOOL, fnBoneGetMorphEnabled,TYPE_INODE,TYPE_INT);
|
|
VFN_3(morphbybone_bonesetmorphenabled, fnBoneSetMorphEnabled,TYPE_INODE,TYPE_INT,TYPE_BOOL);
|
|
|
|
|
|
END_FUNCTION_MAP
|
|
|
|
|
|
FPInterfaceDesc* GetDesc(); // <-- must implement
|
|
//note functions that start with fn are to be used with maxscript since these expect 1 based indices
|
|
|
|
/// void fnAddBone(INode *node)=0;
|
|
/// This adds a bone to the system
|
|
/// INode *node the bone to add
|
|
virtual void fnAddBone(INode *node)=0;
|
|
|
|
/// void fnRemoveBone(INode *node)
|
|
/// This removes a bone from the system
|
|
/// INode *node the bone to remove
|
|
virtual void fnRemoveBone(INode *node)=0;
|
|
|
|
/// void fnSelectBone(INode *node,TCHAR* morphName)
|
|
/// This selects a bone and/or morph in the selection list. If the morphName is null
|
|
/// only the bone will be selected.
|
|
/// INode *node this is the node to be selected
|
|
/// TCHAR* morphName this is the morph to be selected
|
|
virtual void fnSelectBone(INode *node,TCHAR* morphName)=0;
|
|
|
|
/// INode* fnGetSelectedBone()
|
|
/// This returns the current active bone
|
|
virtual INode* fnGetSelectedBone()=0;
|
|
|
|
/// TCHAR* fnGetSelectedMorph()
|
|
/// This returns the name of the current selected morph
|
|
virtual TCHAR* fnGetSelectedMorph()=0;
|
|
|
|
/// void fnSelectVertices(INode *node,BitArray *sel)
|
|
/// This lets you select vertices.
|
|
/// INode *node this is the node that owns the modifier, this is used to find a specific
|
|
/// instance of the modifier and apply it to the right local data
|
|
/// BitArray *sel the selection array
|
|
virtual void fnSelectVertices(INode *node,BitArray *sel)=0;
|
|
/// BOOL fnIsSelectedVertex(INode *node,int index)
|
|
/// INode *node this is the node that owns the modifier, this is used to find a specific
|
|
/// instance of the modifier and apply it to the right local data
|
|
/// int index this the index of the vertex that you want to check
|
|
virtual BOOL fnIsSelectedVertex(INode *node,int index)=0;
|
|
|
|
/// void fnResetGraph()
|
|
/// this is equivalent to pressing the reset graph button in the UI which
|
|
/// resets the the soft selection graph to a sinual graph
|
|
virtual void fnResetGraph()=0;
|
|
/// void fnShrink()
|
|
/// This contracts your vertex selection
|
|
virtual void fnShrink()=0;
|
|
/// void fnGrow()
|
|
/// This expands your vertex selection
|
|
virtual void fnGrow()=0;
|
|
/// void fnRing()
|
|
/// This turns your current selection into a ring selection
|
|
virtual void fnRing()=0;
|
|
/// void fnLoop()
|
|
/// This turns your current selection into a loop selection
|
|
virtual void fnLoop()=0;
|
|
|
|
/// void fnCreateMorph(INode *node)
|
|
/// This creates a new morph for a bone
|
|
/// INode *node this is the bone that you want to create the morph on
|
|
virtual void fnCreateMorph(INode *node)=0;
|
|
|
|
/// void fnRemoveMorph(INode *node, TCHAR *name)
|
|
/// This removes a morph target
|
|
/// INode *node this is the bone that owns the morph that you want to remove
|
|
/// TCHAR *name this is the name of the morph that you want to remove
|
|
virtual void fnRemoveMorph(INode *node, TCHAR *name)=0;
|
|
|
|
/// fnEdit(BOOL edit)
|
|
/// This toggles on/off the edit morph mode. The current active morph is the one
|
|
/// that will be edited
|
|
/// BOOL edit the edit mode state
|
|
virtual void fnEdit(BOOL edit)=0;
|
|
|
|
/// void fnClearSelectedVertices()
|
|
/// This ie equivalent to press the clear verts button in the UI which takes the
|
|
/// selected vertices and sets their delta to zero
|
|
virtual void fnClearSelectedVertices()=0;
|
|
/// void fnDeleteSelectedVertices()
|
|
/// This ie equivalent to press the delet verts button in the UI which takes the
|
|
/// selected vertices and removes them from the current morph
|
|
virtual void fnDeleteSelectedVertices()=0;
|
|
|
|
/// void fnResetOrientation(INode *node, TCHAR *name)
|
|
/// This resets the orientation of morph to the current orientation of the bone that owns it
|
|
/// INode *node this is the bone that owns the morph to be reset
|
|
/// TCHAR *name this is the name of the morph to be reset
|
|
virtual void fnResetOrientation(INode *node, TCHAR *name)=0;
|
|
/// void fnReloadTarget(INode *node, TCHAR *name)
|
|
/// This reloads the external mesh for a morph if there is one
|
|
/// INode *node this is the bone that owns the morph to be reloaded
|
|
/// TCHAR *name this is the name of the morph to be reloaded
|
|
virtual void fnReloadTarget(INode *node, TCHAR *name)=0;
|
|
|
|
/// fnMirrorPaste(INode *node)
|
|
/// This mirror pastes the node to its mirror target based on the mirror parameters
|
|
/// INode *node this is the node that is to be mirrored
|
|
virtual void fnMirrorPaste(INode *node)=0;
|
|
|
|
/// void fnEditFalloffGraph(INode *node, TCHAR *name)
|
|
/// This brings up the falloff graph of a morph if there is one
|
|
/// INode *node this is the bone that owns the morph
|
|
/// TCHAR *name this is the name of the morph to to have its graph brought up
|
|
virtual void fnEditFalloffGraph(INode *node, TCHAR *name)=0;
|
|
/// void fnSetExternalNode(INode *node, TCHAR *name,INode *exnode)
|
|
/// This lets you set the external mesh node for a morph
|
|
/// INode *node this is the bone that owns the morph
|
|
/// TCHAR *name this is the name of the morph to to have its external node set
|
|
virtual void fnSetExternalNode(INode *node, TCHAR *name,INode *exnode)=0;
|
|
|
|
/// void fnMoveVerts(Point3 vec)
|
|
/// This moves the selected vertices along a vec which is applied to an active morph if there is one
|
|
/// Point3 vec this is the vec which the vertices are moved.
|
|
virtual void fnMoveVerts(Point3 vec)=0;
|
|
/// void fnTransFormVerts(Matrix3 a, Matrix3 b)
|
|
/// This transforms the selected vertices which is applied to an active morph if there is one
|
|
/// Matrix a this is matrix transformation
|
|
/// Matrix b this is the space?
|
|
virtual void fnTransFormVerts(Matrix3 a, Matrix3 b)=0;
|
|
|
|
/// int fnNumberOfBones()
|
|
/// This is the number of bones in the system
|
|
virtual int fnNumberOfBones() = 0;
|
|
|
|
/// Matrix3* fnBoneGetInitialNodeTM(INode *node)
|
|
/// This returns the initial node tm of bone. This is the tm of the bone
|
|
/// when it is added to the system
|
|
/// the initial node tm is used to determine the actual deformation
|
|
/// INode *node this is the bone that you want get the tm from
|
|
virtual Matrix3* fnBoneGetInitialNodeTM(INode *node) = 0;
|
|
/// void fnBoneSetInitialNodeTM(INode *node, Matrix3 tm)
|
|
/// This lets you set the initial node tm of a bone
|
|
/// INode *node this is the bone that you want set the tm on
|
|
/// Matrix3 tm this is the initial tm
|
|
virtual void fnBoneSetInitialNodeTM(INode *node, Matrix3 tm) = 0;
|
|
|
|
|
|
/// Matrix3* fnBoneGetInitialObjectTM(INode *node)
|
|
/// This returns the initial object tm of bone. This is the tm of the bone
|
|
/// when it is added to the system
|
|
/// the initial object tm is used only for display
|
|
/// INode *node this is the bone that you want get the tm from
|
|
virtual Matrix3* fnBoneGetInitialObjectTM(INode *node) = 0;
|
|
/// void fnBoneSetInitialObjectTM(INode *node, Matrix3 tm)
|
|
/// This lets you set the initial object tm of a bone
|
|
/// INode *node this is the bone that you want set the tm on
|
|
/// Matrix3 tm this is the initial tm
|
|
virtual void fnBoneSetInitialObjectTM(INode *node, Matrix3 tm) = 0;
|
|
|
|
|
|
/// Matrix3* fnBoneGetInitialParentTM(INode *node)
|
|
/// This returns the initial node tm parent that owns bone.
|
|
/// INode *node this is the bone that you want get the parent tm from
|
|
virtual Matrix3* fnBoneGetInitialParentTM(INode *node) = 0;
|
|
/// void fnBoneSetInitialParentTM(INode *node, Matrix3 tm)
|
|
/// This lets you set the parent tm of a bone.
|
|
/// INode *node this is the bone that you want set the tm on
|
|
/// Matrix3 tm this is the parent tm
|
|
virtual void fnBoneSetInitialParentTM(INode *node, Matrix3 tm) = 0;
|
|
|
|
/// int fnBoneGetNumberOfMorphs(INode *node)
|
|
/// This returns the number of morphs that a bone owns
|
|
/// INode *node this the bone to get the number of morphs from
|
|
virtual int fnBoneGetNumberOfMorphs(INode *node) = 0;
|
|
|
|
/// the follow le get/set properties of individual morphs they all follow the same format
|
|
/// INode *node is the bone that owns the morph
|
|
/// int morphIndex is the index of the morph
|
|
virtual TCHAR* fnBoneGetMorphName(INode *node, int morphIndex) = 0;
|
|
virtual void fnBoneSetMorphName(INode *node, int morphIndex,TCHAR* name) = 0;
|
|
|
|
virtual float fnBoneGetMorphAngle(INode *node, int morphIndex) = 0;
|
|
virtual void fnBoneSetMorphAngle(INode *node, int morphIndex,float angle) = 0;
|
|
|
|
|
|
virtual Matrix3* fnBoneGetMorphTM(INode *node, int morphIndex) = 0;
|
|
virtual void fnBoneSetMorphTM(INode *node, int morphIndex,Matrix3 tm) = 0;
|
|
|
|
virtual Matrix3* fnBoneGetMorphParentTM(INode *node, int morphIndex) = 0;
|
|
virtual void fnBoneSetMorphParentTM(INode *node, int morphIndex,Matrix3 tm) = 0;
|
|
|
|
virtual BOOL fnBoneGetMorphIsDead(INode *node, int morphIndex) = 0;
|
|
virtual void fnBoneSetMorphSetDead(INode *node, int morphIndex,BOOL dead) = 0;
|
|
|
|
virtual int fnBoneGetMorphNumPoints(INode *node, int morphIndex) = 0;
|
|
virtual void fnBoneSetMorphNumPoints(INode *node, int morphIndex, int numberPoints) = 0;
|
|
|
|
///These let you get access to the morph vertex properties
|
|
///every morph contains a list of vertices and properties
|
|
/// INode *node is the bone that owns the morph
|
|
/// int morphIndex is the index of the morph
|
|
/// int ithIndex is which vertex you want to get info about
|
|
/// the index back into the mesh vertex list
|
|
virtual int fnBoneGetMorphVertID(INode *node, int morphIndex, int ithIndex) = 0;
|
|
virtual void fnBoneSetMorphVertID(INode *node, int morphIndex, int ithIndex, int vertIndex) = 0;
|
|
|
|
/// the vector in local bone space
|
|
virtual Point3* fnBoneGetMorphVec(INode *node, int morphIndex, int ithIndex) = 0;
|
|
virtual void fnBoneSetMorphVec(INode *node, int morphIndex, int ithIndex, Point3 vec) = 0;
|
|
|
|
/// the vector in parent space
|
|
virtual Point3* fnBoneGetMorphPVec(INode *node, int morphIndex, int ithIndex) = 0;
|
|
virtual void fnBoneSetMorphPVec(INode *node, int morphIndex, int ithIndex, Point3 vec) = 0;
|
|
|
|
/// the original point before any deformation
|
|
virtual Point3* fnBoneGetMorphOP(INode *node, int morphIndex, int ithIndex) = 0;
|
|
virtual void fnBoneSetMorphOP(INode *node, int morphIndex, int ithIndex, Point3 vec) = 0;
|
|
|
|
/// this returns which node owns the vertex if ther modifier is instanced
|
|
virtual INode* fnBoneGetMorphOwner(INode *node, int morphIndex, int ithIndex) = 0;
|
|
virtual void fnBoneSetMorphOwner(INode *node, int morphIndex, int ithIndex, INode *onode) = 0;
|
|
|
|
virtual int fnBoneGetMorphFalloff(INode *node, int morphIndex) = 0;
|
|
virtual void fnBoneSetMorphFalloff(INode *node, int morphIndex, int falloff) = 0;
|
|
|
|
|
|
virtual int fnBoneGetJointType(INode *node) = 0;
|
|
virtual void fnBoneSetJointType(INode *node, int jointType) = 0;
|
|
|
|
/// void fnUpdate()
|
|
/// This forces a system to update
|
|
virtual void fnUpdate() = 0;
|
|
|
|
/// float fnGetWeight(INode *node, TCHAR*name)
|
|
/// This return the weight of particular morph is contributing
|
|
/// INode *node is the bone that owns the morph
|
|
/// TCHAR*name this is the name of the morph
|
|
virtual float fnGetWeight(INode *node, TCHAR*name) = 0;
|
|
|
|
virtual BOOL fnBoneGetMorphEnabled(INode *node, int morphIndex) = 0;
|
|
virtual void fnBoneSetMorphEnabled(INode *node, int morphIndex, BOOL enabled) = 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // __ILAG__H
|