⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sceneconverteroctree.h

📁 使用stl技术,(还没看,是听说的)
💻 H
字号:
#include "Ogre.h"
#include "stdio.h"
#include <vector>
#include <tinyxml.h>
#include "OgreStringConverter.h"
#include "SceneConverterOctreeObjects.h"

namespace Ogre{

class SceneConverterOctree
{
public:
	SceneConverterOctree();
	~SceneConverterOctree();

	void SetMaxDepth( int NewDepth );
	void SetMaxTriPerNode( int NewTriPerNode );

	int Save( TiXmlElement *OctreeRoot, const String& BinFilename );
	void Unload();

	void AddMesh( Ogre::Mesh *Source, Vector3 NewPos, Quaternion NewRot, Vector3 NewScale );
	/*
	int AddGeometry( int TotalVerts, float* VertData,
					 int TotalTris, int* TriData,
					 float* NormalData=NULL,
					 float* ColorData=NULL,
					 int TotalTexSets=1, float* TexData=NULL,
					 char* Material=NULL, char* Texture=NULL );
	*/

	// Decompiles the Octree Data Back to the Data Root Node
	//void Decompile();
	// Recompiles the Octree
	void Compile();

private:

	enum BranchID{
		TopFrontLeft,
		TopFrontRight,
		TopRearLeft,
		TopRearRight,
		BottomFrontLeft,
		BottomFrontRight,
		BottomRearLeft,
		BottomRearRight
	};

	// Save Functions and Data //
	int CurOctreeDepth, MaxOctreeDepth;
	int CurTriPerNode,  MaxTriPerNode;

	// Octree Data Structures
	SceneOctreeNode *DataRootNode;

	void SaveXMLNode( TiXmlElement *XMLParentNode, SceneOctreeNode *ParentNode, SceneOctreeNode *CurNode );
	void SaveXMLSharedGeometry( TiXmlElement *XMLOctree );

	void ProcessNode( SceneOctreeNode *ParentNode , SceneOctreeNode *CurNode );
	void DivideNode( SceneOctreeNode *ParentNode );
	void CreateNewNode( SceneOctreeNode *ParentNode, BranchID BranchName, int* HasTri );

	Ogre::SceneNode	*RootNode;
	FILE	*fpXML, *fpBin, *fpResults;
	int		CurBinOffset, TotalOctreeMeshes, TotalOctreeTriangles, TotalOctreeNodes;
	int		MinTriMesh, MaxTriMesh, MinTriNode, MaxTriNode;

	std::vector <SceneOctreeMesh*> SharedGeometry;

	void PopulateRootNode( void );

};

} // namespace Ogre

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -