Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages
spritecal3d.h
00001 /* 00002 Copyright (C) 2003 by Keith Fulton 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_SPRITECAL3D_H__ 00020 #define __CS_IMESH_SPRITECAL3D_H__ 00021 00022 #include "csutil/scf.h" 00023 #include "csutil/dirtyaccessarray.h" 00024 #include "csutil/cscolor.h" 00025 #include "ivideo/graph3d.h" 00026 00027 class csColor; 00028 class csRandomGen; 00029 class csString; 00030 struct iMaterialWrapper; 00031 struct iMeshObject; 00032 struct iMeshWrapper; 00033 struct iMeshObjectFactory; 00034 struct iRenderView; 00035 struct iRenderView; 00036 struct iVFS; 00037 00038 class CalModel; 00039 class CalCoreModel; 00040 00041 SCF_VERSION (iSpriteCal3DSocket, 0, 0, 2); 00042 00046 struct iSpriteCal3DSocket : public iBase 00047 { 00049 virtual void SetName (char const*) = 0; 00051 virtual char const* GetName () const = 0; 00052 00054 virtual void SetMeshWrapper (iMeshWrapper* mesh) = 0; 00056 virtual iMeshWrapper* GetMeshWrapper () const = 0; 00057 00059 virtual void SetTriangleIndex (int tri_index) = 0; 00061 virtual int GetTriangleIndex () const = 0; 00062 00064 virtual void SetSubmeshIndex (int subm_index) = 0; 00066 virtual int GetSubmeshIndex () const = 0; 00067 00069 virtual void SetMeshIndex (int m_index) = 0; 00071 virtual int GetMeshIndex () const = 0; 00072 00074 virtual void SetTransform (const csReversibleTransform & trans) = 0; 00076 virtual csReversibleTransform GetTransform () const = 0; 00077 00082 virtual size_t GetSecondaryCount () const = 0; 00084 virtual iMeshWrapper * GetSecondaryMesh (size_t index) = 0; 00086 virtual csReversibleTransform GetSecondaryTransform (size_t index) = 0; 00088 virtual void SetSecondaryTransform (size_t index, csReversibleTransform) = 0; 00090 virtual size_t AttachSecondary (iMeshWrapper*, csReversibleTransform) = 0; 00092 virtual void DetachSecondary (const csString & mesh_name) = 0; 00094 virtual void DetachSecondary (size_t index) = 0; 00096 virtual size_t FindSecondary (const csString & mesh_name) = 0; 00097 }; 00098 00099 00100 SCF_VERSION (iSpriteCal3DFactoryState, 0, 0, 3); 00101 struct CalAnimationCallback; 00102 00106 struct iSpriteCal3DFactoryState : public iBase 00107 { 00109 virtual bool Create(const char *name) = 0; 00110 00116 virtual void ReportLastError () = 0; 00117 00122 virtual void SetLoadFlags(int flags) = 0; 00123 00128 virtual void SetBasePath(const char *path) = 0; 00129 00133 virtual bool LoadCoreSkeleton(iVFS *vfs,const char *filename) = 0; 00134 00139 virtual void RescaleFactory(float factor) = 0; 00140 00172 virtual int LoadCoreAnimation( 00173 iVFS *vfs, 00174 const char *filename, 00175 const char *name, 00176 int type, 00177 float base_velocity, 00178 float min_velocity, 00179 float max_velocity, 00180 int min_interval, 00181 int max_interval, 00182 int idle_pct, 00183 bool lock) = 0; 00184 00196 virtual int LoadCoreMesh(iVFS *vfs,const char *filename, 00197 const char *name,bool attach,iMaterialWrapper *defmat) = 0; 00198 00210 virtual int LoadCoreMorphTarget(iVFS *vfs, int mesh_index, 00211 const char *filename, const char *name) = 0; 00212 00220 virtual int AddMorphAnimation(const char *name) = 0; 00221 00231 virtual bool AddMorphTarget(int morphanimation_index, 00232 const char *mesh_name, 00233 const char *morphtarget_name) = 0; 00234 00239 virtual bool AddCoreMaterial(iMaterialWrapper *mat) = 0; 00240 00242 virtual void CalculateAllBoneBoundingBoxes() = 0; 00243 00248 virtual void BindMaterials() = 0; 00249 00254 virtual int GetMeshCount() = 0; 00255 00259 virtual int GetMorphAnimationCount() = 0; 00260 00269 virtual int GetMorphTargetCount(int mesh_id) = 0; 00270 00274 virtual const char *GetMeshName(int idx) = 0; 00275 00279 virtual int FindMeshName(const char *meshName) = 0; 00280 00284 virtual const char* GetDefaultMaterial( const char* meshName ) = 0; 00285 00286 00291 virtual const char *GetMorphAnimationName(int idx) = 0; 00292 00297 virtual int FindMorphAnimationName(const char *meshName) = 0; 00298 00302 virtual bool IsMeshDefault(int idx) = 0; 00303 00305 virtual iSpriteCal3DSocket* AddSocket () = 0; 00307 virtual iSpriteCal3DSocket* FindSocket (const char * name) const = 0; 00309 virtual iSpriteCal3DSocket* FindSocket (iMeshWrapper *mesh) const = 0; 00311 virtual int GetSocketCount () const = 0; 00313 virtual iSpriteCal3DSocket* GetSocket (int f) const = 0; 00314 00320 virtual CalCoreModel *GetCal3DCoreModel() = 0; 00321 00326 virtual bool RegisterAnimCallback(const char *anim, CalAnimationCallback *callback,float min_interval) = 0; 00327 00332 virtual bool RemoveAnimCallback(const char *anim, CalAnimationCallback *callback) = 0; 00333 00334 }; 00335 00336 SCF_VERSION (iAnimTimeUpdateHandler, 0, 0, 1); 00337 00346 struct iAnimTimeUpdateHandler : public iBase 00347 { 00354 virtual void UpdatePosition (float delta, CalModel*) = 0; 00355 }; 00356 00357 SCF_VERSION (iSpriteCal3DState, 0, 0, 2); 00358 00363 struct iSpriteCal3DState : public iBase 00364 { 00366 enum 00367 { 00368 C3D_ANIM_TYPE_NONE, 00369 C3D_ANIM_TYPE_IDLE, 00370 C3D_ANIM_TYPE_TRAVEL, 00371 C3D_ANIM_TYPE_CYCLE, 00372 C3D_ANIM_TYPE_STYLE_CYCLE, 00373 C3D_ANIM_TYPE_ACTION 00374 }; 00375 00377 virtual int GetAnimCount() = 0; 00378 00383 virtual const char *GetAnimName(int idx) = 0; 00384 00386 virtual int GetAnimType(int idx) = 0; 00387 00389 virtual int FindAnim(const char* name) = 0; 00390 00392 virtual void ClearAllAnims() = 0; 00393 00398 virtual bool SetAnimCycle(const char *name, float weight) = 0; 00399 00404 virtual bool SetAnimCycle(int idx, float weight) = 0; 00405 00414 virtual bool AddAnimCycle(const char *name, float weight, float delay) = 0; 00415 00419 virtual bool AddAnimCycle(int idx, float weight, float delay) = 0; 00420 00425 virtual bool ClearAnimCycle (int idx, float delay) = 0; 00426 00432 virtual bool ClearAnimCycle (const char *name, float delay) = 0; 00433 00439 virtual int GetActiveAnimCount() = 0; 00440 00447 virtual int GetActiveAnims(char *buffer,int max_length) = 0; 00448 00453 virtual void SetActiveAnims(const char *buffer,int anim_count) = 0; 00454 00461 virtual bool SetAnimAction(const char *name, float delayIn, 00462 float delayOut) = 0; 00463 00470 virtual bool SetAnimAction(int idx, float delayIn, 00471 float delayOut) = 0; 00472 00481 virtual bool SetVelocity(float vel,csRandomGen *rng=0) = 0; 00482 00486 virtual void SetDefaultIdleAnim(const char *name) = 0; 00487 00492 virtual void SetLOD(float lod) = 0; 00493 00498 virtual bool AttachCoreMesh(const char *meshname) = 0; 00499 00507 virtual bool AttachCoreMesh(int mesh_id,int iMatWrap) = 0; 00508 00513 virtual bool DetachCoreMesh(const char *meshname) = 0; 00514 00521 virtual bool DetachCoreMesh(int mesh_id) = 0; 00522 00532 virtual bool BlendMorphTarget(int morph_animation_id, float weight, 00533 float delay) = 0; 00534 00543 virtual bool ClearMorphTarget(int morph_animation_id, float delay) = 0; 00544 00546 virtual iSpriteCal3DSocket* FindSocket (iMeshWrapper *mesh) const = 0; 00547 00549 virtual iSpriteCal3DSocket* FindSocket (const char* name) const = 0; 00550 00552 virtual bool SetMaterial(const char *mesh_name,iMaterialWrapper *mat) = 0; 00553 00555 virtual void SetTimeFactor(float timeFactor) = 0; 00556 00558 virtual float GetTimeFactor() = 0; 00559 00561 virtual float GetAnimationTime() = 0; 00562 00564 virtual float GetAnimationDuration() = 0; 00565 00567 virtual void SetAnimationTime(float animationTime) = 0; 00568 00574 virtual CalModel *GetCal3DModel() = 0; 00575 00577 virtual void SetUserData(void *data) = 0; 00578 00586 virtual void SetAnimTimeUpdateHandler(iAnimTimeUpdateHandler*) = 0; 00587 }; 00588 00589 #endif// __CS_IMESH_SPRITECAL3D_H__
Generated for Crystal Space by doxygen 1.3.9.1