00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __IMESH_SPRITE3D_H__
00020 #define __IMESH_SPRITE3D_H__
00021
00022 #include "csutil/scf.h"
00023 #include "csutil/garray.h"
00024 #include "csutil/cscolor.h"
00025 #include "ivideo/graph3d.h"
00026
00027 class csColor;
00028 struct iMaterialWrapper;
00029 struct iSkeleton;
00030 struct iSkeletonState;
00031 struct iMeshObject;
00032 struct iMeshObjectFactory;
00033 struct iRenderView;
00034 struct iRenderView;
00035
00039 #define CS_SPR_LIGHTING_HQ 0
00040 #define CS_SPR_LIGHTING_LQ 1
00041 #define CS_SPR_LIGHTING_FAST 2
00042 #define CS_SPR_LIGHTING_RANDOM 3
00043
00048 #define CS_SPR_LIGHT_GLOBAL 0
00049
00054 #define CS_SPR_LIGHT_TEMPLATE 1
00055
00060 #define CS_SPR_LIGHT_LOCAL 2
00061
00066 #define CS_SPR_LOD_GLOBAL 0
00067
00071 #define CS_SPR_LOD_TEMPLATE 1
00072
00076 #define CS_SPR_LOD_LOCAL 2
00077
00078
00079
00080
00081 SCF_VERSION (iSpriteFrame, 0, 0, 2);
00082
00086 struct iSpriteFrame : public iBase
00087 {
00089 virtual void SetName (char const*) = 0;
00091 virtual char const* GetName () const = 0;
00093 virtual int GetAnmIndex () const = 0;
00095 virtual int GetTexIndex () const = 0;
00096 };
00097
00098 SCF_VERSION (iSpriteAction, 0, 0, 1);
00099
00103 struct iSpriteAction : public iBase
00104 {
00106 virtual void SetName (char const*) = 0;
00108 virtual char const* GetName () const = 0;
00110 virtual int GetFrameCount () = 0;
00112 virtual iSpriteFrame* GetFrame (int f) = 0;
00114 virtual iSpriteFrame* GetNextFrame (int f) = 0;
00116 virtual int GetFrameDelay (int f) = 0;
00118 virtual void AddFrame (iSpriteFrame* frame, int delay) = 0;
00119 };
00120
00121 SCF_VERSION (iSprite3DFactoryState, 0, 0, 3);
00122
00126 struct iSprite3DFactoryState : public iBase
00127 {
00129 virtual void SetMaterialWrapper (iMaterialWrapper* material) = 0;
00131 virtual iMaterialWrapper* GetMaterialWrapper () const = 0;
00132
00141 virtual void AddVertices (int num) = 0;
00143 virtual int GetVertexCount () const = 0;
00144
00146 virtual const csVector3& GetVertex (int frame, int vertex) const = 0;
00148 virtual void SetVertex (int frame, int vertex, const csVector3 &Value) = 0;
00150 virtual csVector3* GetVertices (int frame) const = 0;
00155 virtual void SetVertices (csVector3 const* vert, int frame) = 0;
00156
00158 virtual const csVector2& GetTexel (int frame, int vertex) const = 0;
00160 virtual void SetTexel (int frame, int vertex, const csVector2 &Value) = 0;
00162 virtual csVector2* GetTexels (int frame) const = 0;
00167 virtual void SetTexels (csVector2 const* tex, int frame) = 0;
00168
00170 virtual const csVector3& GetNormal (int frame, int vertex) const = 0;
00172 virtual void SetNormal (int frame, int vertex, const csVector3 &Value) = 0;
00174 virtual csVector3* GetNormals (int frame) const = 0;
00179 virtual void SetNormals (csVector3 const* norms, int frame) = 0;
00180
00185 virtual void AddTriangle (int a, int b, int c) = 0;
00187 virtual csTriangle GetTriangle (int x) const = 0;
00189 virtual csTriangle* GetTriangles () const = 0;
00191 virtual int GetTriangleCount () const = 0;
00193 virtual void SetTriangleCount (int count) = 0;
00195 virtual void SetTriangles( csTriangle const* trigs, int count) = 0;
00196
00198 virtual iSpriteFrame* AddFrame () = 0;
00200 virtual iSpriteFrame* FindFrame (const char* name) const = 0;
00202 virtual int GetFrameCount () const = 0;
00204 virtual iSpriteFrame* GetFrame (int f) const = 0;
00205
00207 virtual iSpriteAction* AddAction () = 0;
00209 virtual iSpriteAction* FindAction (const char* name) const = 0;
00211 virtual iSpriteAction* GetFirstAction () const = 0;
00213 virtual int GetActionCount () const = 0;
00215 virtual iSpriteAction* GetAction (int No) const = 0;
00216
00218 virtual void EnableSkeletalAnimation () = 0;
00224 virtual iSkeleton* GetSkeleton () const = 0;
00225
00227 virtual void EnableTweening (bool en) = 0;
00229 virtual bool IsTweeningEnabled () const = 0;
00231 virtual void SetLightingQuality (int qual) = 0;
00233 virtual int GetLightingQuality () const = 0;
00244 virtual void SetLightingQualityConfig (int qual) = 0;
00246 virtual int GetLightingQualityConfig () const = 0;
00247
00258 virtual void SetLodLevelConfig (int config_flag) = 0;
00259
00261 virtual int GetLodLevelConfig () const = 0;
00262
00268 virtual void MergeNormals (int base, int frame) = 0;
00269
00275 virtual void MergeNormals (int base) = 0;
00276
00282 virtual void MergeNormals () = 0;
00283
00285 virtual void SetMixMode (UInt mode) = 0;
00287 virtual UInt GetMixMode () const = 0;
00288 };
00289
00290 SCF_VERSION (iSprite3DState, 0, 0, 5);
00291
00295 struct iSprite3DState : public iBase
00296 {
00298 virtual void SetMaterialWrapper (iMaterialWrapper* material) = 0;
00300 virtual iMaterialWrapper* GetMaterialWrapper () const = 0;
00302 virtual void SetMixMode (UInt mode) = 0;
00304 virtual UInt GetMixMode () const = 0;
00306 virtual void SetLighting (bool l) = 0;
00308 virtual bool IsLighting () const = 0;
00309
00310
00311
00317 virtual iSkeletonState* GetSkeletonState () const = 0;
00318
00320 virtual void SetFrame (int f) = 0;
00321
00323 virtual int GetCurFrame () const = 0;
00324
00326 virtual int GetFrameCount () const = 0;
00327
00329 virtual bool SetAction (const char * name) = 0;
00330
00332 virtual iSpriteAction* GetCurAction () const = 0;
00333
00335 virtual void EnableTweening (bool en) = 0;
00337 virtual bool IsTweeningEnabled () const = 0;
00338
00340 virtual void UnsetTexture () = 0;
00341
00347 virtual int GetLightingQuality () = 0;
00348
00353 virtual void SetLocalLightingQuality (int lighting_quality) = 0;
00354
00364 virtual void SetLightingQualityConfig (int config_flag) = 0;
00365
00369 virtual int GetLightingQualityConfig () const = 0;
00370
00380 virtual void SetLodLevelConfig (int config_flag) = 0;
00381
00385 virtual int GetLodLevelConfig () const = 0;
00386
00390 virtual bool IsLodEnabled () const = 0;
00391
00397 virtual void SetBaseColor (const csColor& col) = 0;
00398
00402 virtual void GetBaseColor (csColor& col) const = 0;
00403 };
00404
00405 #endif
00406