imesh/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 int GetVertexCount () const = 0; 00151 virtual const csVector3 &GetVertex (int n) const = 0; 00153 virtual void SetVertex (int n, const csVector3 &v) = 0; 00155 virtual int AddVertex (const csVector3 &v) = 0; 00157 virtual void DeleteVertex (int n) = 0; 00159 virtual int FindVertex (const csVector3 &v) const = 0; 00160 00162 virtual int GetNormalCount () const = 0; 00164 virtual const csVector3 &GetNormal (int n) const = 0; 00166 virtual void SetNormal (int n, const csVector3 &v) = 0; 00168 virtual int AddNormal (const csVector3 &v) = 0; 00170 virtual void DeleteNormal (int n) = 0; 00172 virtual int FindNormal (const csVector3 &v) const = 0; 00173 00175 virtual int GetColorCount () const = 0; 00177 virtual const csColor &GetColor (int n) const = 0; 00179 virtual void SetColor (int n, const csColor &v) = 0; 00181 virtual int AddColor (const csColor &v) = 0; 00183 virtual void DeleteColor (int n) = 0; 00185 virtual int FindColor (const csColor &v) const = 0; 00186 00188 virtual int GetTexelCount () const = 0; 00190 virtual const csVector2 &GetTexel (int n) const = 0; 00192 virtual void SetTexel (int n, const csVector2 &v) = 0; 00194 virtual int AddTexel (const csVector2 &v) = 0; 00196 virtual void DeleteTexel (int n) = 0; 00198 virtual int 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 int GetFrameCount () const = 0; 00243 virtual float GetTime (int Frame) const = 0; 00245 virtual iObject *GetState (int Frame) const = 0; 00247 virtual void SetTime (int Frame, float NewTime) = 0; 00249 virtual void SetState (int Frame, iObject *State) = 0; 00251 virtual void AddFrame (float Time, iObject *State) = 0; 00253 virtual void DeleteFrame (int 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 int GetVertexCount () const = 0; 00274 virtual int AddVertex (int Vertex, int Normal, int Color, int Texel) = 0; 00276 virtual void DeleteVertex (int n) = 0; 00277 00279 virtual int GetVertex (int n) const = 0; 00281 virtual void SetVertex (int n, int Index) = 0; 00283 virtual int GetNormal (int n) const = 0; 00285 virtual void SetNormal (int n, int Index) = 0; 00287 virtual int GetColor (int n) const = 0; 00289 virtual void SetColor (int n, int Index) = 0; 00291 virtual int GetTexel (int n) const = 0; 00293 virtual void SetTexel (int 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.2.18