source: OGRE/trunk/ogrenew/Tools/3dsmaxExport/plugins/PhysiqueInterface_sources/PublishedInterface.h @ 657

Revision 657, 5.2 KB checked in by mattausch, 18 years ago (diff)

added ogre dependencies and patched ogre sources

Line 
1//This is a static CORE interface
2
3
4#ifndef __IPHYSIQUEINTERFACE__H
5#define __IPHYSIQUEINTERFACE__H
6
7#include "max.h"
8#include "iFnPub.h"
9#include "phyexp.h"
10#include "bipexp.h"
11
12#define IPHYSIQUEINTERFACE Interface_ID(0x6a4e7329, 0x190169ac)
13
14class IPhysiqueInterface : public FPStaticInterface
15{
16        public:
17                Modifier* FindPhysiqueModifier (INode* physiquedNode, int modIndex = 0);
18                BOOL CheckMatrix(INode* node, ReferenceTarget* mod);
19                Matrix3 GetInitialNodeTM(INode* physiquedNode, ReferenceTarget* mod = NULL);
20                Matrix3 GetInitialBoneTM(INode* physiquedNode, int index, ReferenceTarget* mod = NULL);
21                int GetBoneCount(INode* physiquedNode, ReferenceTarget* mod = NULL);
22                Tab<INode*> GetBoneList(INode* physiquedNode, ReferenceTarget* mod = NULL);
23
24                int GetAPIVersion(INode* physiquedNode, ReferenceTarget* mod = NULL);
25
26                int GetVertexCount(INode* physiquedNode, ReferenceTarget* mod = NULL);
27
28                int GetVertexType(INode* physiquedNode, int vertIndex, ReferenceTarget* mod = NULL);
29
30                int GetVertexBoneCount(INode* physiquedNode, int vertIndex, bool rigid = true, ReferenceTarget* mod = NULL);
31                Tab<INode*> GetVertexBones(INode* node, int vertIndex, bool rigid, bool blending, ReferenceTarget* mod);
32                INode* GetVertexBone(INode* physiquedNode, int vertIndex, int boneIndex, bool rigid = true, bool blending = true, ReferenceTarget* mod = NULL);
33                Point3 GetVertexOffset(INode* physiquedNode, int vertIndex, int boneIndex, bool rigid = true, bool blending = true, ReferenceTarget* mod = NULL);
34                Point3 GetVertexDeformableOffset(INode* physiquedNode, int vertIndex, ReferenceTarget* mod = NULL, TimeValue t = 0);
35                float GetVertexWeight(INode* physiquedNode, int vertIndex, int boneIndex, bool rigid = true, bool blending = true, ReferenceTarget* mod = NULL);
36               
37                bool SetFigureMode(INode* physiquedNode, bool state, ReferenceTarget* mod = NULL);
38                bool BipedFigureMode(INode* node, bool state);
39                void SetInitialPose(INode* physiquedNode, bool set, ReferenceTarget* mod = NULL);
40
41                bool AttachToNode(INode* physiquedNode, INode* rootNode, ReferenceTarget* mod = NULL, TimeValue t = GetCOREInterface()->GetTime());
42                bool Initialize(INode* physiquedNode, INode* rootNode, ReferenceTarget* mod = NULL, TimeValue t = GetCOREInterface()->GetTime());
43               
44                void LockVertex(INode* physiquedNode, int vertexIndex, ReferenceTarget* mod = NULL);
45                void UnLockVertex(INode* physiquedNode, int vertexIndex, ReferenceTarget* mod = NULL);
46                void SetVertexBone(INode* physiquedNode, int vertexIndex, INode* bone, float weight = 1.0f, bool clear = false, ReferenceTarget* mod = NULL);
47               
48                //function ids
49                enum{getAPIVersion, checkMatrix,getPhysique,
50                         getBoneList, getBoneCount, getVertexCount,
51                         getInitialNodeTM, getInitialBoneTM,
52                         getVertexType, getVertexBones, getVertexBoneCount, getVertexBone,
53                         getVertexOffset, getVertexDeformableOffset, getVertexWeight,
54                         setInitialPose, setFigureMode,
55                         attachToNode, initialize, lockVertex, unlockVertex, setVertexBone,
56                };
57                //symbolic enumerator values
58                enum{blendingTypeEnum, interfaceTypeEnum, };
59
60                DECLARE_DESCRIPTOR(IPhysiqueInterface);
61
62                BEGIN_FUNCTION_MAP
63                FN_2(getPhysique, TYPE_REFTARG, FindPhysiqueModifier, TYPE_INODE, TYPE_INDEX);
64                FN_2(checkMatrix,TYPE_BOOL,CheckMatrix,TYPE_INODE,TYPE_REFTARG);
65                FN_2(getInitialNodeTM, TYPE_MATRIX3_BV, GetInitialNodeTM, TYPE_INODE, TYPE_REFTARG);
66                FN_3(getInitialBoneTM, TYPE_MATRIX3_BV, GetInitialBoneTM, TYPE_INODE, TYPE_INDEX, TYPE_REFTARG);
67                FN_2(getBoneCount, TYPE_INT, GetBoneCount, TYPE_INODE, TYPE_REFTARG);
68                FN_2(getBoneList, TYPE_INODE_TAB_BV, GetBoneList, TYPE_INODE, TYPE_REFTARG);
69                FN_2(getAPIVersion, TYPE_INT, GetAPIVersion, TYPE_INODE, TYPE_REFTARG);
70                VFN_3(setInitialPose, SetInitialPose, TYPE_INODE, TYPE_bool, TYPE_REFTARG);
71               
72                FN_2(getVertexCount, TYPE_INT, GetVertexCount, TYPE_INODE, TYPE_REFTARG);
73                FN_3(getVertexType, TYPE_ENUM, GetVertexType, TYPE_INODE, TYPE_INDEX, TYPE_REFTARG);
74                FN_4(getVertexBoneCount, TYPE_INT, GetVertexBoneCount, TYPE_INODE, TYPE_INDEX, TYPE_bool, TYPE_REFTARG);
75                FN_5(getVertexBones, TYPE_INODE_TAB_BV, GetVertexBones, TYPE_INODE, TYPE_INDEX, TYPE_bool, TYPE_bool, TYPE_REFTARG);
76                FN_6(getVertexBone, TYPE_INODE, GetVertexBone, TYPE_INODE, TYPE_INDEX, TYPE_INDEX, TYPE_bool, TYPE_bool, TYPE_REFTARG);
77                FN_6(getVertexOffset, TYPE_POINT3_BV, GetVertexOffset, TYPE_INODE, TYPE_INDEX, TYPE_INDEX, TYPE_bool, TYPE_bool, TYPE_REFTARG);
78                FNT_3(getVertexDeformableOffset, TYPE_POINT3_BV, GetVertexDeformableOffset, TYPE_INODE, TYPE_INDEX, TYPE_REFTARG);
79                FN_6(getVertexWeight, TYPE_FLOAT, GetVertexWeight, TYPE_INODE, TYPE_INDEX, TYPE_INDEX, TYPE_bool, TYPE_bool, TYPE_REFTARG);
80
81                FN_3(setFigureMode, TYPE_bool, SetFigureMode, TYPE_INODE, TYPE_bool, TYPE_REFTARG);
82                FNT_3(attachToNode, TYPE_bool, AttachToNode, TYPE_INODE, TYPE_INODE, TYPE_REFTARG);
83                FNT_3(initialize, TYPE_bool, Initialize, TYPE_INODE, TYPE_INODE, TYPE_REFTARG);
84                VFN_3(lockVertex, LockVertex, TYPE_INODE, TYPE_INDEX, TYPE_REFTARG);
85                VFN_3(unlockVertex, UnLockVertex, TYPE_INODE, TYPE_INDEX, TYPE_REFTARG);
86                VFN_6(setVertexBone, SetVertexBone, TYPE_INODE, TYPE_INDEX, TYPE_INODE, TYPE_FLOAT, TYPE_bool, TYPE_REFTARG);
87                END_FUNCTION_MAP
88};
89
90#endif //__IPHYSIQUEINTERFACE__H
Note: See TracBrowser for help on using the repository browser.