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/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 // __CS_IMESH_MDLDATA_H__