00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_IMESH_SPRITE3D_H__
00020 #define __CS_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 iMeshWrapper;
00033 struct iMeshObjectFactory;
00034 struct iRenderView;
00035 struct iRenderView;
00036
00040 #define CS_SPR_LIGHTING_HQ 0
00041 #define CS_SPR_LIGHTING_LQ 1
00042 #define CS_SPR_LIGHTING_FAST 2
00043 #define CS_SPR_LIGHTING_RANDOM 3
00044
00049 #define CS_SPR_LIGHT_GLOBAL 0
00050
00055 #define CS_SPR_LIGHT_TEMPLATE 1
00056
00061 #define CS_SPR_LIGHT_LOCAL 2
00062
00067 #define CS_SPR_LOD_GLOBAL 0
00068
00072 #define CS_SPR_LOD_TEMPLATE 1
00073
00077 #define CS_SPR_LOD_LOCAL 2
00078
00079
00080
00081
00082 SCF_VERSION (iSpriteFrame, 0, 0, 2);
00083
00087 struct iSpriteFrame : public iBase
00088 {
00090 virtual void SetName (char const*) = 0;
00092 virtual char const* GetName () const = 0;
00094 virtual int GetAnmIndex () const = 0;
00096 virtual int GetTexIndex () const = 0;
00097 };
00098
00099 SCF_VERSION (iSpriteAction, 0, 0, 1);
00100
00104 struct iSpriteAction : public iBase
00105 {
00107 virtual void SetName (char const*) = 0;
00109 virtual char const* GetName () const = 0;
00111 virtual int GetFrameCount () = 0;
00113 virtual iSpriteFrame* GetFrame (int f) = 0;
00115 virtual iSpriteFrame* GetNextFrame (int f) = 0;
00117 virtual int GetFrameDelay (int f) = 0;
00119 virtual float GetFrameDisplacement (int f) = 0;
00121 virtual void AddFrame (iSpriteFrame* frame, int delay, float displacement) = 0;
00122 };
00123
00124 SCF_VERSION (iSpriteSocket, 0, 0, 1);
00125
00130 struct iSpriteSocket : public iBase
00131 {
00133 virtual void SetName (char const*) = 0;
00135 virtual char const* GetName () const = 0;
00136
00138 virtual void SetMeshWrapper (iMeshWrapper* mesh) = 0;
00140 virtual iMeshWrapper* GetMeshWrapper () const = 0;
00141
00143 virtual void SetTriangleIndex (int tri_index) = 0;
00145 virtual int GetTriangleIndex () const = 0;
00146 };
00147
00148 SCF_VERSION (iSprite3DFactoryState, 0, 0, 3);
00149
00153 struct iSprite3DFactoryState : public iBase
00154 {
00156 virtual void SetMaterialWrapper (iMaterialWrapper* material) = 0;
00158 virtual iMaterialWrapper* GetMaterialWrapper () const = 0;
00159
00168 virtual void AddVertices (int num) = 0;
00170 virtual int GetVertexCount () const = 0;
00171
00173 virtual const csVector3& GetVertex (int frame, int vertex) const = 0;
00175 virtual void SetVertex (int frame, int vertex, const csVector3 &Value) = 0;
00177 virtual csVector3* GetVertices (int frame) const = 0;
00182 virtual void SetVertices (csVector3 const* vert, int frame) = 0;
00183
00185 virtual const csVector2& GetTexel (int frame, int vertex) const = 0;
00187 virtual void SetTexel (int frame, int vertex, const csVector2 &Value) = 0;
00189 virtual csVector2* GetTexels (int frame) const = 0;
00194 virtual void SetTexels (csVector2 const* tex, int frame) = 0;
00195
00197 virtual const csVector3& GetNormal (int frame, int vertex) const = 0;
00199 virtual void SetNormal (int frame, int vertex, const csVector3 &Value) = 0;
00201 virtual csVector3* GetNormals (int frame) const = 0;
00206 virtual void SetNormals (csVector3 const* norms, int frame) = 0;
00207
00212 virtual void AddTriangle (int a, int b, int c) = 0;
00214 virtual csTriangle GetTriangle (int x) const = 0;
00216 virtual csTriangle* GetTriangles () const = 0;
00218 virtual int GetTriangleCount () const = 0;
00220 virtual void SetTriangleCount (int count) = 0;
00222 virtual void SetTriangles( csTriangle const* trigs, int count) = 0;
00223
00225 virtual iSpriteFrame* AddFrame () = 0;
00227 virtual iSpriteFrame* FindFrame (const char* name) const = 0;
00229 virtual int GetFrameCount () const = 0;
00231 virtual iSpriteFrame* GetFrame (int f) const = 0;
00232
00234 virtual iSpriteAction* AddAction () = 0;
00236 virtual iSpriteAction* FindAction (const char* name) const = 0;
00238 virtual iSpriteAction* GetFirstAction () const = 0;
00240 virtual int GetActionCount () const = 0;
00242 virtual iSpriteAction* GetAction (int No) const = 0;
00243
00245 virtual iSpriteSocket* AddSocket () = 0;
00247 virtual iSpriteSocket* FindSocket (const char * name) const = 0;
00249 virtual iSpriteSocket* FindSocket (iMeshWrapper *mesh) const = 0;
00251 virtual int GetSocketCount () const = 0;
00253 virtual iSpriteSocket* GetSocket (int f) const = 0;
00254
00256 virtual void EnableSkeletalAnimation () = 0;
00262 virtual iSkeleton* GetSkeleton () const = 0;
00263
00265 virtual void EnableTweening (bool en) = 0;
00267 virtual bool IsTweeningEnabled () const = 0;
00269 virtual void SetLightingQuality (int qual) = 0;
00271 virtual int GetLightingQuality () const = 0;
00282 virtual void SetLightingQualityConfig (int qual) = 0;
00284 virtual int GetLightingQualityConfig () const = 0;
00285
00296 virtual void SetLodLevelConfig (int config_flag) = 0;
00297
00299 virtual int GetLodLevelConfig () const = 0;
00300
00306 virtual void MergeNormals (int base, int frame) = 0;
00307
00313 virtual void MergeNormals (int base) = 0;
00314
00320 virtual void MergeNormals () = 0;
00321
00323 virtual void SetMixMode (uint mode) = 0;
00325 virtual uint GetMixMode () const = 0;
00326 };
00327
00328 SCF_VERSION (iSprite3DState, 0, 0, 6);
00329
00333 struct iSprite3DState : public iBase
00334 {
00336 virtual void SetMaterialWrapper (iMaterialWrapper* material) = 0;
00338 virtual iMaterialWrapper* GetMaterialWrapper () const = 0;
00340 virtual void SetMixMode (uint mode) = 0;
00342 virtual uint GetMixMode () const = 0;
00344 virtual void SetLighting (bool l) = 0;
00346 virtual bool IsLighting () const = 0;
00347
00348
00349
00355 virtual iSkeletonState* GetSkeletonState () const = 0;
00356
00358 virtual void SetFrame (int f) = 0;
00359
00361 virtual int GetCurFrame () const = 0;
00362
00364 virtual int GetFrameCount () const = 0;
00365
00370 virtual bool SetAction (const char * name,
00371 bool loop = true, float speed = 1) = 0;
00372
00374 virtual void SetReverseAction(bool reverse) = 0;
00375
00377 virtual void SetSingleStepAction(bool singlestep) = 0;
00378
00383 virtual bool SetOverrideAction(const char *name,
00384 float speed = 1) = 0;
00385
00387 virtual bool PropagateAction (const char *name) = 0;
00388
00390 virtual iSpriteAction* GetCurAction () const = 0;
00391
00393 virtual bool GetReverseAction () const = 0;
00394
00396 virtual void EnableTweening (bool en) = 0;
00398 virtual bool IsTweeningEnabled () const = 0;
00399
00401 virtual void UnsetTexture () = 0;
00402
00408 virtual int GetLightingQuality () = 0;
00409
00414 virtual void SetLocalLightingQuality (int lighting_quality) = 0;
00415
00425 virtual void SetLightingQualityConfig (int config_flag) = 0;
00426
00430 virtual int GetLightingQualityConfig () const = 0;
00431
00441 virtual void SetLodLevelConfig (int config_flag) = 0;
00442
00446 virtual int GetLodLevelConfig () const = 0;
00447
00451 virtual bool IsLodEnabled () const = 0;
00452
00458 virtual void SetBaseColor (const csColor& col) = 0;
00459
00463 virtual void GetBaseColor (csColor& col) const = 0;
00464
00466 virtual iSpriteSocket* FindSocket (iMeshWrapper *mesh) const = 0;
00467
00469 virtual iSpriteSocket* FindSocket (const char * name) const = 0;
00470 };
00471
00472 #endif // __CS_IMESH_SPRITE3D_H__
00473