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

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

Bart van Strien 13 лет назад
Родитель
Сommit
7c1e1fd0db
2 измененных файлов с 4 добавлено и 2 удалено
  1. 2 1
      src/modules/physics/box2d/Fixture.cpp
  2. 2 1
      src/modules/physics/box2d/Shape.cpp

+ 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);