Пример #1
0
void Canvas::changeTerrainFile( const std::string& fileName )
{
	_destroyTerrain();
	_clearTerrain();
	size_t dotPos = fileName.find('.');
	if (dotPos == std::string::npos)
	{
		return;
	}
	std::string suffix = fileName.substr(dotPos, fileName.size() - dotPos);
	std::transform(suffix.begin(), suffix.end(), suffix.begin(), std::tolower);
	if (suffix == ".group")
	{
		_group = new Group;
	}
	else if (suffix == ".entity")
	{
		_group = new Entity;
	} 
	else if(suffix == ".mesh")
	{
		_group = new Geometry;
	}
	else if(suffix == ".mz")
	{
		_group = new MzModel;
	}
	else
	{
		return;
	}
	
	_group->decode(fileName); 
	_createTerrain();
}
Пример #2
0
void Canvas::changeTerrainFile( const std::string& fileName )
{
	_destroyTerrain();
	_clearTerrain();
	_group = new Group;
	_group->decode(fileName);
#if 0
	tinyxml2::XMLDocument doc;
	if (tinyxml2::XML_SUCCESS != doc.LoadFile(fileName.c_str()))
	{
		return;
	}
	tinyxml2::XMLElement* r = doc.RootElement();
	if (NULL == r)
	{
		return;
	}
	tinyxml2::XMLElement* mes = r->FirstChildElement("entity");
	if (NULL == mes)
	{
		return;
	}
	_terrainMeshName = mes->Attribute("file");

	tinyxml2::XMLElement* mat = r->FirstChildElement("material");
	if (NULL == mat)
	{
		_terrainMaterialName = "shader/aPT.fx";
		_terrainMaterialName = "image/00.dds";
	}
	else
	{
		_terrainMaterialName = mat->Attribute("shader");
		tinyxml2::XMLElement* tex = mat->FirstChildElement("texture");
		if (tex)
		{
			TextureFilePair p;
			p.first = tex->Attribute("name");
			p.second = tex->Attribute("value");
			_textureFiles.push_back(p);
		}
	}

	_terrainFileName = fileName;
#endif
	_createTerrain();
}