|
mdldata.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 __IMESH_MDLDATA_H__ 00020 #define __IMESH_MDLDATA_H__ 00021 00022 #include "csgeom/vector2.h" 00023 #include "csgeom/vector3.h" 00024 #include "csutil/cscolor.h" 00025 #include "csutil/csvector.h" 00026 #include "csutil/scf.h" 00027 00028 struct iObject; 00029 struct iImage; 00030 struct iTextureWrapper; 00031 struct iTextureList; 00032 struct iMaterial; 00033 struct iMaterialList; 00034 struct iMaterialWrapper; 00035 struct iVFS; 00036 struct iImageIO; 00037 00038 SCF_VERSION (iModelDataTexture, 0, 0, 1); 00039 00055 struct iModelDataTexture : public iBase 00056 { 00058 virtual iObject* QueryObject () = 0; 00059 00061 virtual void SetFileName (const char *fn) = 0; 00063 virtual const char *GetFileName () const = 0; 00064 00066 virtual void SetImage (iImage *image) = 0; 00068 virtual iImage *GetImage () const = 0; 00069 00071 virtual void SetTextureWrapper (iTextureWrapper *th) = 0; 00073 virtual iTextureWrapper *GetTextureWrapper () const = 0; 00074 00080 virtual void LoadImage (iVFS *VFS, iImageIO *ImageIO, int Format) = 0; 00081 00086 virtual void Register (iTextureList *tl) = 0; 00087 00092 virtual iModelDataTexture *Clone () const = 0; 00093 }; 00094 00095 00096 SCF_VERSION (iModelDataMaterial, 0, 0, 1); 00097 00108 struct iModelDataMaterial : public iBase 00109 { 00111 virtual iObject* QueryObject () = 0; 00112 00114 virtual iMaterial *GetBaseMaterial () const = 0; 00116 virtual void SetBaseMaterial (iMaterial *mat) = 0; 00117 00119 virtual iMaterialWrapper *GetMaterialWrapper () const = 0; 00121 virtual void SetMaterialWrapper (iMaterialWrapper *mat) = 0; 00122 00127 virtual void Register (iMaterialList *ml) = 0; 00128 00133 virtual iModelDataMaterial *Clone () const = 0; 00134 }; 00135 00136 00137 SCF_VERSION (iModelDataVertices, 0, 0, 1); 00138 00144 struct iModelDataVertices : public iBase 00145 { 00147 virtual iObject* QueryObject () = 0; 00148 00150 virtual int GetVertexCount () const = 0; 00152 virtual const csVector3 &GetVertex (int n) const = 0; 00154 virtual void SetVertex (int n, const csVector3 &v) = 0; 00156 virtual int AddVertex (const csVector3 &v) = 0; 00158 virtual void DeleteVertex (int n) = 0; 00160 virtual int FindVertex (const csVector3 &v) const = 0; 00161 00163 virtual int GetNormalCount () const = 0; 00165 virtual const csVector3 &GetNormal (int n) const = 0; 00167 virtual void SetNormal (int n, const csVector3 &v) = 0; 00169 virtual int AddNormal (const csVector3 &v) = 0; 00171 virtual void DeleteNormal (int n) = 0; 00173 virtual int FindNormal (const csVector3 &v) const = 0; 00174 00176 virtual int GetColorCount () const = 0; 00178 virtual const csColor &GetColor (int n) const = 0; 00180 virtual void SetColor (int n, const csColor &v) = 0; 00182 virtual int AddColor (const csColor &v) = 0; 00184 virtual void DeleteColor (int n) = 0; 00186 virtual int FindColor (const csColor &v) const = 0; 00187 00189 virtual int GetTexelCount () const = 0; 00191 virtual const csVector2 &GetTexel (int n) const = 0; 00193 virtual void SetTexel (int n, const csVector2 &v) = 0; 00195 virtual int AddTexel (const csVector2 &v) = 0; 00197 virtual void DeleteTexel (int n) = 0; 00199 virtual int FindTexel (const csVector2 &v) const = 0; 00200 00202 virtual void CopyFrom (const iModelDataVertices *Other) = 0; 00203 00205 virtual iModelDataVertices *Clone () const = 0; 00206 }; 00207 00208 00209 SCF_VERSION (iModelDataAction, 0, 0, 1); 00210 00236 struct iModelDataAction : public iBase 00237 { 00239 virtual iObject* QueryObject () = 0; 00240 00242 virtual int GetFrameCount () const = 0; 00244 virtual float GetTime (int Frame) const = 0; 00246 virtual iObject *GetState (int Frame) const = 0; 00248 virtual void SetTime (int Frame, float NewTime) = 0; 00250 virtual void SetState (int Frame, iObject *State) = 0; 00252 virtual void AddFrame (float Time, iObject *State) = 0; 00254 virtual void DeleteFrame (int Frame) = 0; 00256 virtual float GetTotalTime () const = 0; 00257 }; 00258 00259 00260 SCF_VERSION (iModelDataPolygon, 0, 0, 1); 00261 00267 struct iModelDataPolygon : public iBase 00268 { 00270 virtual iObject* QueryObject () = 0; 00271 00273 virtual int GetVertexCount () const = 0; 00275 virtual int AddVertex (int Vertex, int Normal, int Color, int Texel) = 0; 00277 virtual void DeleteVertex (int n) = 0; 00278 00280 virtual int GetVertex (int n) const = 0; 00282 virtual void SetVertex (int n, int Index) = 0; 00284 virtual int GetNormal (int n) const = 0; 00286 virtual void SetNormal (int n, int Index) = 0; 00288 virtual int GetColor (int n) const = 0; 00290 virtual void SetColor (int n, int Index) = 0; 00292 virtual int GetTexel (int n) const = 0; 00294 virtual void SetTexel (int n, int Index) = 0; 00295 00297 virtual iModelDataMaterial *GetMaterial () const = 0; 00299 virtual void SetMaterial (iModelDataMaterial *m) = 0; 00300 00302 virtual iModelDataPolygon *Clone () const = 0; 00303 }; 00304 00305 00306 SCF_VERSION (iModelDataObject, 0, 1, 0); 00307 00315 struct iModelDataObject : public iBase 00316 { 00318 virtual iObject* QueryObject () = 0; 00319 00321 virtual iModelDataVertices* GetDefaultVertices () const = 0; 00323 virtual void SetDefaultVertices (iModelDataVertices*) = 0; 00324 }; 00325 00326 00327 SCF_VERSION (iModelDataCamera, 0, 0, 1); 00328 00330 struct iModelDataCamera : public iBase 00331 { 00333 virtual iObject* QueryObject () = 0; 00334 00336 virtual const csVector3 &GetPosition () const = 0; 00338 virtual void SetPosition (const csVector3 &v) = 0; 00339 00341 virtual const csVector3 &GetUpVector () const = 0; 00343 virtual void SetUpVector (const csVector3 &v) = 0; 00345 virtual void ComputeUpVector () = 0; 00346 00348 virtual const csVector3 &GetFrontVector () const = 0; 00350 virtual void SetFrontVector (const csVector3 &v) = 0; 00352 virtual void ComputeFrontVector () = 0; 00353 00355 virtual const csVector3 &GetRightVector () const = 0; 00357 virtual void SetRightVector (const csVector3 &v) = 0; 00359 virtual void ComputeRightVector () = 0; 00360 00362 virtual void Normalize () = 0; 00364 virtual bool CheckOrthogonality () const = 0; 00365 00367 virtual iModelDataCamera *Clone () const = 0; 00368 }; 00369 00370 00371 SCF_VERSION (iModelDataLight, 0, 0, 1); 00372 00374 struct iModelDataLight : public iBase 00375 { 00377 virtual iObject* QueryObject () = 0; 00378 00380 virtual float GetRadius () const = 0; 00382 virtual void SetRadius (float r) = 0; 00383 00385 virtual const csColor &GetColor () const = 0; 00387 virtual void SetColor (const csColor &) = 0; 00388 00390 virtual const csVector3 &GetPosition () const = 0; 00392 virtual void SetPosition (const csVector3 &) = 0; 00393 00395 virtual iModelDataLight *Clone () const = 0; 00396 }; 00397 00398 00399 SCF_VERSION (iModelData, 0, 0, 1); 00400 00406 struct iModelData : public iBase 00407 { 00409 virtual iObject* QueryObject () = 0; 00410 00412 virtual void LoadImages (iVFS *VFS, iImageIO *ImageIO, int Format) = 0; 00414 virtual void RegisterTextures (iTextureList *tl) = 0; 00416 virtual void RegisterMaterials (iMaterialList *ml) = 0; 00417 }; 00418 00419 #endif // __IMESH_MDLDATA_H__ Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000 |