CrystalSpace

Public API Reference

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