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

📄 sceneconverteroctreeobjects.h

📁 使用stl技术,(还没看,是听说的)
💻 H
字号:
#ifndef _SCENE_OCTREE_OBJECTS_H
#define _SCENE_OCTREE_OBJECTS_H

#include "Ogre.h"
#include <vector>

using namespace Ogre;

struct UVSet
{
	std::vector <float> u, v;

	void Unload(){
		if( !u.empty() ){
			u.erase( u.begin() , u.end() );
		}
		if( !v.empty() ){
			v.erase( v.begin() , v.end() );
		}
	}
};

class SceneOctreeMesh
{
public:
	SceneOctreeMesh();
	//SceneOctreeMesh& operator=( const SceneOctreeMesh& Source );

	Ogre::Vector3 GetFaceCenter( int FaceIndex, std::vector <Ogre::Vector3> &SharedVertData );

	// Used to Contactenate 2 Meshes together
	void Concatenate( SceneOctreeMesh *Source );

	// Used to remove redundant and unused vertices
	void Condense(int CurOctreeDepth);

	void LoadData( SubMesh* Source, Vector3 NewPos, Quaternion NewRot, Vector3 NewScale  );
	void LoadVertexData( const Ogre::VertexData* NewVertexData, Vector3 NewPos, Quaternion NewRot, Vector3 NewScale  );
	void LoadTriData( std::vector <int> &NewTriData, int* HasTri );
	void Unload();

	int TotalVerts;
	std::vector <Ogre::Vector3> VertData;

	int TotalNormals;
	std::vector <Ogre::Vector3> NormData;

	int TotalColors;
	std::vector <Ogre::ColourValue> ColorData;

	int TotalTris;
	std::vector <int> TriData;

	//int TotalUVs;
	int TotalUVSets;
	std::vector <UVSet*> UVData;

	char* MeshName;
	char* MaterialName;
	char* MaterialFileName;
};


struct SceneOctreeNode
{
	SceneOctreeNode();
	int GetTriTotal();
	void CalculateDimensions( std::vector <SceneOctreeMesh*> &SharedGeometry );

	int HasChildren;

	float Wide, High, Depth;
	float CenterPos[3];

	int TotalMeshes;
	std::vector <SceneOctreeMesh*> MeshData;

	// The Octree Branches
	SceneOctreeNode *Branch[8];

	void Unload();
};

#endif

⌨️ 快捷键说明

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