From 06820210eb22490f9ea1923b2a1b50aba5e0ec7f Mon Sep 17 00:00:00 2001 From: Bill Meltsner Date: Sat, 24 Sep 2011 13:21:50 -0400 Subject: [PATCH] better Fixture Shape management --HG-- branch : box2d-update --- src/modules/physics/box2d/Fixture.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/modules/physics/box2d/Fixture.cpp b/src/modules/physics/box2d/Fixture.cpp index ea7838db4..01f704597 100644 --- a/src/modules/physics/box2d/Fixture.cpp +++ b/src/modules/physics/box2d/Fixture.cpp @@ -37,10 +37,9 @@ namespace physics namespace box2d { Fixture::Fixture(Body * body, Shape * shape, float density) - : body(body), shape(shape), fixture(NULL) + : body(body), fixture(NULL) { body->retain(); - shape->retain(); data = new fixtureudata(); data->ref = 0; b2FixtureDef def; @@ -48,6 +47,7 @@ namespace box2d def.userData = (void *)data; def.density = density; fixture = body->body->CreateFixture(&def); + shape = new Shape(fixture->GetShape()); Memoizer::add(fixture, this); } @@ -60,7 +60,7 @@ namespace box2d body->retain(); shape = (Shape *)Memoizer::find(f->GetShape()); if (!shape) shape = new Shape(f->GetShape()); - shape->retain(); + else shape->retain(); Memoizer::add(fixture, this); } @@ -77,6 +77,7 @@ namespace box2d fixture = 0; body->release(); + shape->release(); } Shape::Type Fixture::getType() const