CrystalSpace

Public API Reference

imesh/haze.h

Go to the documentation of this file.
00001 /*
00002     Copyright (C) 2001 by W.C.A. Wijngaards
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_IMESH_HAZE_H__
00020 #define __CS_IMESH_HAZE_H__
00021 
00026 #include "csutil/scf.h"
00027 
00031 struct iMaterialWrapper;
00032 
00033 class csVector2;
00034 class csVector3;
00035 
00036 SCF_VERSION (iHazeHull, 0, 0, 1);
00037 
00053 struct iHazeHull : public iBase
00054 {
00056   virtual int GetPolygonCount() const = 0;
00058   virtual int GetVerticeCount() const = 0;
00060   virtual int GetEdgeCount() const = 0;
00061 
00063   virtual void GetVertex(csVector3& res, int vertex_idx) const = 0;
00065   virtual void GetEdge(int edge_num, int& vertex_idx_1, int& vertex_idx_2)
00066     const = 0;
00067 
00069   virtual int GetPolVerticeCount(int polygon_num) const = 0;
00071   virtual int GetPolVertex(int polygon_num, int vertex_num) const = 0;
00077   virtual int GetPolEdge(int polygon_num, int vertex_num, int& start_idx,
00078     int& end_idx) const = 0;
00079 };
00080 
00081 SCF_VERSION (iHazeHullBox, 0, 0, 1);
00082 
00086 struct iHazeHullBox : public iBase
00087 {
00089   virtual void GetSettings(csVector3& min, csVector3& max) = 0;
00090 };
00091 
00092 SCF_VERSION (iHazeHullCone, 0, 0, 1);
00093 
00097 struct iHazeHullCone : public iBase
00098 {
00100   virtual void GetSettings(int &nr, csVector3& a, csVector3& b, float &ra,
00101         float &rb) = 0;
00102 };
00103 
00104 SCF_VERSION (iHazeHullCreation, 0, 0, 2);
00105 
00110 struct iHazeHullCreation : public iBase
00111 {
00113   virtual csRef<iHazeHullBox> CreateBox(const csVector3& min,
00114     const csVector3& max) const = 0;
00116   virtual csRef<iHazeHullCone> CreateCone(int nr_sides, const csVector3& start,
00117     const csVector3& end, float srad, float erad) const = 0;
00118 };
00119 
00120 SCF_VERSION (iHazeFactoryState, 0, 0, 1);
00121 
00129 struct iHazeFactoryState : public iBase
00130 {
00132   virtual void SetMaterialWrapper (iMaterialWrapper* material) = 0;
00134   virtual iMaterialWrapper* GetMaterialWrapper () const = 0;
00136   virtual void SetMixMode (uint mode) = 0;
00138   virtual uint GetMixMode () const = 0;
00139 
00141   virtual void SetOrigin(const csVector3& pos) = 0;
00143   virtual const csVector3& GetOrigin() const = 0;
00144 
00146   virtual void SetDirectional(const csVector3& pos) = 0;
00148   virtual const csVector3& GetDirectional() const = 0;
00149 
00151   virtual int GetLayerCount() const = 0;
00153   virtual void AddLayer(iHazeHull *hull, float scale) = 0;
00155   virtual void SetLayerHull(int layer, iHazeHull* hull) = 0;
00157   virtual iHazeHull* GetLayerHull(int layer) const = 0;
00159   virtual void SetLayerScale(int layer, float scale) = 0;
00161   virtual float GetLayerScale(int layer) const = 0;
00162 };
00163 
00164 SCF_VERSION (iHazeState, 0, 0, 1);
00165 
00170 struct iHazeState : public iHazeFactoryState
00171 {
00172 };
00173 
00176 #endif // __CS_IMESH_HAZE_H__
00177 

Generated for Crystal Space by doxygen 1.4.6