Browse Source

Fixture:getShape() returns a Shape of the type it actually is

--HG--
branch : box2d-update
Bill Meltsner 14 years ago
parent
commit
356b3c880d

+ 1 - 1
src/modules/physics/box2d/CircleShape.h

@@ -59,7 +59,7 @@ namespace box2d
 		float getRadius() const;
 		float getRadius() const;
 		
 		
 		/**
 		/**
-		* Gets the radius for the circle.
+		* Sets the radius for the circle.
 		**/
 		**/
 		void setRadius(float r);
 		void setRadius(float r);
 	};
 	};

+ 17 - 1
src/modules/physics/box2d/wrap_Fixture.cpp

@@ -119,7 +119,23 @@ namespace box2d
 		if(shape == 0)
 		if(shape == 0)
 			return 0;
 			return 0;
 		shape->retain();
 		shape->retain();
-		luax_newtype(L, "Shape", PHYSICS_SHAPE_T, (void*)shape);
+		switch (shape->getType()) {
+			case Shape::SHAPE_EDGE:
+				luax_newtype(L, "EdgeShape", PHYSICS_EDGE_SHAPE_T, (void*)shape);
+				break;
+			case Shape::SHAPE_CHAIN:
+				luax_newtype(L, "ChainShape", PHYSICS_CHAIN_SHAPE_T, (void*)shape);
+				break;
+			case Shape::SHAPE_CIRCLE:
+				luax_newtype(L, "CircleShape", PHYSICS_CIRCLE_SHAPE_T, (void*)shape);
+				break;
+			case Shape::SHAPE_POLYGON:
+				luax_newtype(L, "PolygonShape", PHYSICS_POLYGON_SHAPE_T, (void*)shape);
+				break;
+			default:
+				luax_newtype(L, "Shape", PHYSICS_SHAPE_T, (void*)shape);
+				break;
+		}
 		return 1;
 		return 1;
 	}
 	}