Moving from using ManualObject to using HardwareBuffers directly.

This commit is contained in:
David Williams
2007-08-14 21:28:35 +00:00
parent 2d92286889
commit 8f70a4edc5
6 changed files with 325 additions and 2 deletions

View File

@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "Constants.h"
#include "MaterialMap.h"
#include "Surface.h"
#include "Triangle.h"
#include "TypeDef.h"
#include "Volume.h"
@ -95,6 +96,8 @@ namespace Ogre
bool manualObjectUpToDate[OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS][OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS][OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS];
bool regionIsHomogenous[OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS][OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS][OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS];
std::map<uchar,Surface*> m_mapSurfaces[OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS][OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS][OGRE_VOLUME_SIDE_LENGTH_IN_REGIONS];
void igniteVoxel(UIntVector3 voxelToIgnite);
private:
@ -115,6 +118,8 @@ namespace Ogre
std::queue<UIntVector3> m_queueVoxelsToBurn;
bool m_bHaveGeneratedMeshes;
//std::string m_aMaterialNames[256];
};
}

30
include/Surface.h Normal file
View File

@ -0,0 +1,30 @@
#ifndef __SURFACE_H__
#define __SURFACE_H__
#include "Ogre.h"
#include <vector>
#include "Triangle.h"
#include "Vertex.h"
namespace Ogre
{
class Surface : public SimpleRenderable
{
public:
Surface();
Surface(const String& material);
~Surface(void);
void setGeometry(std::vector<Vertex> verticesToSet, std::vector<Triangle> indicesToSet);
Real getSquaredViewDepth(const Camera *cam) const;
Real getBoundingRadius(void) const;
protected:
//void getWorldTransforms(Matrix4 *xform) const;
const Quaternion &getWorldOrientation(void) const;
const Vector3 &getWorldPosition(void) const;
};
}
#endif /* __SURFACE_H__ */

54
include/Triangle.h Normal file
View File

@ -0,0 +1,54 @@
/******************************************************************************
This file is part of a voxel plugin for OGRE
Copyright (C) 2006 David Williams
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
******************************************************************************/
#ifndef __Triangle_H__
#define __Triangle_H__
#include "OgrePrerequisites.h"
#include "OgreVector3.h"
namespace Ogre
{
class Triangle
{
public:
//FIXME - maybe these should be short?
ulong v0;
ulong v1;
ulong v2;
Triangle()
:v0(0)
,v1(0)
,v2(0)
{
}
Triangle(uint v0ToSet, uint v1ToSet, uint v2ToSet)
:v0(v0ToSet)
,v1(v1ToSet)
,v2(v2ToSet)
{
}
};
}
#endif