CrystalSpace

Public API Reference

Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

imesh/sprite3d.h

00001 /*
00002     Copyright (C) 2000-2001 by Jorrit Tyberghein
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_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 // @@@ CONFIG TODO: global_lighting_quality
00080 // @@@ CONFIG TODO: global_lod_level
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   // @@@ TODO: what about convenience functions to set colors for verts?
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 
00377   virtual bool SetAction (int index,
00378         bool loop = true, float speed = 1) = 0;
00379 
00381   virtual void SetReverseAction(bool reverse) = 0;
00382 
00384   virtual void SetSingleStepAction(bool singlestep) = 0;
00385 
00390   virtual bool SetOverrideAction(const char *name,
00391         float speed = 1) = 0;
00392 
00397   virtual bool SetOverrideAction(int index,
00398         float speed = 1) = 0;
00399 
00401   virtual bool PropagateAction (const char *name) = 0;
00402 
00404   virtual iSpriteAction* GetCurAction () const = 0;
00405 
00407   virtual bool GetReverseAction () const = 0;
00408 
00410   virtual void EnableTweening (bool en) = 0;
00412   virtual bool IsTweeningEnabled () const = 0;
00413 
00415   virtual void UnsetTexture () = 0;
00416 
00422   virtual int GetLightingQuality () = 0;
00423 
00428   virtual void SetLocalLightingQuality (int lighting_quality) = 0;
00429 
00439   virtual void SetLightingQualityConfig (int config_flag) = 0;
00440 
00444   virtual int GetLightingQualityConfig () const = 0;
00445 
00455   virtual void SetLodLevelConfig (int config_flag) = 0;
00456 
00460   virtual int GetLodLevelConfig () const = 0;
00461 
00465   virtual bool IsLodEnabled () const = 0;
00466 
00472   virtual void SetBaseColor (const csColor& col) = 0;
00473 
00477   virtual void GetBaseColor (csColor& col) const = 0;
00478 
00480   virtual iSpriteSocket* FindSocket (iMeshWrapper *mesh) const = 0;  
00481 
00483   virtual iSpriteSocket* FindSocket (const char * name) const = 0;
00484 };
00485 
00486 #endif // __CS_IMESH_SPRITE3D_H__
00487 

Generated for Crystal Space by doxygen 1.2.18