Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members  

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 __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