bool RuntimeScene::LoadFromSceneAndCustomInstances( const gd::Layout & scene, const gd::InitialInstancesContainer & instances ) { std::cout << "Loading RuntimeScene from a scene."; if (!game) { std::cout << "..No valid gd::Project associated to the RuntimeScene. Aborting loading." << std::endl; return false; } //Copy inherited scene Scene::operator=(scene); //Clear RuntimeScene datas objectsInstances.Clear(); timeManager.Reset(); std::cout << "."; codeExecutionEngine->runtimeContext.scene = this; inputManager.DisableInputWhenFocusIsLost(IsInputDisabledWhenFocusIsLost()); //Initialize variables variables = scene.GetVariables(); //Initialize layers std::cout << "."; layers.clear(); sf::View defaultView( sf::FloatRect( 0.0f, 0.0f, game->GetMainWindowDefaultWidth(), game->GetMainWindowDefaultHeight() ) ); for (std::size_t i = 0;i<GetLayersCount();++i) { layers.push_back(RuntimeLayer(GetLayer(i), defaultView)); } //Create object instances which are originally positioned on scene std::cout << "."; CreateObjectsFrom(instances); //Behaviors shared data std::cout << "."; behaviorsSharedDatas.LoadFrom(scene.behaviorsInitialSharedDatas); std::cout << "."; //Extensions specific initialization for (std::size_t i = 0;i<game->GetUsedExtensions().size();++i) { std::shared_ptr<gd::PlatformExtension> gdExtension = CppPlatform::Get().GetExtension(game->GetUsedExtensions()[i]); std::shared_ptr<ExtensionBase> extension = std::dynamic_pointer_cast<ExtensionBase>(gdExtension); if ( extension != std::shared_ptr<ExtensionBase>() ) { extension->SceneLoaded(*this); if ( extension->ToBeNotifiedOnObjectDeletion() ) extensionsToBeNotifiedOnObjectDeletion.push_back(extension.get()); } } std::cout << "."; if ( StopSoundsOnStartup() ) {game->GetSoundManager().ClearAllSoundsAndMusics(); } if ( renderWindow ) renderWindow->setTitle(GetWindowDefaultTitle()); std::cout << " Done." << std::endl; return true; }
void RuntimeScene::ChangeRenderWindow(sf::RenderWindow * newWindow) { renderWindow = newWindow; inputManager.SetWindow(newWindow); if (!renderWindow) return; renderWindow->setTitle(GetWindowDefaultTitle()); SetupOpenGLProjection(); }
void RuntimeScene::ChangeRenderWindow(sf::RenderWindow * newWindow) { renderWindow = newWindow; inputManager.SetWindow(newWindow); if (!renderWindow) return; renderWindow->setTitle(GetWindowDefaultTitle()); if(game) { renderWindow->setFramerateLimit(game->GetMaximumFPS()); renderWindow->setVerticalSyncEnabled(game->IsVerticalSynchronizationEnabledByDefault()); } SetupOpenGLProjection(); }
void Layout::SerializeTo(SerializerElement & element) const { element.SetAttribute( "name", GetName()); element.SetAttribute( "mangledName", GetMangledName()); element.SetAttribute( "r", (int)GetBackgroundColorRed() ); element.SetAttribute( "v", (int)GetBackgroundColorGreen() ); element.SetAttribute( "b", (int)GetBackgroundColorBlue() ); element.SetAttribute( "title", GetWindowDefaultTitle()); element.SetAttribute( "oglFOV", oglFOV ); element.SetAttribute( "oglZNear", oglZNear ); element.SetAttribute( "oglZFar", oglZFar ); element.SetAttribute( "standardSortMethod", standardSortMethod); element.SetAttribute( "stopSoundsOnStartup", stopSoundsOnStartup); element.SetAttribute( "disableInputWhenNotFocused", disableInputWhenNotFocused); #if defined(GD_IDE_ONLY) && !defined(GD_NO_WX_GUI) GetAssociatedLayoutEditorCanvasOptions().SerializeTo(element.AddChild("uiSettings")); #endif ObjectGroup::SerializeTo(GetObjectGroups(), element.AddChild("objectsGroups")); GetVariables().SerializeTo(element.AddChild("variables")); GetInitialInstances().SerializeTo(element.AddChild("instances")); SerializeObjectsTo(element.AddChild("objects")); gd::EventsListSerialization::SerializeEventsTo(events, element.AddChild("events")); SerializerElement & layersElement = element.AddChild("layers"); layersElement.ConsiderAsArrayOf("layer"); for ( std::size_t j = 0;j < GetLayersCount();++j ) GetLayer(j).SerializeTo(layersElement.AddChild("layer")); SerializerElement & behaviorDatasElement = element.AddChild("behaviorsSharedData"); behaviorDatasElement.ConsiderAsArrayOf("behaviorSharedData"); for (std::map<gd::String, std::shared_ptr<gd::BehaviorsSharedData> >::const_iterator it = behaviorsInitialSharedDatas.begin(); it != behaviorsInitialSharedDatas.end();++it) { SerializerElement & dataElement = behaviorDatasElement.AddChild("behaviorSharedData"); dataElement.SetAttribute("type", it->second->GetTypeName()); dataElement.SetAttribute("name", it->second->GetName()); it->second->SerializeTo(dataElement); } }