Rigs of Rods 2023.09
Soft-body Physics Simulation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
MeshManager.h
Go to the documentation of this file.
1/*
2--------------------------------------------------------------------------------
3This source file is part of SkyX.
4Visit http://www.paradise-studios.net/products/skyx/
5
6Copyright (C) 2009-2012 Xavier Vergu�n Gonz�lez <xavyiy@gmail.com>
7
8This program is free software; you can redistribute it and/or modify it under
9the terms of the GNU Lesser General Public License as published by the Free Software
10Foundation; either version 2 of the License, or (at your option) any later
11version.
12
13This program is distributed in the hope that it will be useful, but WITHOUT
14ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16
17You should have received a copy of the GNU Lesser General Public License along with
18this program; if not, write to the Free Software Foundation, Inc., 59 Temple
19Place - Suite 330, Boston, MA 02111-1307, USA, or go to
20http://www.gnu.org/copyleft/lesser.txt.
21--------------------------------------------------------------------------------
22*/
23
24#ifndef _SkyX_MeshManager_H_
25#define _SkyX_MeshManager_H_
26
27#include "Prerequisites.h"
28
29namespace SkyX
30{
31 class SkyX;
32
34 {
35 public:
38 struct VERTEX
39 {
40 // Position
41 float x, y, z,
42 // Normalized position
43 nx, ny, nz,
44 // Texture coords
45 u, v,
46 // Opacity
48 };
49
53 MeshManager(SkyX *s);
54
58
62 void create();
63
66 void remove();
67
71 void updateGeometry(Ogre::Camera* cam);
72
76 inline Ogre::MeshPtr getMesh()
77 {
78 return mMesh;
79 }
80
84 inline Ogre::SubMesh* getSubMesh()
85 {
86 return mSubMesh;
87 }
88
92 inline Ogre::Entity* getEntity()
93 {
94 return mEntity;
95 }
96
100 inline const Ogre::String& getMaterialName() const
101 {
102 return mMaterialName;
103 }
104
108 void setMaterialName(const Ogre::String &MaterialName);
109
113 inline Ogre::HardwareVertexBufferSharedPtr &getHardwareVertexBuffer()
114 {
115 return mVertexBuffer;
116 }
117
121 inline Ogre::HardwareIndexBufferSharedPtr &getHardwareIndexBuffer()
122 {
123 return mIndexBuffer;
124 }
125
129 inline Ogre::SceneNode* getSceneNode()
130 {
131 return mSceneNode;
132 }
133
137 inline const bool& isCreated() const
138 {
139 return mCreated;
140 }
141
146 void setGeometryParameters(const int& Steps, const int& Circles);
147
151 inline const int& getSteps() const
152 {
153 return mSteps;
154 }
155
159 inline const int& getCircles() const
160 {
161 return mCircles;
162 }
163
175 void setUnderHorizonParams(const int& UnderHorizonCircles = 15, const bool& UnderHorizonFading = true, const Ogre::Real& UnderHorizonFadingExponent = 1, const Ogre::Real& UnderHorizonFadingMultiplier = 2);
176
180 inline const int& getUnderHorizonCircles() const
181 {
183 }
184
188 inline const bool& getUnderHorizonFading() const
189 {
190 return mUnderHorizonFading;
191 }
192
196 inline const Ogre::Real& getUnderHorizonFadingExponent() const
197 {
199 }
200
204 inline const Ogre::Real& getUnderHorizonFadingMultiplier() const
205 {
207 }
208
214 inline void setRadiusMultiplier(const Ogre::Real& RadiusMultiplier)
215 {
216 mRadiusMultiplier = RadiusMultiplier;
217 }
218
223 const float getSkydomeRadius(Ogre::Camera* c) const;
224
225 private:
228 void _createGeometry();
229
232
234 Ogre::MeshPtr mMesh;
236 Ogre::SubMesh *mSubMesh;
238 Ogre::Entity *mEntity;
239
241 Ogre::HardwareVertexBufferSharedPtr mVertexBuffer;
243 Ogre::HardwareIndexBufferSharedPtr mIndexBuffer;
244
247
252
261
264
266 Ogre::SceneNode* mSceneNode;
267
269 Ogre::String mMaterialName;
270
273 };
274}
275
276#endif
void setRadiusMultiplier(const Ogre::Real &RadiusMultiplier)
Set radius multiplier.
Ogre::MeshPtr getMesh()
Get mesh.
Definition MeshManager.h:76
const int & getUnderHorizonCircles() const
Get under-horizon circles.
const Ogre::String & getMaterialName() const
Get material name.
void setMaterialName(const Ogre::String &MaterialName)
Set mesh material.
int mCircles
Circles.
const int & getSteps() const
Get number of steps.
Ogre::HardwareIndexBufferSharedPtr mIndexBuffer
Index buffer.
Ogre::HardwareVertexBufferSharedPtr & getHardwareVertexBuffer()
Get hardware vertex buffer reference.
Ogre::String mMaterialName
Material name.
Ogre::Entity * getEntity()
Get entity.
Definition MeshManager.h:92
void _createGeometry()
Create geometry.
const Ogre::Real & getUnderHorizonFadingMultiplier() const
Get under-horizon fading multiplier.
const bool & getUnderHorizonFading() const
Get under-horizon fading.
Ogre::Real mUnderHorizonFadingMultiplier
Under-horizon fading multiplier: opacity = saturate(pow(opacity,fading_exp)*fading_multiplier)
void create()
Create our water mesh, geometry, entity, etc...
void remove()
Remove all resources.
const int & getCircles() const
Get number of circles.
bool mUnderHorizonFading
Under-horizon fading.
Ogre::Real mRadiusMultiplier
Radius multiplier.
void updateGeometry(Ogre::Camera *cam)
Update geometry.
Ogre::SubMesh * getSubMesh()
Get sub mesh.
Definition MeshManager.h:84
void setGeometryParameters(const int &Steps, const int &Circles)
Set geometry parameters.
SkyX * mSkyX
Main SkyX pointer.
Ogre::SceneNode * mSceneNode
Ogre::SceneNode pointer.
bool mCreated
Has been create() already called?
void setUnderHorizonParams(const int &UnderHorizonCircles=15, const bool &UnderHorizonFading=true, const Ogre::Real &UnderHorizonFadingExponent=1, const Ogre::Real &UnderHorizonFadingMultiplier=2)
Set under-horizon rendering params.
const bool & isCreated() const
Is _createGeometry() called?
const Ogre::Real & getUnderHorizonFadingExponent() const
Get under-horizon exponent fading.
~MeshManager()
Destructor.
int mUnderHorizonCircles
Under-horizon rendering.
Ogre::SubMesh * mSubMesh
Ogre::Submesh pointer.
const float getSkydomeRadius(Ogre::Camera *c) const
Get skydome radius.
Ogre::MeshPtr mMesh
Ogre::MeshPtr.
Ogre::Real mUnderHorizonFadingExponent
Under-horizon exponent fading (1=linear fading)
Ogre::HardwareVertexBufferSharedPtr mVertexBuffer
Vertex buffer.
VERTEX * mVertices
Vertices.
Ogre::Entity * mEntity
Ogre::Entity pointer.
Ogre::HardwareIndexBufferSharedPtr & getHardwareIndexBuffer()
Get hardware index buffer reference.
Ogre::SceneNode * getSceneNode()
Get the Ogre::SceneNode pointer where Hydrax mesh is attached.