Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __CS_IVARIA_SOFTBODYANIM_H__
00022 #define __CS_IVARIA_SOFTBODYANIM_H__
00023
00028 #include "csutil/scf_interface.h"
00029 #include "imesh/genmesh.h"
00030 #include "ivaria/bullet.h"
00031
00032 namespace CS {
00033 namespace Mesh {
00034
00035 struct iAnimatedMesh;
00036
00037 }
00038 }
00039
00040 namespace CS {
00041 namespace Animation {
00042
00053 struct iSoftBodyAnimationControlType : public iGenMeshAnimationControlType
00054 {
00055 SCF_INTERFACE (CS::Animation::iSoftBodyAnimationControlType, 1, 0, 0);
00056 };
00057
00070 struct iSoftBodyAnimationControlFactory : public iGenMeshAnimationControlFactory
00071 {
00072 SCF_INTERFACE (CS::Animation::iSoftBodyAnimationControlFactory, 1, 0, 0);
00073 };
00074
00093 struct iSoftBodyAnimationControl : public iGenMeshAnimationControl
00094 {
00095 SCF_INTERFACE (CS::Animation::iSoftBodyAnimationControl, 2, 0, 0);
00096
00107 virtual void SetSoftBody (CS::Physics::Bullet::iSoftBody* body,
00108 CS::Physics::Bullet::MeshDuplicationMode duplicationMode
00109 = CS::Physics::Bullet::MESH_DUPLICATION_NONE) = 0;
00110
00114 virtual CS::Physics::Bullet::iSoftBody* GetSoftBody () = 0;
00115
00140 virtual void CreateAnimatedMeshAnchor (CS::Mesh::iAnimatedMesh* animesh,
00141 iRigidBody* body,
00142 size_t bodyVertexIndex,
00143 size_t animeshVertexIndex = (size_t) ~0) = 0;
00144
00148 virtual size_t GetAnimatedMeshAnchorVertex (size_t bodyVertexIndex) = 0;
00149
00154 virtual void RemoveAnimatedMeshAnchor (size_t bodyVertexIndex) = 0;
00155 };
00156
00157 }
00158 }
00159
00160 #endif // __CS_IVARIA_SOFTBODYANIM_H__