Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members  

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 __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 // @@@ CONFIG TODO: global_lighting_quality
00079 // @@@ CONFIG TODO: global_lod_level
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   // @@@ TODO: what about conveniance functions to set colors for verts?
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 

Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000