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
00208 #ifndef CS_USE_NEW_RENDERER
00209
00213 virtual void AddTriangle (int a, int b, int c) = 0;
00215 virtual csTriangle GetTriangle (int x) const = 0;
00217 virtual csTriangle* GetTriangles () const = 0;
00219 virtual int GetTriangleCount () const = 0;
00221 virtual void SetTriangleCount (int count) = 0;
00223 virtual void SetTriangles( csTriangle const* trigs, int count) = 0;
00224 #endif // CS_USE_NEW_RENDERER
00225
00227 virtual iSpriteFrame* AddFrame () = 0;
00229 virtual iSpriteFrame* FindFrame (const char* name) const = 0;
00231 virtual int GetFrameCount () const = 0;
00233 virtual iSpriteFrame* GetFrame (int f) const = 0;
00234
00236 virtual iSpriteAction* AddAction () = 0;
00238 virtual iSpriteAction* FindAction (const char* name) const = 0;
00240 virtual iSpriteAction* GetFirstAction () const = 0;
00242 virtual int GetActionCount () const = 0;
00244 virtual iSpriteAction* GetAction (int No) const = 0;
00245
00247 virtual iSpriteSocket* AddSocket () = 0;
00249 virtual iSpriteSocket* FindSocket (const char * name) const = 0;
00251 virtual iSpriteSocket* FindSocket (iMeshWrapper *mesh) const = 0;
00253 virtual int GetSocketCount () const = 0;
00255 virtual iSpriteSocket* GetSocket (int f) const = 0;
00256
00258 virtual void EnableSkeletalAnimation () = 0;
00264 virtual iSkeleton* GetSkeleton () const = 0;
00265
00267 virtual void EnableTweening (bool en) = 0;
00269 virtual bool IsTweeningEnabled () const = 0;
00271 virtual void SetLightingQuality (int qual) = 0;
00273 virtual int GetLightingQuality () const = 0;
00284 virtual void SetLightingQualityConfig (int qual) = 0;
00286 virtual int GetLightingQualityConfig () const = 0;
00287
00298 virtual void SetLodLevelConfig (int config_flag) = 0;
00299
00301 virtual int GetLodLevelConfig () const = 0;
00302
00308 virtual void MergeNormals (int base, int frame) = 0;
00309
00315 virtual void MergeNormals (int base) = 0;
00316
00322 virtual void MergeNormals () = 0;
00323
00325 virtual void SetMixMode (uint mode) = 0;
00327 virtual uint GetMixMode () const = 0;
00328 };
00329
00330 SCF_VERSION (iSprite3DState, 0, 0, 6);
00331
00335 struct iSprite3DState : public iBase
00336 {
00338 virtual void SetMaterialWrapper (iMaterialWrapper* material) = 0;
00340 virtual iMaterialWrapper* GetMaterialWrapper () const = 0;
00342 virtual void SetMixMode (uint mode) = 0;
00344 virtual uint GetMixMode () const = 0;
00346 virtual void SetLighting (bool l) = 0;
00348 virtual bool IsLighting () const = 0;
00349
00350
00351
00357 virtual iSkeletonState* GetSkeletonState () const = 0;
00358
00360 virtual void SetFrame (int f) = 0;
00361
00363 virtual int GetCurFrame () const = 0;
00364
00366 virtual int GetFrameCount () const = 0;
00367
00372 virtual bool SetAction (const char * name,
00373 bool loop = true, float speed = 1) = 0;
00374
00376 virtual void SetReverseAction(bool reverse) = 0;
00377
00379 virtual void SetSingleStepAction(bool singlestep) = 0;
00380
00385 virtual bool SetOverrideAction(const char *name,
00386 float speed = 1) = 0;
00387
00389 virtual bool PropagateAction (const char *name) = 0;
00390
00392 virtual iSpriteAction* GetCurAction () const = 0;
00393
00395 virtual bool GetReverseAction () const = 0;
00396
00398 virtual void EnableTweening (bool en) = 0;
00400 virtual bool IsTweeningEnabled () const = 0;
00401
00403 virtual void UnsetTexture () = 0;
00404
00410 virtual int GetLightingQuality () = 0;
00411
00416 virtual void SetLocalLightingQuality (int lighting_quality) = 0;
00417
00427 virtual void SetLightingQualityConfig (int config_flag) = 0;
00428
00432 virtual int GetLightingQualityConfig () const = 0;
00433
00443 virtual void SetLodLevelConfig (int config_flag) = 0;
00444
00448 virtual int GetLodLevelConfig () const = 0;
00449
00453 virtual bool IsLodEnabled () const = 0;
00454
00460 virtual void SetBaseColor (const csColor& col) = 0;
00461
00465 virtual void GetBaseColor (csColor& col) const = 0;
00466
00468 virtual iSpriteSocket* FindSocket (iMeshWrapper *mesh) const = 0;
00469
00471 virtual iSpriteSocket* FindSocket (const char * name) const = 0;
00472 };
00473
00474 #endif // __CS_IMESH_SPRITE3D_H__
00475