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

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 
00024 struct iMaterialWrapper;
00025 struct iMeshObject;
00026 struct iMeshWrapper;
00027 struct iMeshObjectFactory;
00028 struct iRenderView;
00029 struct iShaderVariableContext;
00030 struct iVFS;
00031 
00032 class csColor;
00033 class csRandomGen;
00034 class csReversibleTransform;
00035 class csString;
00036 
00037 class CalModel;
00038 class CalCoreModel;
00039 
00040 SCF_VERSION (iSpriteCal3DSocket, 0, 0, 2);
00041 
00045 struct iSpriteCal3DSocket : public iBase
00046 {
00048   virtual void SetName (char const*) = 0;
00050   virtual char const* GetName () const = 0;
00051 
00053   virtual void SetMeshWrapper (iMeshWrapper* mesh) = 0;
00055   virtual iMeshWrapper* GetMeshWrapper () const = 0;
00056 
00058   virtual void SetTriangleIndex (int tri_index) = 0;
00060   virtual int GetTriangleIndex () const = 0;
00061 
00063   virtual void SetSubmeshIndex (int subm_index) = 0;
00065   virtual int GetSubmeshIndex () const = 0;
00066 
00068   virtual void SetMeshIndex (int m_index) = 0;
00070   virtual int GetMeshIndex () const = 0;
00071 
00073   virtual void SetTransform (const csReversibleTransform & trans) = 0;
00075   virtual csReversibleTransform GetTransform () const = 0;
00076 
00081   virtual size_t GetSecondaryCount () const = 0;
00083   virtual iMeshWrapper * GetSecondaryMesh (size_t index) = 0;
00085   virtual csReversibleTransform GetSecondaryTransform (size_t index) = 0;
00087   virtual void SetSecondaryTransform (size_t index, csReversibleTransform) = 0;
00089   virtual size_t AttachSecondary (iMeshWrapper*, csReversibleTransform) = 0;
00091   virtual void DetachSecondary (const char* mesh_name) = 0;
00093   virtual void DetachSecondary (size_t index) = 0;
00095   virtual size_t FindSecondary (const char* mesh_name) = 0;
00096 };
00097 
00098 
00099 SCF_VERSION (iSpriteCal3DFactoryState, 0, 0, 3);
00100 struct CalAnimationCallback;
00101 
00105 struct iSpriteCal3DFactoryState : public iBase
00106 {
00108   virtual bool Create(const char *name) = 0;
00109 
00115   virtual void ReportLastError () = 0;
00116 
00121   virtual void SetLoadFlags(int flags) = 0;
00122 
00127   virtual void SetBasePath(const char *path) = 0;
00128 
00132   virtual bool LoadCoreSkeleton(iVFS *vfs,const char *filename) = 0;
00133 
00138   virtual void RescaleFactory(float factor) = 0;
00139 
00171   virtual int LoadCoreAnimation(
00172         iVFS *vfs,
00173         const char *filename,
00174         const char *name,
00175         int type,
00176         float base_velocity,
00177         float min_velocity,
00178         float max_velocity,
00179         int min_interval,
00180         int max_interval,
00181         int idle_pct,
00182         bool lock) = 0;
00183 
00195   virtual int LoadCoreMesh(iVFS *vfs,const char *filename,
00196         const char *name,bool attach,iMaterialWrapper *defmat) = 0;
00197 
00209   virtual int LoadCoreMorphTarget(iVFS *vfs, int mesh_index,
00210         const char *filename, const char *name) = 0;
00211 
00219   virtual int AddMorphAnimation(const char *name) = 0;
00220   
00230   virtual bool AddMorphTarget(int morphanimation_index,
00231                               const char *mesh_name,
00232                               const char *morphtarget_name) = 0;
00233   
00238   virtual bool AddCoreMaterial(iMaterialWrapper *mat) = 0;
00239 
00241   virtual void CalculateAllBoneBoundingBoxes() = 0;
00242 
00247   virtual void BindMaterials() = 0;
00248 
00253   virtual int  GetMeshCount() = 0;
00254 
00258   virtual int GetMorphAnimationCount() = 0;
00259   
00268   virtual int GetMorphTargetCount(int mesh_id) = 0;
00269 
00273   virtual const char *GetMeshName(int idx) = 0;
00274 
00278   virtual int  FindMeshName(const char *meshName) = 0;
00279 
00283   virtual const char* GetDefaultMaterial( const char* meshName ) = 0;
00284   
00285   
00290   virtual const char *GetMorphAnimationName(int idx) = 0;
00291 
00296   virtual int  FindMorphAnimationName(const char *meshName) = 0;
00297 
00301   virtual bool IsMeshDefault(int idx) = 0;
00302 
00304   virtual iSpriteCal3DSocket* AddSocket () = 0;
00306   virtual iSpriteCal3DSocket* FindSocket (const char * name) const = 0;
00308   virtual iSpriteCal3DSocket* FindSocket (iMeshWrapper *mesh) const = 0;
00310   virtual int GetSocketCount () const = 0;
00312   virtual iSpriteCal3DSocket* GetSocket (int f) const = 0;
00313 
00319   virtual CalCoreModel *GetCal3DCoreModel() = 0;
00320 
00325   virtual bool RegisterAnimCallback(const char *anim, CalAnimationCallback *callback,float min_interval) = 0;
00326 
00331   virtual bool RemoveAnimCallback(const char *anim, CalAnimationCallback *callback) = 0;
00332 
00333 };
00334 
00335 SCF_VERSION (iAnimTimeUpdateHandler, 0, 0, 1); 
00336 
00345 struct iAnimTimeUpdateHandler : public iBase
00346 {
00353   virtual void UpdatePosition (float delta, CalModel*) = 0;
00354 };
00355 
00356 struct csSpriteCal3DActiveAnim
00357 {
00358   int index;
00359   float weight;
00360 };
00361 
00362 SCF_VERSION (iSpriteCal3DState, 1, 0, 0);
00363 
00368 struct iSpriteCal3DState : public iBase
00369 {
00373 
00374   enum
00375   {
00376     C3D_ANIM_TYPE_NONE,
00377     C3D_ANIM_TYPE_IDLE,
00378     C3D_ANIM_TYPE_TRAVEL,
00379     C3D_ANIM_TYPE_CYCLE,
00380     C3D_ANIM_TYPE_STYLE_CYCLE,
00381     C3D_ANIM_TYPE_ACTION
00382   };
00383 
00385   virtual int GetAnimCount() = 0;
00386 
00391   virtual const char *GetAnimName(int idx) = 0;
00392 
00394   virtual int  GetAnimType(int idx) = 0;
00395 
00397   virtual int FindAnim(const char* name) = 0;
00398 
00400   virtual void ClearAllAnims() = 0;
00401 
00406   virtual bool SetAnimCycle(const char *name, float weight) = 0;
00407 
00412   virtual bool SetAnimCycle(int idx, float weight) = 0;
00413 
00422   virtual bool AddAnimCycle(const char *name, float weight, float delay) = 0;
00423 
00427   virtual bool AddAnimCycle(int idx, float weight, float delay) = 0;
00428 
00433   virtual bool ClearAnimCycle (int idx, float delay) = 0;
00434 
00440   virtual bool ClearAnimCycle (const char *name, float delay) = 0;
00441 
00446   virtual size_t GetActiveAnimCount() = 0;
00447 
00457   virtual bool GetActiveAnims(csSpriteCal3DActiveAnim* buffer, 
00458     size_t max_length) = 0;
00459 
00464   virtual void SetActiveAnims(const csSpriteCal3DActiveAnim* buffer, size_t anim_count) = 0;
00465 
00472   virtual bool SetAnimAction(const char *name, float delayIn,
00473                              float delayOut) = 0;
00474 
00481   virtual bool SetAnimAction(int idx, float delayIn,
00482                              float delayOut) = 0;
00483 
00492   virtual bool SetVelocity(float vel,csRandomGen *rng=0) = 0;
00493 
00497   virtual void SetDefaultIdleAnim(const char *name) = 0;
00506   virtual void SetLOD(float lod) = 0;
00515   virtual bool AttachCoreMesh(const char *meshname) = 0;
00516 
00523   virtual bool DetachCoreMesh(const char *meshname) = 0;
00524 
00533   virtual bool AttachCoreMesh(int mesh_id, iMaterialWrapper* iMatWrap = 0) = 0;
00540   virtual bool DetachCoreMesh(int mesh_id) = 0;
00554   virtual bool BlendMorphTarget(int morph_animation_id, float weight,
00555         float delay) = 0;
00556 
00565   virtual bool ClearMorphTarget(int morph_animation_id, float delay) = 0;
00570 
00571   virtual iSpriteCal3DSocket* FindSocket (iMeshWrapper *mesh) const = 0;
00572 
00574   virtual iSpriteCal3DSocket* FindSocket (const char* name) const = 0;
00577 
00578   virtual bool SetMaterial(const char *mesh_name,iMaterialWrapper *mat) = 0;
00579 
00582 
00583   virtual void SetTimeFactor(float timeFactor) = 0;
00584 
00586   virtual float GetTimeFactor() = 0;
00587 
00589   virtual float GetAnimationTime() = 0;
00590 
00592   virtual float GetAnimationDuration() = 0;
00593 
00595   virtual void SetAnimationTime(float animationTime) = 0;
00596 
00604   virtual void SetAnimTimeUpdateHandler(iAnimTimeUpdateHandler*) = 0;
00607 
00608   virtual void SetUserData(void *data) = 0;
00609   
00616   virtual iShaderVariableContext* GetCoreMeshShaderVarContext (
00617     const char* meshName) = 0;
00618 
00626 
00627   virtual CalModel *GetCal3DModel() = 0;
00629 };
00630 
00631 #endif// __CS_IMESH_SPRITECAL3D_H__

Generated for Crystal Space by doxygen 1.4.4