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 } }
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; }