mirror of
https://github.com/love2d/love.git
synced 2026-08-19 20:19:42 +02:00
better Fixture Shape management
--HG-- branch : box2d-update
This commit is contained in:
@@ -37,10 +37,9 @@ namespace physics
|
|||||||
namespace box2d
|
namespace box2d
|
||||||
{
|
{
|
||||||
Fixture::Fixture(Body * body, Shape * shape, float density)
|
Fixture::Fixture(Body * body, Shape * shape, float density)
|
||||||
: body(body), shape(shape), fixture(NULL)
|
: body(body), fixture(NULL)
|
||||||
{
|
{
|
||||||
body->retain();
|
body->retain();
|
||||||
shape->retain();
|
|
||||||
data = new fixtureudata();
|
data = new fixtureudata();
|
||||||
data->ref = 0;
|
data->ref = 0;
|
||||||
b2FixtureDef def;
|
b2FixtureDef def;
|
||||||
@@ -48,6 +47,7 @@ namespace box2d
|
|||||||
def.userData = (void *)data;
|
def.userData = (void *)data;
|
||||||
def.density = density;
|
def.density = density;
|
||||||
fixture = body->body->CreateFixture(&def);
|
fixture = body->body->CreateFixture(&def);
|
||||||
|
shape = new Shape(fixture->GetShape());
|
||||||
Memoizer::add(fixture, this);
|
Memoizer::add(fixture, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ namespace box2d
|
|||||||
body->retain();
|
body->retain();
|
||||||
shape = (Shape *)Memoizer::find(f->GetShape());
|
shape = (Shape *)Memoizer::find(f->GetShape());
|
||||||
if (!shape) shape = new Shape(f->GetShape());
|
if (!shape) shape = new Shape(f->GetShape());
|
||||||
shape->retain();
|
else shape->retain();
|
||||||
Memoizer::add(fixture, this);
|
Memoizer::add(fixture, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,6 +77,7 @@ namespace box2d
|
|||||||
fixture = 0;
|
fixture = 0;
|
||||||
|
|
||||||
body->release();
|
body->release();
|
||||||
|
shape->release();
|
||||||
}
|
}
|
||||||
|
|
||||||
Shape::Type Fixture::getType() const
|
Shape::Type Fixture::getType() const
|
||||||
|
|||||||
Reference in New Issue
Block a user