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