Преглед изворни кода

Properly unload main scene prefab before shutdown so that the system doesn't try to access components from an unloaded plugin
Properly close DX11 fullscreen window

BearishSun пре 10 година
родитељ
комит
8d0343988b

+ 1 - 1
BansheeCore/Source/BsMaterial.cpp

@@ -1169,7 +1169,7 @@ namespace BansheeEngine
 		}
 
 		SPtr<ShaderCore>* shader = new (dataPtr)SPtr<ShaderCore>();
-		if (mShader != nullptr)
+		if (mShader.isLoaded(false))
 			*shader = mShader->getCore();
 		else
 			*shader = nullptr;

+ 1 - 1
BansheeCore/Source/BsMaterialRTTI.cpp

@@ -224,7 +224,7 @@ namespace BansheeEngine
 		std::shared_ptr<MaterialParams> params = any_cast<std::shared_ptr<MaterialParams>>(material->mRTTIData);
 
 		HShader shader = material->getShader();
-		if(shader != nullptr)
+		if(shader.isLoaded(false))
 		{
 			for(auto iter = params->floatParams.begin(); iter != params->floatParams.end(); ++iter)
 			{

+ 3 - 0
BansheeD3D11RenderAPI/Source/BsD3D11RenderWindow.cpp

@@ -33,6 +33,9 @@ namespace BansheeEngine
 
 		props.mActive = false;
 
+		if (props.isFullScreen())
+			mSwapChain->SetFullscreenState(false, nullptr);
+
 		SAFE_RELEASE(mSwapChain);
 		BS_INC_RENDER_STAT_CAT(ResDestroyed, RenderStatObject_SwapChain);
 

+ 8 - 6
Game/Source/Main.cpp

@@ -121,14 +121,16 @@ void runApplication()
 		gResources().registerResourceManifest(manifest);
 	}
 
-	HPrefab mainScene = static_resource_cast<Prefab>(gResources().loadFromUUID(gameSettings->mainSceneUUID));
-	if (mainScene != nullptr)
 	{
-		HSceneObject root = mainScene->instantiate();
-		HSceneObject oldRoot = gSceneManager().getRootNode();
+		HPrefab mainScene = static_resource_cast<Prefab>(gResources().loadFromUUID(gameSettings->mainSceneUUID, false, true, false));
+		if (mainScene != nullptr)
+		{
+			HSceneObject root = mainScene->instantiate();
+			HSceneObject oldRoot = gSceneManager().getRootNode();
 
-		gSceneManager()._setRootNode(root);
-		oldRoot->destroy();
+			gSceneManager()._setRootNode(root);
+			oldRoot->destroy();
+		}
 	}
 
 	Application::instance().runMainLoop();