CrystalSpace

Public API Reference

Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

mdldata.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_IMESH_MDLDATA_H__
00020 #define __CS_IMESH_MDLDATA_H__
00021 
00022 #include "csgeom/vector2.h"
00023 #include "csgeom/vector3.h"
00024 #include "csutil/cscolor.h"
00025 #include "csutil/scf.h"
00026 
00027 struct iObject;
00028 struct iImage;
00029 struct iTextureWrapper;
00030 struct iTextureList;
00031 struct iMaterial;
00032 struct iMaterialList;
00033 struct iMaterialWrapper;
00034 struct iVFS;
00035 struct iImageIO;
00036 
00037 SCF_VERSION (iModelDataTexture, 0, 0, 1);
00038 
00054 struct iModelDataTexture : public iBase
00055 {
00057   virtual iObject* QueryObject () = 0;
00058 
00060   virtual void SetFileName (const char *fn) = 0;
00062   virtual const char *GetFileName () const = 0;
00063 
00065   virtual void SetImage (iImage *image) = 0;
00067   virtual iImage *GetImage () const = 0;
00068 
00070   virtual void SetTextureWrapper (iTextureWrapper *th) = 0;
00072   virtual iTextureWrapper *GetTextureWrapper () const = 0;
00073 
00079   virtual void LoadImage (iVFS *VFS, iImageIO *ImageIO, int Format) = 0;
00080 
00085   virtual void Register (iTextureList *tl) = 0;
00086 
00091   virtual iModelDataTexture *Clone () const = 0;
00092 };
00093 
00094 
00095 SCF_VERSION (iModelDataMaterial, 0, 0, 1);
00096 
00107 struct iModelDataMaterial : public iBase
00108 {
00110   virtual iObject* QueryObject () = 0;
00111 
00113   virtual iMaterial *GetBaseMaterial () const = 0;
00115   virtual void SetBaseMaterial (iMaterial *mat) = 0;
00116 
00118   virtual iMaterialWrapper *GetMaterialWrapper () const = 0;
00120   virtual void SetMaterialWrapper (iMaterialWrapper *mat) = 0;
00121 
00126   virtual void Register (iMaterialList *ml) = 0;
00127 
00132   virtual iModelDataMaterial *Clone () const = 0;
00133 };
00134 
00135 
00136 SCF_VERSION (iModelDataVertices, 0, 0, 1);
00137 
00143 struct iModelDataVertices : public iBase
00144 {
00146   virtual iObject* QueryObject () = 0;
00147 
00149   virtual size_t GetVertexCount () const = 0;
00151   virtual const csVector3 &GetVertex (size_t n) const = 0;
00153   virtual void SetVertex (size_t n, const csVector3 &v) = 0;
00155   virtual size_t AddVertex (const csVector3 &v) = 0;
00157   virtual void DeleteVertex (size_t n) = 0;
00159   virtual size_t FindVertex (const csVector3 &v) const = 0;
00160 
00162   virtual size_t GetNormalCount () const = 0;
00164   virtual const csVector3 &GetNormal (size_t n) const = 0;
00166   virtual void SetNormal (size_t n, const csVector3 &v) = 0;
00168   virtual size_t AddNormal (const csVector3 &v) = 0;
00170   virtual void DeleteNormal (size_t n) = 0;
00172   virtual size_t FindNormal (const csVector3 &v) const = 0;
00173 
00175   virtual size_t GetColorCount () const = 0;
00177   virtual const csColor &GetColor (size_t n) const = 0;
00179   virtual void SetColor (size_t n, const csColor &v) = 0;
00181   virtual size_t AddColor (const csColor &v) = 0;
00183   virtual void DeleteColor (size_t n) = 0;
00185   virtual size_t FindColor (const csColor &v) const = 0;
00186 
00188   virtual size_t GetTexelCount () const = 0;
00190   virtual const csVector2 &GetTexel (size_t n) const = 0;
00192   virtual void SetTexel (size_t n, const csVector2 &v) = 0;
00194   virtual size_t AddTexel (const csVector2 &v) = 0;
00196   virtual void DeleteTexel (size_t n) = 0;
00198   virtual size_t FindTexel (const csVector2 &v) const = 0;
00199 
00201   virtual void CopyFrom (const iModelDataVertices *Other) = 0;
00202 
00204   virtual iModelDataVertices *Clone () const = 0;
00205 };
00206 
00207 
00208 SCF_VERSION (iModelDataAction, 0, 0, 1);
00209 
00235 struct iModelDataAction : public iBase
00236 {
00238   virtual iObject* QueryObject () = 0;
00239 
00241   virtual size_t GetFrameCount () const = 0;
00243   virtual float GetTime (size_t Frame) const = 0;
00245   virtual iObject *GetState (size_t Frame) const = 0;
00247   virtual void SetTime (size_t Frame, float NewTime) = 0;
00249   virtual void SetState (size_t Frame, iObject *State) = 0;
00251   virtual void AddFrame (float Time, iObject *State) = 0;
00253   virtual void DeleteFrame (size_t Frame) = 0;
00255   virtual float GetTotalTime () const = 0;
00256 };
00257 
00258 
00259 SCF_VERSION (iModelDataPolygon, 0, 0, 1);
00260 
00266 struct iModelDataPolygon : public iBase
00267 {
00269   virtual iObject* QueryObject () = 0;
00270 
00272   virtual size_t GetVertexCount () const = 0;
00274   virtual size_t AddVertex (int Vertex, int Normal, int Color, int Texel) = 0;
00276   virtual void DeleteVertex (size_t n) = 0;
00277 
00279   virtual int GetVertex (size_t n) const = 0;
00281   virtual void SetVertex (size_t n, int Index) = 0;
00283   virtual int GetNormal (size_t n) const = 0;
00285   virtual void SetNormal (size_t n, int Index) = 0;
00287   virtual int GetColor (size_t n) const = 0;
00289   virtual void SetColor (size_t n, int Index) = 0;
00291   virtual int GetTexel (size_t n) const = 0;
00293   virtual void SetTexel (size_t n, int Index) = 0;
00294 
00296   virtual iModelDataMaterial *GetMaterial () const = 0;
00298   virtual void SetMaterial (iModelDataMaterial *m) = 0;
00299 
00301   virtual iModelDataPolygon *Clone () const = 0;
00302 };
00303 
00304 
00305 SCF_VERSION (iModelDataObject, 0, 1, 0);
00306 
00314 struct iModelDataObject : public iBase
00315 {
00317   virtual iObject* QueryObject () = 0;
00318 
00320   virtual iModelDataVertices* GetDefaultVertices () const = 0;
00322   virtual void SetDefaultVertices (iModelDataVertices*) = 0;
00323 };
00324 
00325 
00326 SCF_VERSION (iModelDataCamera, 0, 0, 1);
00327 
00329 struct iModelDataCamera : public iBase
00330 {
00332   virtual iObject* QueryObject () = 0;
00333 
00335   virtual const csVector3 &GetPosition () const = 0;
00337   virtual void SetPosition (const csVector3 &v) = 0;
00338 
00340   virtual const csVector3 &GetUpVector () const = 0;
00342   virtual void SetUpVector (const csVector3 &v) = 0;
00344   virtual void ComputeUpVector () = 0;
00345 
00347   virtual const csVector3 &GetFrontVector () const = 0;
00349   virtual void SetFrontVector (const csVector3 &v) = 0;
00351   virtual void ComputeFrontVector () = 0;
00352 
00354   virtual const csVector3 &GetRightVector () const = 0;
00356   virtual void SetRightVector (const csVector3 &v) = 0;
00358   virtual void ComputeRightVector () = 0;
00359 
00361   virtual void Normalize () = 0;
00363   virtual bool CheckOrthogonality () const = 0;
00364 
00366   virtual iModelDataCamera *Clone () const = 0;
00367 };
00368 
00369 
00370 SCF_VERSION (iModelDataLight, 0, 0, 1);
00371 
00373 struct iModelDataLight : public iBase
00374 {
00376   virtual iObject* QueryObject () = 0;
00377 
00379   virtual float GetRadius () const = 0;
00381   virtual void SetRadius (float r) = 0;
00382 
00384   virtual const csColor &GetColor () const = 0;
00386   virtual void SetColor (const csColor &) = 0;
00387 
00389   virtual const csVector3 &GetPosition () const = 0;
00391   virtual void SetPosition (const csVector3 &) = 0;
00392 
00394   virtual iModelDataLight *Clone () const = 0;
00395 };
00396 
00397 
00398 SCF_VERSION (iModelData, 0, 0, 1);
00399 
00405 struct iModelData : public iBase
00406 {
00408   virtual iObject* QueryObject () = 0;
00409 
00411   virtual void LoadImages (iVFS *VFS, iImageIO *ImageIO, int Format) = 0;
00413   virtual void RegisterTextures (iTextureList *tl) = 0;
00415   virtual void RegisterMaterials (iMaterialList *ml) = 0;
00416 };
00417 
00418 #endif // __CS_IMESH_MDLDATA_H__

Generated for Crystal Space by doxygen 1.3.9.1