Browse Source

Bugfix: Don't assert if SceneHandles.BeginInput hasn't been called before a call to SceneHandles.Draw

BearishSun 6 years ago
parent
commit
fe38678dc4

+ 14 - 4
Source/EditorScript/BsScriptHandleManager.cpp

@@ -33,7 +33,7 @@ namespace bs
 		mDomainLoadConn.disconnect();
 	}
 
-	void ScriptHandleManager::triggerPreInput()
+	void ScriptHandleManager::updateHandles()
 	{
 		// Activate global handles
 		for(auto& handle : mGlobalHandlesToCreate)
@@ -108,8 +108,14 @@ namespace bs
 			mDefaultHandleManagerGCHandle = MonoUtil::newGCHandle(defaultHandleManager);
 			mDefaultHandleManager = MonoUtil::getObjectFromGCHandle(mDefaultHandleManagerGCHandle);
 		}
+	}
+
+	void ScriptHandleManager::triggerPreInput()
+	{
+		updateHandles();
 
-		callPreInput(mDefaultHandleManager);
+		if(mDefaultHandleManager)
+			callPreInput(mDefaultHandleManager);
 
 		for (auto& handle : mActiveGlobalHandles)
 			callPreInput(handle.object);
@@ -120,7 +126,8 @@ namespace bs
 
 	void ScriptHandleManager::triggerPostInput()
 	{
-		callPostInput(mDefaultHandleManager);
+		if(mDefaultHandleManager)
+			callPostInput(mDefaultHandleManager);
 
 		for (auto& handle : mActiveGlobalHandles)
 			callPostInput(handle.object);
@@ -131,7 +138,10 @@ namespace bs
 
 	void ScriptHandleManager::queueDrawCommands()
 	{
-		callDraw(mDefaultHandleManager);
+		updateHandles();
+
+		if(mDefaultHandleManager)
+			callDraw(mDefaultHandleManager);
 
 		for (auto& handle : mActiveGlobalHandles)
 			callDraw(handle.object);

+ 3 - 0
Source/EditorScript/BsScriptHandleManager.h

@@ -59,6 +59,9 @@ namespace bs
 		/** @copydoc HandleManager::queueDrawCommands */
 		void queueDrawCommands() override;
 
+		/** Creates or destroys handle objects depending on the current selection. */
+		void updateHandles();
+
 		/**   
 		 * Clears references to all managed types and objects. Must be called before loadAssemblyData() if 
 		 * loadAssemblyData() was called previously.

+ 1 - 1
Source/bsf

@@ -1 +1 @@
-Subproject commit dc6d8bf9aabd0bcc1ad82535d20bcf1632bca80e
+Subproject commit 7ee8d19a0ddb377b2869124c893ed92f079f9bf3