Просмотр исходного кода

Bugfix: Fixing a crash when adding a joint to the scene
- Added nullchecks when retrieving components/scene-objects using auto-generated script bindings

BearishSun 7 лет назад
Родитель
Сommit
58b014880d

+ 3 - 2
Source/Scripting/SBansheeEngine/Generated/BsScriptCJoint.generated.cpp

@@ -49,8 +49,9 @@ namespace bs
 		tmp__output = static_object_cast<CJoint>(thisPtr->getComponent())->getBody(body);
 		tmp__output = static_object_cast<CJoint>(thisPtr->getComponent())->getBody(body);
 
 
 		MonoObject* __output;
 		MonoObject* __output;
-		ScriptComponentBase* script__output;
-		script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(tmp__output);
+		ScriptComponentBase* script__output = nullptr;
+		if(tmp__output)
+				script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(tmp__output);
 		if(script__output != nullptr)
 		if(script__output != nullptr)
 			__output = script__output->getManagedInstance();
 			__output = script__output->getManagedInstance();
 		else
 		else

+ 3 - 2
Source/Scripting/SBansheeEngine/Generated/BsScriptCollisionData.generated.cpp

@@ -67,8 +67,9 @@ namespace bs
 		ScriptArray arraycollider = ScriptArray::create<ScriptCCollider>(arraySizecollider);
 		ScriptArray arraycollider = ScriptArray::create<ScriptCCollider>(arraySizecollider);
 		for(int i = 0; i < arraySizecollider; i++)
 		for(int i = 0; i < arraySizecollider; i++)
 		{
 		{
-			ScriptComponentBase* scriptcollider;
-			scriptcollider = ScriptGameObjectManager::instance().getBuiltinScriptComponent(value.collider[i]);
+			ScriptComponentBase* scriptcollider = nullptr;
+			if(value.collider[i])
+						scriptcollider = ScriptGameObjectManager::instance().getBuiltinScriptComponent(value.collider[i]);
 				if(scriptcollider != nullptr)
 				if(scriptcollider != nullptr)
 				arraycollider.set(i, scriptcollider->getManagedInstance());
 				arraycollider.set(i, scriptcollider->getManagedInstance());
 			else
 			else

+ 3 - 2
Source/Scripting/SBansheeEngine/Generated/BsScriptControllerColliderCollision.generated.cpp

@@ -47,8 +47,9 @@ namespace bs
 	__ControllerColliderCollisionInterop ScriptControllerColliderCollision::toInterop(const ControllerColliderCollision& value)
 	__ControllerColliderCollisionInterop ScriptControllerColliderCollision::toInterop(const ControllerColliderCollision& value)
 	{
 	{
 		__ControllerColliderCollisionInterop output;
 		__ControllerColliderCollisionInterop output;
-		ScriptComponentBase* scriptcollider;
-		scriptcollider = ScriptGameObjectManager::instance().getBuiltinScriptComponent(value.collider);
+		ScriptComponentBase* scriptcollider = nullptr;
+		if(value.collider)
+				scriptcollider = ScriptGameObjectManager::instance().getBuiltinScriptComponent(value.collider);
 		MonoObject* tmpcollider;
 		MonoObject* tmpcollider;
 		if(scriptcollider != nullptr)
 		if(scriptcollider != nullptr)
 			tmpcollider = scriptcollider->getManagedInstance();
 			tmpcollider = scriptcollider->getManagedInstance();

+ 3 - 2
Source/Scripting/SBansheeEngine/Generated/BsScriptControllerControllerCollision.generated.cpp

@@ -46,8 +46,9 @@ namespace bs
 	__ControllerControllerCollisionInterop ScriptControllerControllerCollision::toInterop(const ControllerControllerCollision& value)
 	__ControllerControllerCollisionInterop ScriptControllerControllerCollision::toInterop(const ControllerControllerCollision& value)
 	{
 	{
 		__ControllerControllerCollisionInterop output;
 		__ControllerControllerCollisionInterop output;
-		ScriptComponentBase* scriptcontroller;
-		scriptcontroller = ScriptGameObjectManager::instance().getBuiltinScriptComponent(value.controller);
+		ScriptComponentBase* scriptcontroller = nullptr;
+		if(value.controller)
+				scriptcontroller = ScriptGameObjectManager::instance().getBuiltinScriptComponent(value.controller);
 		MonoObject* tmpcontroller;
 		MonoObject* tmpcontroller;
 		if(scriptcontroller != nullptr)
 		if(scriptcontroller != nullptr)
 			tmpcontroller = scriptcontroller->getManagedInstance();
 			tmpcontroller = scriptcontroller->getManagedInstance();

+ 12 - 8
Source/Scripting/SBansheeEngine/Generated/BsScriptPhysics.generated.cpp

@@ -340,8 +340,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptCCollider>(arraySize__output);
 		ScriptArray array__output = ScriptArray::create<ScriptCCollider>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		for(int i = 0; i < arraySize__output; i++)
 		{
 		{
-			ScriptComponentBase* script__output;
-			script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(vec__output[i]);
+			ScriptComponentBase* script__output = nullptr;
+			if(vec__output[i])
+						script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(vec__output[i]);
 			if(script__output != nullptr)
 			if(script__output != nullptr)
 				array__output.set(i, script__output->getManagedInstance());
 				array__output.set(i, script__output->getManagedInstance());
 			else
 			else
@@ -362,8 +363,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptCCollider>(arraySize__output);
 		ScriptArray array__output = ScriptArray::create<ScriptCCollider>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		for(int i = 0; i < arraySize__output; i++)
 		{
 		{
-			ScriptComponentBase* script__output;
-			script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(vec__output[i]);
+			ScriptComponentBase* script__output = nullptr;
+			if(vec__output[i])
+						script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(vec__output[i]);
 			if(script__output != nullptr)
 			if(script__output != nullptr)
 				array__output.set(i, script__output->getManagedInstance());
 				array__output.set(i, script__output->getManagedInstance());
 			else
 			else
@@ -384,8 +386,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptCCollider>(arraySize__output);
 		ScriptArray array__output = ScriptArray::create<ScriptCCollider>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		for(int i = 0; i < arraySize__output; i++)
 		{
 		{
-			ScriptComponentBase* script__output;
-			script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(vec__output[i]);
+			ScriptComponentBase* script__output = nullptr;
+			if(vec__output[i])
+						script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(vec__output[i]);
 			if(script__output != nullptr)
 			if(script__output != nullptr)
 				array__output.set(i, script__output->getManagedInstance());
 				array__output.set(i, script__output->getManagedInstance());
 			else
 			else
@@ -411,8 +414,9 @@ namespace bs
 		ScriptArray array__output = ScriptArray::create<ScriptCCollider>(arraySize__output);
 		ScriptArray array__output = ScriptArray::create<ScriptCCollider>(arraySize__output);
 		for(int i = 0; i < arraySize__output; i++)
 		for(int i = 0; i < arraySize__output; i++)
 		{
 		{
-			ScriptComponentBase* script__output;
-			script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(vec__output[i]);
+			ScriptComponentBase* script__output = nullptr;
+			if(vec__output[i])
+						script__output = ScriptGameObjectManager::instance().getBuiltinScriptComponent(vec__output[i]);
 			if(script__output != nullptr)
 			if(script__output != nullptr)
 				array__output.set(i, script__output->getManagedInstance());
 				array__output.set(i, script__output->getManagedInstance());
 			else
 			else

+ 3 - 2
Source/Scripting/SBansheeEngine/Generated/BsScriptPhysicsQueryHit.generated.cpp

@@ -54,8 +54,9 @@ namespace bs
 		output.uv = value.uv;
 		output.uv = value.uv;
 		output.distance = value.distance;
 		output.distance = value.distance;
 		output.triangleIdx = value.triangleIdx;
 		output.triangleIdx = value.triangleIdx;
-		ScriptComponentBase* scriptcollider;
-		scriptcollider = ScriptGameObjectManager::instance().getBuiltinScriptComponent(value.collider);
+		ScriptComponentBase* scriptcollider = nullptr;
+		if(value.collider)
+				scriptcollider = ScriptGameObjectManager::instance().getBuiltinScriptComponent(value.collider);
 		MonoObject* tmpcollider;
 		MonoObject* tmpcollider;
 		if(scriptcollider != nullptr)
 		if(scriptcollider != nullptr)
 			tmpcollider = scriptcollider->getManagedInstance();
 			tmpcollider = scriptcollider->getManagedInstance();