Explorar o código

Return nil if the raycasts don't hit anything (issue #335)

Bart van Strien %!s(int64=13) %!d(string=hai) anos
pai
achega
7c1e1fd0db

+ 2 - 1
src/modules/physics/box2d/Fixture.cpp

@@ -273,7 +273,8 @@ namespace box2d
 		input.maxFraction = maxFraction;
 		b2Transform transform(b2Vec2(x, y), b2Rot(r));
 		b2RayCastOutput output;
-		fixture->RayCast(&output, input, childIndex);
+		if (!fixture->RayCast(&output, input, childIndex))
+			return 0; // Nothing hit.
 		lua_pushnumber(L, Physics::scaleUp(output.normal.x));
 		lua_pushnumber(L, Physics::scaleUp(output.normal.y));
 		lua_pushnumber(L, output.fraction);

+ 2 - 1
src/modules/physics/box2d/Shape.cpp

@@ -107,7 +107,8 @@ namespace box2d
 		input.maxFraction = maxFraction;
 		b2Transform transform(b2Vec2(x, y), b2Rot(r));
 		b2RayCastOutput output;
-		shape->RayCast(&output, input, transform, childIndex);
+		if (!shape->RayCast(&output, input, transform, childIndex))
+			return 0; // No hit.
 		lua_pushnumber(L, Physics::scaleUp(output.normal.x));
 		lua_pushnumber(L, Physics::scaleUp(output.normal.y));
 		lua_pushnumber(L, output.fraction);