imesh/gmeshskel.h
Go to the documentation of this file.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 00026 #include "csutil/scf.h" 00027 00028 #include "imesh/genmesh.h" 00029 00033 struct iRigidBody; 00034 struct iGenMeshSkeletonBone; 00035 struct iGenMeshSkeletonScript; 00036 struct iGenMeshSkeletonBoneUpdateCallback; 00037 struct iGenMeshSkeletonControlFactory; 00038 00039 class csReversibleTransform; 00040 class csVector2; 00041 class csVector3; 00042 00043 enum csBoneTransformMode 00044 { 00045 BM_SCRIPT = 0, 00046 BM_PHYSICS, 00047 BM_NONE 00048 }; 00049 00050 enum csAULevel 00051 { 00052 AUL_BONES = 0, 00053 AUL_VERTICES 00054 }; 00055 00056 SCF_VERSION (iGenMeshSkeletonControlState, 0, 0, 1); 00057 00063 struct iGenMeshSkeletonControlState : public iBase 00064 { 00068 virtual int GetBonesCount () = 0; 00069 00073 virtual iGenMeshSkeletonBone *GetBone (int i) = 0; 00074 00078 virtual iGenMeshSkeletonBone *FindBone (const char *name) = 0; 00079 00085 virtual iGenMeshSkeletonScript* Execute (const char *scriptname) = 0; 00086 00090 virtual size_t GetScriptsCount () = 0; 00091 00095 virtual iGenMeshSkeletonScript* GetScript (size_t i) = 0; 00096 00100 virtual iGenMeshSkeletonScript* FindScript (const char *scriptname) = 0; 00101 00105 virtual void StopAll () = 0; 00106 00110 virtual void Stop (const char* scriptname) = 0; 00111 00115 virtual void Stop (iGenMeshSkeletonScript *script) = 0; 00116 00120 virtual iGenMeshSkeletonControlFactory *GetFactory() = 0; 00121 00125 virtual csVector3 *GetAnimatedVertices() = 0; 00126 00130 virtual int GetAnimatedVerticesCount() = 0; 00131 00135 virtual csVector3 *GetAnimatedFaceNormals() = 0; 00136 00140 virtual int GetAnimatedFaceNormalsCount() = 0; 00141 00145 virtual csVector3 *GetAnimatedVertNormals() = 0; 00146 00150 virtual int GetAnimatedVertNormalsCount() = 0; 00151 }; 00152 00153 SCF_VERSION (iGenMeshSkeletonControlFactory, 0, 0, 1); 00154 00158 struct iGenMeshSkeletonControlFactory: public iGenMeshAnimationControlFactory 00159 { 00163 virtual const char* LoadScriptFile(const char *filename) =0; 00164 00168 virtual void DeleteScript(const char *script_name) = 0; 00169 00173 virtual void DeleteAllScripts() = 0; 00174 }; 00175 00176 SCF_VERSION (iGenMeshSkeletonBone, 0, 0, 1); 00177 00178 struct iGenMeshSkeletonBone : public iBase 00179 { 00183 virtual const char *GetName () const = 0; 00184 00188 virtual void SetName (const char *name) = 0; 00189 00193 virtual csReversibleTransform &GetTransform () = 0; 00194 00198 virtual void SetTransform (const csReversibleTransform &transform) = 0; 00199 00203 virtual csReversibleTransform &GetFullTransform () = 0; 00204 00208 virtual iGenMeshSkeletonBone *GetParent () = 0; 00209 00214 virtual void GetSkinBox (csBox3 &box, csVector3 ¢er) = 0; 00215 00223 virtual void SetMode (csBoneTransformMode mode) = 0; 00224 00228 virtual csBoneTransformMode GetMode () = 0; 00229 00233 virtual void SetRigidBody (iRigidBody *r_body, 00234 csReversibleTransform & offset_transform) = 0; 00235 00239 virtual iRigidBody *GetRigidBody () = 0; 00240 00244 virtual int GetChildrenCount () = 0; 00245 00249 virtual iGenMeshSkeletonBone *GetChild (int i) = 0; 00250 00254 virtual iGenMeshSkeletonBone *FindChild (const char *name) = 0; 00255 00259 virtual void SetUpdateCallback ( 00260 iGenMeshSkeletonBoneUpdateCallback *callback) = 0; 00261 00265 virtual iGenMeshSkeletonBoneUpdateCallback *GetUpdateCallback () = 0; 00266 }; 00267 00268 SCF_VERSION (iGenMeshSkeletonBoneUpdateCallback, 0, 0, 1); 00269 00273 struct iGenMeshSkeletonBoneUpdateCallback : public iBase 00274 { 00275 virtual void UpdateTransform(iGenMeshSkeletonBone *bone, 00276 const csReversibleTransform & transform) = 0; 00277 }; 00278 00279 SCF_VERSION (iGenMeshSkeletonScript, 0, 0, 1); 00280 00284 struct iGenMeshSkeletonScript : public iBase 00285 { 00289 virtual const char *GetName () = 0; 00290 00294 virtual size_t GetTime () = 0; 00295 00299 virtual void SetTime (size_t time) = 0; 00300 00340 virtual float GetSpeed () = 0; 00341 00345 virtual void SetSpeed (float speed) = 0; 00346 00350 virtual void SetFactor (float factor) = 0; 00351 00355 virtual float GetFactor () = 0; 00356 }; 00357 00360 #endif // __CS_IMESH_GMESHSKEL_H__
Generated for Crystal Space by doxygen 1.4.6