From 6e7d83d7eae60d155761bf9c7ab44c1f34e86b1a Mon Sep 17 00:00:00 2001 From: Bill Meltsner Date: Fri, 23 Sep 2011 22:32:39 -0400 Subject: [PATCH] Update ChainShape API --HG-- branch : box2d-update --- src/modules/physics/box2d/ChainShape.cpp | 12 +++++++++--- src/modules/physics/box2d/ChainShape.h | 5 +++++ src/modules/physics/box2d/wrap_ChainShape.cpp | 8 ++++++++ src/modules/physics/box2d/wrap_ChainShape.h | 1 + 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/modules/physics/box2d/ChainShape.cpp b/src/modules/physics/box2d/ChainShape.cpp index 1e74d5177..693719a67 100644 --- a/src/modules/physics/box2d/ChainShape.cpp +++ b/src/modules/physics/box2d/ChainShape.cpp @@ -71,23 +71,29 @@ namespace box2d return new EdgeShape(&e); } + int ChainShape::getChildCount() const + { + b2ChainShape * c = (b2ChainShape *)shape; + return c->GetChildCount(); + } + int ChainShape::getVertexCount() const { b2ChainShape * c = (b2ChainShape *)shape; - return c->GetVertexCount(); + return c->m_count; } b2Vec2 ChainShape::getVertex(int index) const { b2ChainShape * c = (b2ChainShape *)shape; - const b2Vec2 & v = c->GetVertex(index); + const b2Vec2 & v = c->m_vertices[index]; return Physics::scaleUp(v); } const b2Vec2 * ChainShape::getVertices() const { b2ChainShape * c = (b2ChainShape *)shape; - return c->GetVertices(); + return c->m_vertices; } } // box2d diff --git a/src/modules/physics/box2d/ChainShape.h b/src/modules/physics/box2d/ChainShape.h index c96f4e228..ccabc2e08 100644 --- a/src/modules/physics/box2d/ChainShape.h +++ b/src/modules/physics/box2d/ChainShape.h @@ -66,6 +66,11 @@ namespace box2d **/ void setPrevVertex(float x, float y); + /** + * Gets the number of children shapes. + **/ + int getChildCount() const; + /** * Returns a child EdgeShape. * @param index The index of the child shape. diff --git a/src/modules/physics/box2d/wrap_ChainShape.cpp b/src/modules/physics/box2d/wrap_ChainShape.cpp index 8db43e3cc..ef5195cfe 100644 --- a/src/modules/physics/box2d/wrap_ChainShape.cpp +++ b/src/modules/physics/box2d/wrap_ChainShape.cpp @@ -50,6 +50,13 @@ namespace box2d return 0; } + int w_ChainShape_getChildCount(lua_State * L) + { + ChainShape * c = luax_checkchainshape(L, 1); + lua_pushinteger(L, c->getChildCount()); + return 1; + } + int w_ChainShape_getChildEdge(lua_State * L) { ChainShape * c = luax_checkchainshape(L, 1); @@ -96,6 +103,7 @@ namespace box2d static const luaL_Reg functions[] = { { "setNextVertex", w_ChainShape_setNextVertex }, { "setPrevVertex", w_ChainShape_setPrevVertex }, + { "getChildCount", w_ChainShape_getChildCount }, { "getChildEdge", w_ChainShape_getChildEdge }, { "getVertexCount", w_ChainShape_getVertexCount }, { "getVertex", w_ChainShape_getVertex }, diff --git a/src/modules/physics/box2d/wrap_ChainShape.h b/src/modules/physics/box2d/wrap_ChainShape.h index 88989d063..ae81e4ba8 100644 --- a/src/modules/physics/box2d/wrap_ChainShape.h +++ b/src/modules/physics/box2d/wrap_ChainShape.h @@ -36,6 +36,7 @@ namespace box2d int w_ChainShape_setNextVertex(lua_State * L); int w_ChainShape_setPrevVertex(lua_State * L); + int w_ChainShape_getChildCount(lua_State * L); int w_ChainShape_getChildEdge(lua_State * L); int w_ChainShape_getVertexCount(lua_State * L); int w_ChainShape_getVertex(lua_State * L);