00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
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__