CrystalSpace

Public API Reference

Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

gmeshskel.h

00001 /*
00002     Copyright  (C) 2004 by Hristo Hristov
00003 
00004     This library is free software; you can redistribute it and/or
00005     modify it under the terms of the GNU Library General Public
00006     License as published by the Free Software Foundation; either
00007     version 2 of the License, or  (at your option) any later version.
00008 
00009     This library is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012     Library General Public License for more details.
00013 
00014     You should have received a copy of the GNU Library General Public
00015     License along with this library; if not, write to the Free
00016     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00017 */
00018 
00019 #ifndef __CS_IMESH_GMESHSKEL_H__
00020 #define __CS_IMESH_GMESHSKEL_H__
00021 
00022 #include "csutil/scf.h"
00023 
00024 #include "imesh/genmesh.h"
00025 
00026 struct iRigidBody;
00027 struct iGenMeshSkeletonBone;
00028 struct iGenMeshSkeletonScript;
00029 struct iGenMeshSkeletonBoneUpdateCallback;
00030 struct iGenMeshSkeletonControlFactory;
00031 
00032 class csReversibleTransform;
00033 class csVector2;
00034 class csVector3;
00035 
00036 enum csBoneTransformMode
00037 {
00038   BM_SCRIPT = 0,
00039   BM_PHYSICS,
00040   BM_NONE
00041 };
00042 
00043 enum csAULevel
00044 {
00045   AUL_BONES = 0,
00046   AUL_VERTICES
00047 };
00048 
00049 SCF_VERSION  (iGenMeshSkeletonControlState, 0, 0, 1);
00050 
00057 struct iGenMeshSkeletonControlState : public iBase
00058 {
00062   virtual int GetBonesCount () = 0;
00063 
00067   virtual iGenMeshSkeletonBone *GetBone (int i) = 0;
00068 
00072   virtual iGenMeshSkeletonBone *FindBone (const char *name) = 0;
00073 
00079   virtual iGenMeshSkeletonScript* Execute (const char *scriptname) = 0;
00080 
00084   virtual size_t GetScriptsCount () = 0;
00085 
00089   virtual iGenMeshSkeletonScript* GetScript (size_t i) = 0;
00090 
00094   virtual iGenMeshSkeletonScript* FindScript (const char *scriptname) = 0;
00095 
00099   virtual void StopAll () = 0;
00100 
00104   virtual void Stop (const char* scriptname) = 0;
00105 
00109   virtual void Stop (iGenMeshSkeletonScript *script) = 0;
00110 
00114   virtual iGenMeshSkeletonControlFactory *GetFactory() = 0;
00115 
00119   virtual csVector3 *GetAnimatedVertices() = 0;
00120 
00124   virtual int GetAnimatedVerticesCount() = 0;
00125 };
00126 
00127 SCF_VERSION  (iGenMeshSkeletonControlFactory, 0, 0, 1);
00128 
00129 struct iGenMeshSkeletonControlFactory: public iGenMeshAnimationControlFactory 
00130 {
00134   virtual const char* LoadScriptFile(const char *filename) =0;
00135   
00139   virtual void DeleteScript(const char *script_name) = 0;
00140   
00144   virtual void DeleteAllScripts() = 0;
00145 };
00146 
00147 SCF_VERSION  (iGenMeshSkeletonBone, 0, 0, 1);
00148 
00149 struct iGenMeshSkeletonBone : public iBase
00150 {
00154   virtual const char *GetName () const = 0;
00155 
00159   virtual void SetName (const char *name) = 0;
00160 
00164   virtual csReversibleTransform &GetTransform () = 0;
00165 
00169   virtual void SetTransform (const csReversibleTransform &transform) = 0;
00170 
00174   virtual csReversibleTransform &GetFullTransform () = 0;
00175 
00179   virtual iGenMeshSkeletonBone *GetParent () = 0;
00180 
00185   virtual void GetSkinBox (csBox3 &box, csVector3 &center) = 0;
00186 
00194   virtual void SetMode (csBoneTransformMode mode) = 0;
00195 
00199   virtual csBoneTransformMode GetMode () = 0;
00200 
00204   virtual void SetRigidBody (iRigidBody *r_body, csReversibleTransform & offset_transform) = 0;
00205 
00209   virtual iRigidBody *GetRigidBody () = 0;
00210 
00214   virtual int GetChildrenCount () = 0;
00215 
00219   virtual iGenMeshSkeletonBone *GetChild (int i) = 0;
00220 
00224   virtual iGenMeshSkeletonBone *FindChild (const char *name) = 0;
00225 
00229   virtual void SetUpdateCallback (iGenMeshSkeletonBoneUpdateCallback *callback) = 0;
00230 
00234   virtual iGenMeshSkeletonBoneUpdateCallback *GetUpdateCallback () = 0;
00235 };
00236 
00237 SCF_VERSION  (iGenMeshSkeletonBoneUpdateCallback, 0, 0, 1);
00238 
00239 struct iGenMeshSkeletonBoneUpdateCallback : public iBase
00240 {
00241         virtual void UpdateTransform(iGenMeshSkeletonBone *bone, const csReversibleTransform & transform) = 0;
00242 };
00243 
00244 SCF_VERSION  (iGenMeshSkeletonScript, 0, 0, 1);
00245 
00246 struct iGenMeshSkeletonScript : public iBase
00247 {
00251   virtual const char *GetName () = 0;
00252 
00256   virtual size_t GetTime () = 0;
00257 
00261   virtual void SetTime (size_t time) = 0;
00262 
00297   virtual void SetFactor (float factor) = 0;
00298 
00302   virtual float GetFactor () = 0;
00303 };
00304 
00305 #endif // __CS_IMESH_GMESHSKEL_H__

Generated for Crystal Space by doxygen 1.4.4