コード例 #1
0
ファイル: OgreExporter.cpp プロジェクト: jlsandell/wadlib
void OgreExporter_c::ExportLevelMaterials(const WadLevel_c &level, const WadFile_c &file)
{
	this->ExportWalls(level, file);

	fs::path materialPath(strMaterialScriptsDirectory);
	materialPath /= fs::path(file.GetFileName()).filename();

	std::string finalFileName = materialPath.string();
	finalFileName += ".material";

	std::ofstream materialFile(finalFileName.c_str());

	BOOST_FOREACH(Name_u name, setExportedTextures)
	{
		materialFile << "material " << name.ToString() << "\n";
		materialFile << "{\n";
			materialFile << "\ttechnique\n";
			materialFile << "\t{\n";
				materialFile << "\t\tpass\n";
				materialFile << "\t\t{\n";
					materialFile << "\t\t\ttexture_unit\n";
					materialFile << "\t\t\t{\n";
						materialFile << "\t\t\t\ttexture " << name.ToString() << ".bmp\n";
					materialFile << "\t\t\t}\n";
				materialFile << "\t\t}\n";
			materialFile << "\t}\n";							
		materialFile << "}\n";
	}
コード例 #2
0
void MaterialManager::addMaterialsFrom(std::string materialFileName)
{
	std::ifstream materialFile(materialFileName);

	ErrorLog * elInst = ErrorLog::getInstance();

	if (!materialFile.good())
	{
		elInst->logFatalError("Couldn't open: " + materialFileName);
	}

	// TextureManager * tmInstance = TextureManager::getInstance();

	// No Textures!


	std::string currentBit = "";
	NamedMaterial * tmpM = nullptr;
	while (!materialFile.eof())
	{
		materialFile >> currentBit;
		if (currentBit == "newmtl")
		{
			if (tmpM != nullptr)
			{
				m_materials.push_back(tmpM);
			}
			tmpM = new NamedMaterial();
			materialFile >> tmpM->Name;

			if (!isNameAvailable(tmpM->Name))
			{
				// message box about the name conflict
				
				elInst->logMinorError("Material name conflict, " + tmpM->Name + " already defined in the material manager (this is to be expected if the models use the same material, the first difinition encountered will be used)");


				std::string skipedData = "";
				while (skipedData != "newmtl")
				{
					materialFile >> skipedData;
					// could resch the end of the file
					if (materialFile.eof())
					{
						delete tmpM;
						tmpM = nullptr;
						break;
						break;
					}
				}

				delete tmpM;
				tmpM = nullptr;


				tmpM = new NamedMaterial();
				materialFile >> tmpM->Name;
			}
		}
		else if (currentBit == "Ka")
コード例 #3
0
ファイル: nodachi2D.cpp プロジェクト: kamisori/nodachi2D
void nodachi2D::loadLevel()
{
    std::string visualAppearancesFile ( "data/visualAppearances.data" );
    std::string materialFile ( "data/materials.data" );
    std::string objectFile ( "data/spacialObjects.data" );

    this->globalGameObjectManager_->loadVisualAppearances( visualAppearancesFile );
    this->globalGameObjectManager_->loadMaterials( materialFile );
    this->globalGameObjectManager_->loadObjects( objectFile );
}
コード例 #4
0
ファイル: kajiya2D.cpp プロジェクト: kamisori/kajiya2D
void kajiya2D::loadLevelData( std::string worldname, std::string levelname )
{
    std::string visualAppearancesFile ( "data/visualAppearances.data" );
    std::string materialFile ( "data/materials.data" );
    std::string objectFile ( "data/spacialObjects.data" );

    this->globalGameObjectManager_ = new objects::GameObjectManager();

    this->globalGameObjectManager_->loadVisualAppearances( visualAppearancesFile );
    this->globalGameObjectManager_->loadMaterials( materialFile );
    this->globalGameObjectManager_->loadObjects( objectFile );
}