Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_IMESH_OBJECT_H__
00020 #define __CS_IMESH_OBJECT_H__
00021
00022 #include "csutil/scf.h"
00023 #include "iutil/array.h"
00024
00033 struct iDecalBuilder;
00034 struct iLight;
00035 struct iMaterialWrapper;
00036 struct iMeshWrapper;
00037 struct iMeshFactoryWrapper;
00038 struct iMeshObject;
00039 struct iMeshObjectFactory;
00040 struct iMeshObjectType;
00041 struct iMovable;
00042 struct iObjectModel;
00043 struct iPortal;
00044 struct iRenderView;
00045
00046 namespace CS
00047 {
00048 namespace Graphics
00049 {
00050 struct RenderMesh;
00051 }
00052 }
00053
00054 class csColor;
00055 class csFlags;
00056 class csReversibleTransform;
00057 class csVector3;
00058
00066 #define CS_MESH_STATICPOS 1
00067
00073 #define CS_MESH_STATICSHAPE 2
00074
00083 #define CS_FACTORY_STATICSHAPE 2
00084
00089 struct iMaterialArray : public iArrayChangeAll<iMaterialWrapper*>
00090 {
00091 SCF_IARRAYCHANGEALL_INTERFACE (iMaterialArray);
00092 };
00093
00094
00098 struct iMeshObjectDrawCallback : virtual public iBase
00099 {
00100 SCF_INTERFACE (iMeshObjectDrawCallback, 0, 0, 1);
00101
00103 virtual bool BeforeDrawing (iMeshObject* spr, iRenderView* rview) = 0;
00104 };
00105
00106
00125 struct iMeshObject : public virtual iBase
00126 {
00127 SCF_INTERFACE(iMeshObject, 4,0,0);
00131 virtual iMeshObjectFactory* GetFactory () const = 0;
00132
00141 virtual csFlags& GetFlags () = 0;
00142
00146 virtual csPtr<iMeshObject> Clone () = 0;
00147
00154 virtual CS::Graphics::RenderMesh** GetRenderMeshes (int& num, iRenderView* rview,
00155 iMovable* movable, uint32 frustum_mask) = 0;
00156
00164 virtual void SetVisibleCallback (iMeshObjectDrawCallback* cb) = 0;
00165
00169 virtual iMeshObjectDrawCallback* GetVisibleCallback () const = 0;
00170
00174 virtual void NextFrame (csTicks current_time,const csVector3& pos,
00175 uint currentFrame) = 0;
00176
00186 virtual void HardTransform (const csReversibleTransform& t) = 0;
00187
00191 virtual bool SupportsHardTransform () const = 0;
00192
00205 virtual bool HitBeamOutline (const csVector3& start,
00206 const csVector3& end, csVector3& isect, float* pr) = 0;
00207
00225 virtual bool HitBeamObject (const csVector3& start, const csVector3& end,
00226 csVector3& isect, float* pr, int* polygon_idx = 0,
00227 iMaterialWrapper** material = 0) = 0;
00228
00235 virtual void SetMeshWrapper (iMeshWrapper* logparent) = 0;
00236
00241 virtual iMeshWrapper* GetMeshWrapper () const = 0;
00242
00248 virtual iObjectModel* GetObjectModel () = 0;
00249
00255 virtual bool SetColor (const csColor& color) = 0;
00256
00260 virtual bool GetColor (csColor& color) const = 0;
00261
00266 virtual bool SetMaterialWrapper (iMaterialWrapper* material) = 0;
00267
00272 virtual iMaterialWrapper* GetMaterialWrapper () const = 0;
00273
00275 virtual void SetMixMode (uint mode) = 0;
00277 virtual uint GetMixMode () const = 0;
00278
00285 virtual void PositionChild (iMeshObject* child,csTicks current_time) = 0;
00286
00292 virtual void BuildDecal(const csVector3* pos, float decalRadius,
00293 iDecalBuilder* decalBuilder) = 0;
00294 };
00295
00318 struct iMeshObjectFactory : public virtual iBase
00319 {
00320 SCF_INTERFACE(iMeshObjectFactory, 2, 0, 0);
00321
00329 virtual csFlags& GetFlags () = 0;
00330
00332 virtual csPtr<iMeshObject> NewInstance () = 0;
00333
00337 virtual csPtr<iMeshObjectFactory> Clone () = 0;
00338
00348 virtual void HardTransform (const csReversibleTransform& t) = 0;
00349
00353 virtual bool SupportsHardTransform () const = 0;
00354
00362 virtual void SetMeshFactoryWrapper (iMeshFactoryWrapper* logparent) = 0;
00363
00368 virtual iMeshFactoryWrapper* GetMeshFactoryWrapper () const = 0;
00369
00373 virtual iMeshObjectType* GetMeshObjectType () const = 0;
00374
00383 virtual iObjectModel* GetObjectModel () = 0;
00384
00389 virtual bool SetMaterialWrapper (iMaterialWrapper* material) = 0;
00390
00395 virtual iMaterialWrapper* GetMaterialWrapper () const = 0;
00396
00398 virtual void SetMixMode (uint mode) = 0;
00400 virtual uint GetMixMode () const = 0;
00401 };
00402
00403
00420 struct iMeshObjectType : public virtual iBase
00421 {
00422 SCF_INTERFACE(iMeshObjectType, 2,0,0);
00424 virtual csPtr<iMeshObjectFactory> NewFactory () = 0;
00425 };
00426
00429 #endif // __CS_IMESH_OBJECT_H__