示例#1
0
void FileHandler::SaveScene(int maxNameSize, char* sceneName,
	vector<Material*> &materials,
	vector<Transform*> &allTransforms,
	vector<Transform*> &allMeshTransforms,
	vector<Transform*> &allLightTransforms)
{
	//max_Name_Size = maxNameSize;
	int sceneNameSize = CorrectName(sceneName);
	int nrMats = materials.size();
	int nrTransforms = allTransforms.size();
	int nrMeshes = allMeshTransforms.size();
	int nrLights = allLightTransforms.size();

	std::string fileName(sceneName, sceneNameSize-1); //-1 så att inte \0 kommer med
	fileName.append(".drm");
	lastLoadedFileName = fileName;

	ofs.open(fileName, ofstream::out | ofstream::binary);
	if (ofs.is_open() == true) {
		ofs.clear();

		SaveMainHeader(sceneNameSize, sceneName, nrMats, nrTransforms, nrMeshes, nrLights);

		SaveMaterials(nrMats, materials); //måste vara först!
		SaveTransforms(nrTransforms, allTransforms);
		SaveMeshes(nrMeshes, allMeshTransforms);
		SaveLights(nrLights, allLightTransforms);
		
		ofs.close();

		//LoadScene(); //test bara
	}
}
示例#2
0
	bool Model_IO::Save(BinaryWriter& writer, const achar* path)
	{
		// ヘッダー
		uint8_t header[] = "MDL";
		for (int32_t i = 0; i < 4; i++)
		{
			writer.Push(header[i]);
		}

		// バージョン
		writer.Push(0);

		// ボーン
		SaveDeformer(Deformer_, writer, path);

		// メッシュ
		SaveMeshes(Meshes, writer, path);

		// アニメーション
		writer.Push((int32_t)AnimationSources.size());
		
		for (int32_t i = 0; i < AnimationSources.size(); i++)
		{
			SaveAnimationSource(AnimationSources[i], writer, path);
		}

		writer.Push((int32_t) AnimationClips.size());
		for (int32_t i = 0; i <AnimationClips.size(); i++)
		{
			SaveAnimationClip(AnimationClips[i], writer, path);
		}

		return true;
	}