bool SceneSerializer::DeserializeScene(IScene* scene, const std::string& fileName, const std::string& refCollection/* = std::string("")*/, bool flushDataMan /*=false*/, bool flushScene/* = false*/) { /*PxDataManSerializeOptions serialOptions = PxDataManSerializeOptions(PxDataManSerializeOptions::ALL, PxDataCollection, true, fileName);*/ bool errorsDetected = false; if(flushDataMan) PhysXDataManager::GetSingletonPtr()->ReleaseAll(); if(flushScene) scene->GetPhysXScene()->flushSimulation(); errorsDetected = !PhysXSerializerWrapper::CreateSerializer(); /* if(!errorsDetected) errorsDetected = !PhysXDataManager::GetSingletonPtr()->DeserializeData(serialOptions); if(!errorsDetected) errorsDetected = !PhysXSerializerWrapper::AddToScene(scene->GetPhysXScene(), PxDataCollection);*/ if(!errorsDetected) errorsDetected = !PhysXSerializerWrapper::DeserializeFromBinary(fileName + "Actors.pbd", ActorCollection, refCollection); //PhysXSerializerWrapper::CompleteCollection(ActorCollection, refCollection); //if(!errorsDetected) // errorsDetected = !PhysXSerializerWrapper::AddToScene(scene->GetPhysXScene(), ActorCollection); XMLReader reader = XMLReader(); errorsDetected = !reader.OpenFile(fileName + "Actors.xml"); if(!errorsDetected) { std::string currName; do { currName = reader.GetCurrentNodeName(); if(currName == GameObjectNode)//If dissecting a game object { //try loading the object and if successful, add it to the scene SharedGameObject loadedObject = DeserializedGameObject(reader, scene); if(loadedObject) { scene->AddGameObject(loadedObject); loadedObject->Start(); } else errorsDetected = true; } } while (reader.MoveToNextSiblingNode()); } //PhysXSerializerWrapper::ReleaseCollection(ActorCollection); PhysXSerializerWrapper::DestroySerializer(); return !errorsDetected; }