[Bf-blender-cvs] [b3808a4] master: BGE: Fix ray cast with unfound property.
Porteries Tristan
noreply at git.blender.org
Thu Nov 26 19:53:47 CET 2015
Commit: b3808a4e065bf5007da3c74e27500fbbda809a01
Author: Porteries Tristan
Date: Thu Nov 26 19:54:27 2015 +0100
Branches: master
https://developer.blender.org/rBb3808a4e065bf5007da3c74e27500fbbda809a01
BGE: Fix ray cast with unfound property.
To return a valid ray cast result the object must not be NULL and KX_RayCast::RayTest must return true.
===================================================================
M source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index 5e66250..412a112 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -3736,8 +3736,9 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCastTo,
RayCastData rayData(propName, false, (1 << OB_MAX_COL_MASKS) - 1);
KX_RayCast::Callback<KX_GameObject, RayCastData> callback(this, spc, &rayData);
- if (KX_RayCast::RayTest(pe, fromPoint, toPoint, callback))
+ if (KX_RayCast::RayTest(pe, fromPoint, toPoint, callback) && rayData.m_hitObject) {
return rayData.m_hitObject->GetProxy();
+ }
Py_RETURN_NONE;
}
@@ -3883,8 +3884,7 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
RayCastData rayData(propName, xray, mask);
KX_RayCast::Callback<KX_GameObject, RayCastData> callback(this, spc, &rayData, face, (poly == 2));
- if (KX_RayCast::RayTest(pe, fromPoint, toPoint, callback))
- {
+ if (KX_RayCast::RayTest(pe, fromPoint, toPoint, callback) && rayData.m_hitObject) {
PyObject *returnValue = (poly == 2) ? PyTuple_New(5) : (poly) ? PyTuple_New(4) : PyTuple_New(3);
if (returnValue) { // unlikely this would ever fail, if it does python sets an error
PyTuple_SET_ITEM(returnValue, 0, rayData.m_hitObject->GetProxy());
More information about the Bf-blender-cvs
mailing list