CrystalSpace

Public API Reference

iengine/mesh.h

Go to the documentation of this file.
00001 /*
00002     Copyright (C) 2000-2001 by Jorrit Tyberghein
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_IENGINE_MESH_H__
00020 #define __CS_IENGINE_MESH_H__
00021 
00029 #include "csutil/scf.h"
00030 
00031 #include "csgeom/box.h"
00032 #include "csgeom/vector3.h"
00033 
00034 #include "ivideo/graph3d.h"
00035 
00036 struct iCamera;
00037 struct iLightingInfo;
00038 struct iLODControl;
00039 struct iMeshFactoryList;
00040 struct iMeshFactoryWrapper;
00041 struct iMeshList;
00042 struct iMeshObject;
00043 struct iMeshObjectFactory;
00044 struct iMeshWrapper;
00045 struct iMovable;
00046 struct iObject;
00047 struct iPortalContainer;
00048 struct iRenderView;
00049 struct iShaderVariableContext;
00050 struct iShadowCaster;
00051 struct iShadowReceiver;
00052 struct iSharedVariable;
00053 struct iSceneNode;
00054 struct iMaterialWrapper;
00055 
00056 struct csRenderMesh;
00057 
00058 class csEllipsoid;
00059 class csFlags;
00060 class csReversibleTransform;
00061 
00072 #define CS_ENTITY_DETAIL 2
00073 
00082 #define CS_ENTITY_CAMERA 4
00083 
00091 #define CS_ENTITY_INVISIBLEMESH 8
00092 
00099 #define CS_ENTITY_INVISIBLE (CS_ENTITY_INVISIBLEMESH+CS_ENTITY_NOHITBEAM)
00100 
00106 #define CS_ENTITY_NOSHADOWS 16
00107 
00113 #define CS_ENTITY_NOLIGHTING 32
00114 
00119 #define CS_ENTITY_NOHITBEAM 64
00120 
00130 #define CS_ENTITY_NOCLIP 128
00131 
00142 #define CS_LIGHTINGUPDATE_SORTRELEVANCE 1
00143 
00150 #define CS_LIGHTINGUPDATE_ALWAYSUPDATE 2
00151 
00154 SCF_VERSION (iMeshDrawCallback, 0, 0, 1);
00155 
00164 struct iMeshDrawCallback : public iBase
00165 {
00170   virtual bool BeforeDrawing (iMeshWrapper* spr, iRenderView* rview) = 0;
00171 };
00172 
00176 struct csHitBeamResult
00177 {
00179   csVector3 isect;
00184   float r;
00186   int polygon_idx;
00191   iMaterialWrapper* material;
00196   int facehit;
00200   bool hit;
00201 };
00202 
00206 struct csScreenBoxResult
00207 {
00209   csBox2 sbox;
00211   csBox3 cbox;
00216   float distance;
00217 };
00218 
00250 struct iMeshWrapper : public virtual iBase
00251 {
00252   SCF_INTERFACE(iMeshWrapper, 2, 0, 0);
00253 
00259   virtual iObject *QueryObject () = 0;
00260 
00262   virtual iMeshObject* GetMeshObject () const = 0;
00264   virtual void SetMeshObject (iMeshObject*) = 0;
00269   virtual iPortalContainer* GetPortalContainer () const = 0;
00270 
00277   virtual iLightingInfo* GetLightingInfo () const = 0;
00278 
00290   virtual iShadowReceiver* GetShadowReceiver () = 0;
00291 
00302   virtual iShadowCaster* GetShadowCaster () = 0;
00303 
00305   virtual iMeshFactoryWrapper *GetFactory () const = 0;
00307   virtual void SetFactory (iMeshFactoryWrapper* factory) = 0;
00308 
00322   virtual void SetLightingUpdate (int flags, int num_lights) = 0;
00323 
00331   virtual iMovable* GetMovable () const = 0;
00332 
00336   virtual iSceneNode* QuerySceneNode () = 0;
00337 
00343   virtual iMeshWrapper* FindChildByName (const char* name) = 0;
00344 
00362   virtual void PlaceMesh () = 0;
00363 
00374   CS_DEPRECATED_METHOD virtual int HitBeamBBox (const csVector3& start,
00375         const csVector3& end, csVector3& isect, float* pr) = 0;
00376 
00382   CS_DEPRECATED_METHOD virtual bool HitBeamOutline (const csVector3& start,
00383         const csVector3& end, csVector3& isect, float* pr) = 0;
00384 
00391   CS_DEPRECATED_METHOD virtual bool HitBeamObject (const csVector3& start,
00392         const csVector3& end, csVector3& isect, float* pr,
00393         int* polygon_idx = 0) = 0;
00394 
00400   CS_DEPRECATED_METHOD virtual bool HitBeam (const csVector3& start,
00401         const csVector3& end, csVector3& isect, float* pr) = 0;
00402 
00413   virtual csHitBeamResult HitBeamBBox (const csVector3& start,
00414         const csVector3& end) = 0;
00415 
00421   virtual csHitBeamResult HitBeamOutline (const csVector3& start,
00422         const csVector3& end) = 0;
00423 
00433   virtual csHitBeamResult HitBeamObject (const csVector3& start,
00434         const csVector3& end, bool do_material = false) = 0;
00435 
00441   virtual csHitBeamResult HitBeam (const csVector3& start,
00442         const csVector3& end) = 0;
00443 
00452   virtual void SetDrawCallback (iMeshDrawCallback* cb) = 0;
00453 
00457   virtual void RemoveDrawCallback (iMeshDrawCallback* cb) = 0;
00458 
00460   virtual int GetDrawCallbackCount () const = 0;
00461 
00463   virtual iMeshDrawCallback* GetDrawCallback (int idx) const = 0;
00464 
00479   virtual void SetRenderPriority (long rp) = 0;
00483   virtual long GetRenderPriority () const = 0;
00484 
00489   virtual void SetRenderPriorityRecursive (long rp) = 0;
00490 
00509   virtual csFlags& GetFlags () = 0;
00510 
00529   virtual void SetFlagsRecursive (uint32 mask, uint32 flags = ~0) = 0;
00530 
00539   virtual void SetZBufMode (csZBufMode mode) = 0;
00543   virtual csZBufMode GetZBufMode () const = 0;
00548   virtual void SetZBufModeRecursive (csZBufMode mode) = 0;
00549 
00564   virtual void HardTransform (const csReversibleTransform& t) = 0;
00565 
00572   CS_DEPRECATED_METHOD virtual void GetWorldBoundingBox (csBox3& cbox) = 0;
00573 
00580   CS_DEPRECATED_METHOD virtual void GetTransformedBoundingBox (
00581         const csReversibleTransform& trans, csBox3& cbox) = 0;
00582 
00590   CS_DEPRECATED_METHOD virtual float GetScreenBoundingBox (iCamera* camera,
00591         csBox2& sbox, csBox3& cbox) = 0;
00592 
00598   virtual const csBox3& GetWorldBoundingBox () = 0;
00599 
00605   virtual csBox3 GetTransformedBoundingBox (
00606         const csReversibleTransform& trans) = 0;
00607 
00613   virtual csScreenBoxResult GetScreenBoundingBox (iCamera* camera) = 0;
00614 
00619   CS_DEPRECATED_METHOD virtual void GetRadius (csVector3& rad,
00620         csVector3& cent) const = 0;
00622   virtual csEllipsoid GetRadius () const = 0;
00623 
00627   virtual void ResetMinMaxRenderDistance () = 0;
00628 
00633   virtual void SetMinimumRenderDistance (float min) = 0;
00634 
00638   virtual float GetMinimumRenderDistance () const = 0;
00639 
00644   virtual void SetMaximumRenderDistance (float min) = 0;
00645 
00649   virtual float GetMaximumRenderDistance () const = 0;
00650 
00656   virtual void SetMinimumRenderDistanceVar (iSharedVariable* min) = 0;
00657 
00662   virtual iSharedVariable* GetMinimumRenderDistanceVar () const = 0;
00663 
00669   virtual void SetMaximumRenderDistanceVar (iSharedVariable* min) = 0;
00670 
00675   virtual iSharedVariable* GetMaximumRenderDistanceVar () const = 0;
00676 
00683   virtual iLODControl* CreateStaticLOD () = 0;
00684 
00689   virtual void DestroyStaticLOD () = 0;
00690 
00696   virtual iLODControl* GetStaticLOD () = 0;
00697 
00702   virtual void AddMeshToStaticLOD (int lod, iMeshWrapper* mesh) = 0;
00703 
00708   virtual void RemoveMeshFromStaticLOD (iMeshWrapper* mesh) = 0;
00709 
00713   virtual iShaderVariableContext* GetSVContext() = 0;
00714 };
00715 
00741 struct iMeshFactoryWrapper : public virtual iBase
00742 {
00743   SCF_INTERFACE(iMeshFactoryWrapper, 2,0,0);
00745   virtual iObject *QueryObject () = 0;
00747   virtual iMeshObjectFactory* GetMeshObjectFactory () const = 0;
00749   virtual void SetMeshObjectFactory (iMeshObjectFactory* fact) = 0;
00759   virtual void HardTransform (const csReversibleTransform& t) = 0;
00764   virtual iMeshWrapper* CreateMeshWrapper () = 0;
00765 
00770   virtual iMeshFactoryWrapper* GetParentContainer () const = 0;
00775   virtual void SetParentContainer (iMeshFactoryWrapper *p) = 0;
00776 
00780   virtual iMeshFactoryList* GetChildren () = 0;
00781 
00785   virtual csReversibleTransform& GetTransform () = 0;
00786 
00790   virtual void SetTransform (const csReversibleTransform& tr) = 0;
00791 
00798   virtual iLODControl* CreateStaticLOD () = 0;
00799 
00803   virtual void DestroyStaticLOD () = 0;
00804 
00810   virtual iLODControl* GetStaticLOD () = 0;
00811 
00819   virtual void SetStaticLOD (float m, float a) = 0;
00820 
00824   virtual void GetStaticLOD (float& m, float& a) const = 0;
00825 
00830   virtual void AddFactoryToStaticLOD (int lod, iMeshFactoryWrapper* fact) = 0;
00831 
00836   virtual void RemoveFactoryFromStaticLOD (iMeshFactoryWrapper* fact) = 0;
00837 
00847   virtual void SetZBufMode (csZBufMode mode) = 0;
00851   virtual csZBufMode GetZBufMode () const = 0;
00856   virtual void SetZBufModeRecursive (csZBufMode mode) = 0;
00857 
00873   virtual void SetRenderPriority (long rp) = 0;
00877   virtual long GetRenderPriority () const = 0;
00878 
00883   virtual void SetRenderPriorityRecursive (long rp) = 0;
00884 
00888   virtual iShaderVariableContext* GetSVContext() = 0;
00889 };
00890 
00901 struct iMeshList : public virtual iBase
00902 {
00903   SCF_INTERFACE(iMeshList, 2,0,0);
00905   virtual int GetCount () const = 0;
00906 
00908   virtual iMeshWrapper *Get (int n) const = 0;
00909 
00911   virtual int Add (iMeshWrapper *obj) = 0;
00912 
00914   virtual bool Remove (iMeshWrapper *obj) = 0;
00915 
00917   virtual bool Remove (int n) = 0;
00918 
00920   virtual void RemoveAll () = 0;
00921 
00923   virtual int Find (iMeshWrapper *obj) const = 0;
00924 
00930   virtual iMeshWrapper *FindByName (const char *Name) const = 0;
00931 };
00932 
00943 struct iMeshFactoryList : public virtual iBase
00944 {
00945   SCF_INTERFACE(iMeshFactoryList,2,0,0);
00947   virtual int GetCount () const = 0;
00948 
00950   virtual iMeshFactoryWrapper *Get (int n) const = 0;
00951 
00953   virtual int Add (iMeshFactoryWrapper *obj) = 0;
00954 
00956   virtual bool Remove (iMeshFactoryWrapper *obj) = 0;
00957 
00959   virtual bool Remove (int n) = 0;
00960 
00962   virtual void RemoveAll () = 0;
00963 
00965   virtual int Find (iMeshFactoryWrapper *obj) const = 0;
00966 
00968   virtual iMeshFactoryWrapper *FindByName (const char *Name) const = 0;
00969 };
00970 
00978 struct iMeshWrapperIterator : public virtual iBase
00979 {
00980   SCF_INTERFACE(iMeshWrapperIterator,2,0,0);
00982   virtual iMeshWrapper* Next () = 0;
00983 
00985   virtual void Reset () = 0;
00986 
00988   virtual bool HasNext () const = 0;
00989 };
00990 
00991 
00994 #endif // __CS_IENGINE_MESH_H__
00995 

Generated for Crystal Space by doxygen 1.4.6