|
sprbuild.h00001 /* 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 __SPRBUILD_H__ 00020 #define __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) = 0; 00070 00071 // Build a sprite 00072 bool Build (iModelDataObject *Input); 00073 }; 00074 00076 class csSpriteBuilderFile : private csSpriteBuilder 00077 { 00078 private: 00079 csString Out; 00080 00081 virtual void Begin (); 00082 virtual void Finish (); 00083 virtual void StoreTriangle (int a, int b, int c); 00084 virtual void StoreMaterial (iModelDataMaterial *mat); 00085 virtual int StoreFrameInfo (int FrameCount, int VertexCount); 00086 virtual void EnableTiling (); 00087 virtual void BeginFrame (int Num); 00088 virtual void FinishFrame (); 00089 virtual void AddVertex (const csVector3 &pos, const csVector3 &nrm, 00090 const csVector2 &tex); 00091 virtual void BeginAction (const char *Name); 00092 virtual void FinishAction (); 00093 virtual void StoreActionFrame (int Frame, csTicks Delay); 00094 public: 00095 00096 iDataBuffer *Build (iModelDataObject *Input); 00097 }; 00098 00100 class csSpriteBuilderMesh : private csSpriteBuilder 00101 { 00102 private: 00103 iSprite3DFactoryState *Out; 00104 iSpriteFrame *CurrentFrame; 00105 int CurrentFrameNum, CurrentVertexNum; 00106 iSpriteAction *CurrentAction; 00107 00108 virtual void Begin (); 00109 virtual void Finish (); 00110 virtual void StoreTriangle (int a, int b, int c); 00111 virtual void StoreMaterial (iModelDataMaterial *mat); 00112 virtual int StoreFrameInfo (int FrameCount, int VertexCount); 00113 virtual void EnableTiling (); 00114 virtual void BeginFrame (int Num); 00115 virtual void FinishFrame (); 00116 virtual void AddVertex (const csVector3 &pos, const csVector3 &nrm, 00117 const csVector2 &tex); 00118 virtual void BeginAction (const char *Name); 00119 virtual void FinishAction (); 00120 virtual void StoreActionFrame (int Frame, csTicks Delay); 00121 public: 00122 00123 bool Build (iModelDataObject *Input, iSprite3DFactoryState *Output); 00124 }; 00125 00126 #endif // __SPRBUILD_H__ Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000 |