📄 sceneoctree.h
字号:
#ifndef __SCENE_OCTREE_H_
#define __SCENE_OCTREE_H_
#include "Ogre.h"
#include "stdio.h"
#include <vector>
#include <tinyxml.h>
#include "OgreStringConverter.h"
#include "SceneOctreeRenderable.h"
#include <vector>
using namespace Ogre;
struct SharedGeometryData{
VertexData* VertData;
Real* PhysVertData;
String MaterialName;
};
class SceneOctree
{
public:
SceneOctree();
~SceneOctree();
// Load the <Octree> Data
int Load( TiXmlElement *Element );
void Unload();
// Must be called before Load is called //
void SetSceneManager( SceneManager *NewSceneManager ){
mSceneManager = NewSceneManager;
}
void SetRootNode( SceneNode* ParentNode ){
RootNode = ParentNode->createChildSceneNode();
}
int GetTotalMeshes( void ){
return TotalOctreeMeshes;
}
void SetOctreeVisible( int Value );
float* GetVerticesPtr( int MeshIndex );
int* GetIndexPtr( int MeshIndex );
int GetNumVertices( int MeshIndex );
int GetNumIndex( int MeshIndex );
std::vector <SceneOctreeRenderable*> GetAllRenderables( void );
private:
int OctreeVisible;
enum BranchID{
TopFrontLeft,
TopFrontRight,
TopRearLeft,
TopRearRight,
BottomFrontLeft,
BottomFrontRight,
BottomRearLeft,
BottomRearRight
};
// Load Functions //
void ReadNode( Ogre::SceneNode *ParentNode, TiXmlElement* CurElement );
void LoadSharedGeometry( TiXmlElement* XMLSharedGeometry );
void GetSharedPointers( Real *(&pPos), Real *(&pNorm), Real *(&pColor), Real *(&pTex), int, int, int, int, VertexBufferBinding* );
FILE* fpBin;
DataChunk chunk;
int TotalOctreeMeshes;
SceneNode *RootNode;
SceneManager *mSceneManager;
std::vector <SceneOctreeRenderable*> RenderableArray;
std::vector <SceneNode*> SceneNodeArray;
// All vertex information is shared from here. Each Mesh in the octree has a pointer
// to the correct VertexData pointer in this array.
std::vector<SharedGeometryData*> SharedVertData;
// Unused for now
//String Name;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -