Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages
sprbuild.h
00001 /* 00002 Copyright (C) 2001 by Martin Geisse <mgeisse@gmx.net> 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_SPRBUILD_H__ 00020 #define __CS_SPRBUILD_H__ 00021 00022 #include "csextern.h" 00023 00024 #include "csutil/csstring.h" 00025 #include "csutil/ref.h" 00026 00027 class csVector3; 00028 class csVector2; 00029 struct iModelDataMaterial; 00030 struct iModelDataObject; 00031 struct iSprite3DFactoryState; 00032 struct iSpriteFrame; 00033 struct iSpriteAction; 00034 struct iDataBuffer; 00035 00041 class CS_CRYSTALSPACE_EXPORT csSpriteBuilder 00042 { 00043 public: 00044 virtual ~csSpriteBuilder () { } 00045 00046 // begin the build process 00047 virtual void Begin () = 0; 00048 // finish the build process 00049 virtual void Finish () = 0; 00050 // store a triangle 00051 virtual void StoreTriangle (int a, int b, int c) = 0; 00052 // store the material 00053 virtual void StoreMaterial (iModelDataMaterial *mat) = 0; 00054 // store the frame information. Returns the number of existing frames. 00055 virtual int StoreFrameInfo (int FrameCount, int VertexCount) = 0; 00056 // set mixing mode to tiling 00057 virtual void EnableTiling () = 0; 00058 00059 // begin a frame 00060 virtual void BeginFrame (int Num) = 0; 00061 // finish a frame 00062 virtual void FinishFrame () = 0; 00063 // add a vertex 00064 virtual void AddVertex (const csVector3 &pos, const csVector3 &nrm, 00065 const csVector2 &tex) = 0; 00066 00067 // begin an action 00068 virtual void BeginAction (const char *Name) = 0; 00069 // finish an action 00070 virtual void FinishAction () = 0; 00071 // store an action frame 00072 virtual void StoreActionFrame (int Frame, csTicks Delay, 00073 float displacement) = 0; 00074 00075 // Build a sprite 00076 bool Build (iModelDataObject *Input); 00077 }; 00078 00080 class CS_CRYSTALSPACE_EXPORT csSpriteBuilderFile : private csSpriteBuilder 00081 { 00082 private: 00083 csString Out; 00084 00085 virtual void Begin (); 00086 virtual void Finish (); 00087 virtual void StoreTriangle (int a, int b, int c); 00088 virtual void StoreMaterial (iModelDataMaterial *mat); 00089 virtual int StoreFrameInfo (int FrameCount, int VertexCount); 00090 virtual void EnableTiling (); 00091 virtual void BeginFrame (int Num); 00092 virtual void FinishFrame (); 00093 virtual void AddVertex (const csVector3 &pos, const csVector3 &nrm, 00094 const csVector2 &tex); 00095 virtual void BeginAction (const char *Name); 00096 virtual void FinishAction (); 00097 virtual void StoreActionFrame (int Frame, csTicks Delay, float displacement); 00098 00099 public: 00100 csPtr<iDataBuffer> Build (iModelDataObject *Input); 00101 }; 00102 00104 class CS_CRYSTALSPACE_EXPORT csSpriteBuilderMesh : private csSpriteBuilder 00105 { 00106 private: 00107 iSprite3DFactoryState *Out; 00108 iSpriteFrame *CurrentFrame; 00109 int CurrentFrameNum, CurrentVertexNum; 00110 iSpriteAction *CurrentAction; 00111 00112 virtual void Begin (); 00113 virtual void Finish (); 00114 virtual void StoreTriangle (int a, int b, int c); 00115 virtual void StoreMaterial (iModelDataMaterial *mat); 00116 virtual int StoreFrameInfo (int FrameCount, int VertexCount); 00117 virtual void EnableTiling (); 00118 virtual void BeginFrame (int Num); 00119 virtual void FinishFrame (); 00120 virtual void AddVertex (const csVector3 &pos, const csVector3 &nrm, 00121 const csVector2 &tex); 00122 virtual void BeginAction (const char *Name); 00123 virtual void FinishAction (); 00124 virtual void StoreActionFrame (int Frame, csTicks Delay, float displacement); 00125 00126 public: 00127 bool Build (iModelDataObject *Input, iSprite3DFactoryState *Output); 00128 }; 00129 00130 #endif // __CS_SPRBUILD_H__
Generated for Crystal Space by doxygen 1.4.4