From 4667333e7c7386b479dc406273433ab2e1456c1d Mon Sep 17 00:00:00 2001 From: Nomango Date: Wed, 6 Nov 2019 16:29:36 +0800 Subject: [PATCH] remove 'Physic' prefix --- src/kiwano-physics/Body.cpp | 80 +++++----- src/kiwano-physics/Body.h | 42 ++--- src/kiwano-physics/Contact.cpp | 48 +++--- src/kiwano-physics/Contact.h | 42 ++--- src/kiwano-physics/ContactListener.cpp | 38 ++--- src/kiwano-physics/ContactListener.h | 54 +++---- src/kiwano-physics/Fixture.cpp | 38 ++--- src/kiwano-physics/Fixture.h | 18 +-- src/kiwano-physics/Joint.cpp | 138 ++++++++-------- src/kiwano-physics/Joint.h | 212 ++++++++++++------------- src/kiwano-physics/Shape.cpp | 80 +++++----- src/kiwano-physics/Shape.h | 60 +++---- src/kiwano-physics/World.cpp | 48 +++--- src/kiwano-physics/World.h | 22 +-- 14 files changed, 460 insertions(+), 460 deletions(-) diff --git a/src/kiwano-physics/Body.cpp b/src/kiwano-physics/Body.cpp index 18feed30..379b40f1 100644 --- a/src/kiwano-physics/Body.cpp +++ b/src/kiwano-physics/Body.cpp @@ -26,7 +26,7 @@ namespace kiwano namespace physics { - PhysicBody::PhysicBody() + Body::Body() : body_(nullptr) , actor_(nullptr) , world_(nullptr) @@ -36,25 +36,25 @@ namespace kiwano { } - PhysicBody::PhysicBody(b2Body* body, Actor* actor) - : PhysicBody() + Body::Body(b2Body* body, Actor* actor) + : Body() { SetB2Body(body); SetActor(actor); } - PhysicBody::PhysicBody(PhysicWorld* world, Actor* actor) - : PhysicBody() + Body::Body(World* world, Actor* actor) + : Body() { Init(world, actor); } - PhysicBody::~PhysicBody() + Body::~Body() { Destroy(); } - void PhysicBody::Init(PhysicWorld* world, Actor* actor) + void Body::Init(World* world, Actor* actor) { KGE_ASSERT(world); @@ -69,38 +69,38 @@ namespace kiwano UpdateFromActor(); } - PhysicFixture PhysicBody::AddFixture(PhysicShape* shape, const PhysicFixture::Param& param) + Fixture Body::AddFixture(Shape* shape, const Fixture::Param& param) { KGE_ASSERT(body_ && world_); - return PhysicFixture(this, shape, param); + return Fixture(this, shape, param); } - PhysicFixture PhysicBody::AddCircleShape(float radius, float density) + Fixture Body::AddCircleShape(float radius, float density) { - return AddFixture(&PhysicCircleShape(radius), PhysicFixture::Param(density)); + return AddFixture(&CircleShape(radius), Fixture::Param(density)); } - PhysicFixture PhysicBody::AddBoxShape(Vec2 const& size, float density) + Fixture Body::AddBoxShape(Vec2 const& size, float density) { - return AddFixture(&PhysicBoxShape(size), PhysicFixture::Param(density)); + return AddFixture(&BoxShape(size), Fixture::Param(density)); } - PhysicFixture PhysicBody::AddPolygonShape(Vector const& vertexs, float density) + Fixture Body::AddPolygonShape(Vector const& vertexs, float density) { - return AddFixture(&PhysicPolygonShape(vertexs), PhysicFixture::Param(density)); + return AddFixture(&PolygonShape(vertexs), Fixture::Param(density)); } - PhysicFixture PhysicBody::AddEdgeShape(Point const& p1, Point const& p2, float density) + Fixture Body::AddEdgeShape(Point const& p1, Point const& p2, float density) { - return AddFixture(&PhysicEdgeShape(p1, p2), PhysicFixture::Param(density)); + return AddFixture(&EdgeShape(p1, p2), Fixture::Param(density)); } - PhysicFixture PhysicBody::AddChainShape(Vector const& vertexs, bool loop, float density) + Fixture Body::AddChainShape(Vector const& vertexs, bool loop, float density) { - return AddFixture(&PhysicChainShape(vertexs, loop), PhysicFixture::Param(density)); + return AddFixture(&ChainShape(vertexs, loop), Fixture::Param(density)); } - void PhysicBody::RemoveFixture(PhysicFixture const& fixture) + void Body::RemoveFixture(Fixture const& fixture) { if (fixture.GetB2Fixture()) { @@ -109,7 +109,7 @@ namespace kiwano } } - void PhysicBody::SetCategoryBits(uint16_t category_bits) + void Body::SetCategoryBits(uint16_t category_bits) { KGE_ASSERT(body_); @@ -126,7 +126,7 @@ namespace kiwano } } - void PhysicBody::SetMaskBits(uint16_t mask_bits) + void Body::SetMaskBits(uint16_t mask_bits) { KGE_ASSERT(body_); @@ -143,7 +143,7 @@ namespace kiwano } } - void PhysicBody::SetGroupIndex(int16_t index) + void Body::SetGroupIndex(int16_t index) { KGE_ASSERT(body_); @@ -160,7 +160,7 @@ namespace kiwano } } - void PhysicBody::GetMassData(float* mass, Point* center, float* inertia) const + void Body::GetMassData(float* mass, Point* center, float* inertia) const { KGE_ASSERT(body_ && world_); @@ -172,7 +172,7 @@ namespace kiwano if (inertia) *inertia = data.I; } - void PhysicBody::SetMassData(float mass, Point const& center, float inertia) + void Body::SetMassData(float mass, Point const& center, float inertia) { KGE_ASSERT(body_ && world_); @@ -183,67 +183,67 @@ namespace kiwano body_->SetMassData(&data); } - void PhysicBody::ResetMassData() + void Body::ResetMassData() { KGE_ASSERT(body_); body_->ResetMassData(); } - Point PhysicBody::GetBodyPosition() const + Point Body::GetBodyPosition() const { KGE_ASSERT(body_ && world_); return world_->World2Stage(body_->GetPosition()); } - void PhysicBody::SetBodyTransform(Point const& pos, float angle) + void Body::SetBodyTransform(Point const& pos, float angle) { KGE_ASSERT(body_ && world_); body_->SetTransform(world_->Stage2World(pos), math::Degree2Radian(angle)); } - Point PhysicBody::GetLocalPoint(Point const& world) const + Point Body::GetLocalPoint(Point const& world) const { KGE_ASSERT(body_ && world_); return world_->World2Stage(body_->GetLocalPoint(world_->Stage2World(world))); } - Point PhysicBody::GetWorldPoint(Point const& local) const + Point Body::GetWorldPoint(Point const& local) const { KGE_ASSERT(body_ && world_); return world_->World2Stage(body_->GetWorldPoint(world_->Stage2World(local))); } - Point PhysicBody::GetLocalCenter() const + Point Body::GetLocalCenter() const { KGE_ASSERT(body_ && world_); return world_->World2Stage(body_->GetLocalCenter()); } - Point PhysicBody::GetWorldCenter() const + Point Body::GetWorldCenter() const { KGE_ASSERT(body_ && world_); return world_->World2Stage(body_->GetWorldCenter()); } - void PhysicBody::ApplyForce(Vec2 const& force, Point const& point, bool wake) + void Body::ApplyForce(Vec2 const& force, Point const& point, bool wake) { KGE_ASSERT(body_ && world_); body_->ApplyForce(b2Vec2(force.x, force.y), world_->Stage2World(point), wake); } - void PhysicBody::ApplyForceToCenter(Vec2 const& force, bool wake) + void Body::ApplyForceToCenter(Vec2 const& force, bool wake) { KGE_ASSERT(body_ && world_); body_->ApplyForceToCenter(b2Vec2(force.x, force.y), wake); } - void PhysicBody::ApplyTorque(float torque, bool wake) + void Body::ApplyTorque(float torque, bool wake) { KGE_ASSERT(body_ && world_); body_->ApplyTorque(torque, wake); } - void PhysicBody::SetB2Body(b2Body* body) + void Body::SetB2Body(b2Body* body) { body_ = body; if (body_) @@ -252,7 +252,7 @@ namespace kiwano } } - void PhysicBody::Destroy() + void Body::Destroy() { if (world_) { @@ -264,7 +264,7 @@ namespace kiwano actor_ = nullptr; } - void PhysicBody::UpdateActor() + void Body::UpdateActor() { if (actor_ && body_) { @@ -280,7 +280,7 @@ namespace kiwano } } - void PhysicBody::UpdateFromActor() + void Body::UpdateFromActor() { if (actor_ && body_) { @@ -301,7 +301,7 @@ namespace kiwano } } - void PhysicBody::UpdateFixtureFilter(b2Fixture* fixture) + void Body::UpdateFixtureFilter(b2Fixture* fixture) { b2Filter filter; filter.categoryBits = category_bits_; diff --git a/src/kiwano-physics/Body.h b/src/kiwano-physics/Body.h index 8647eddf..e9f25989 100644 --- a/src/kiwano-physics/Body.h +++ b/src/kiwano-physics/Body.h @@ -28,11 +28,11 @@ namespace kiwano { namespace physics { - class PhysicWorld; + class World; // 物体 - KGE_DECLARE_SMART_PTR(PhysicBody); - class KGE_API PhysicBody + KGE_DECLARE_SMART_PTR(Body); + class KGE_API Body : public virtual RefCounter { public: @@ -43,33 +43,33 @@ namespace kiwano Dynamic, }; - PhysicBody(); - PhysicBody(b2Body* body, Actor* actor); - PhysicBody(PhysicWorld* world, Actor* actor); - PhysicBody(PhysicWorld* world, ActorPtr actor) : PhysicBody(world, actor.get()) {} - virtual ~PhysicBody(); + Body(); + Body(b2Body* body, Actor* actor); + Body(World* world, Actor* actor); + Body(World* world, ActorPtr actor) : Body(world, actor.get()) {} + virtual ~Body(); // 初始化 - void Init(PhysicWorld* world, Actor* actor); + void Init(World* world, Actor* actor); // 添加夹具 - PhysicFixture AddFixture(PhysicShape* shape, const PhysicFixture::Param& param); + Fixture AddFixture(Shape* shape, const Fixture::Param& param); // 添加形状 - PhysicFixture AddCircleShape(float radius, float density = 0.f); - PhysicFixture AddBoxShape(Vec2 const& size, float density = 0.f); - PhysicFixture AddPolygonShape(Vector const& vertexs, float density = 0.f); - PhysicFixture AddEdgeShape(Point const& p1, Point const& p2, float density = 0.f); - PhysicFixture AddChainShape(Vector const& vertexs, bool loop, float density = 0.f); + Fixture AddCircleShape(float radius, float density = 0.f); + Fixture AddBoxShape(Vec2 const& size, float density = 0.f); + Fixture AddPolygonShape(Vector const& vertexs, float density = 0.f); + Fixture AddEdgeShape(Point const& p1, Point const& p2, float density = 0.f); + Fixture AddChainShape(Vector const& vertexs, bool loop, float density = 0.f); // 获取夹具 - PhysicFixture GetFixtureList() const { KGE_ASSERT(body_); return PhysicFixture(body_->GetFixtureList()); } + Fixture GetFixtureList() const { KGE_ASSERT(body_); return Fixture(body_->GetFixtureList()); } // 移除夹具 - void RemoveFixture(PhysicFixture const& fixture); + void RemoveFixture(Fixture const& fixture); // 获取接触边 - PhysicContactEdge GetContactList() const { KGE_ASSERT(body_); PhysicContactEdge(body_->GetContactList()); } + ContactEdge GetContactList() const { KGE_ASSERT(body_); ContactEdge(body_->GetContactList()); } // 类别码 uint16_t GetCategoryBits() const { return category_bits_; } @@ -153,8 +153,8 @@ namespace kiwano const b2Body* GetB2Body() const { return body_; } void SetB2Body(b2Body* body); - PhysicWorld* GetWorld() { return world_; } - const PhysicWorld* GetWorld() const { return world_; } + World* GetWorld() { return world_; } + const World* GetWorld() const { return world_; } void Destroy(); @@ -166,7 +166,7 @@ namespace kiwano protected: Actor* actor_; - PhysicWorld* world_; + World* world_; b2Body* body_; uint16_t category_bits_; diff --git a/src/kiwano-physics/Contact.cpp b/src/kiwano-physics/Contact.cpp index 8b5bcf41..b46698ce 100644 --- a/src/kiwano-physics/Contact.cpp +++ b/src/kiwano-physics/Contact.cpp @@ -27,87 +27,87 @@ namespace kiwano namespace physics { - PhysicContact::PhysicContact() + Contact::Contact() : contact_(nullptr) { } - PhysicContact::PhysicContact(b2Contact* contact) - : PhysicContact() + Contact::Contact(b2Contact* contact) + : Contact() { SetB2Contact(contact); } - PhysicContact PhysicContact::GetNext() + Contact Contact::GetNext() { KGE_ASSERT(contact_); - return PhysicContact(contact_->GetNext()); + return Contact(contact_->GetNext()); } - const PhysicContact PhysicContact::GetNext() const + const Contact Contact::GetNext() const { KGE_ASSERT(contact_); - return PhysicContact(contact_->GetNext()); + return Contact(contact_->GetNext()); } - PhysicFixture PhysicContact::GetFixtureA() + Fixture Contact::GetFixtureA() { KGE_ASSERT(contact_); - return PhysicFixture(contact_->GetFixtureA()); + return Fixture(contact_->GetFixtureA()); } - const PhysicFixture PhysicContact::GetFixtureA() const + const Fixture Contact::GetFixtureA() const { KGE_ASSERT(contact_); - return PhysicFixture(contact_->GetFixtureA()); + return Fixture(contact_->GetFixtureA()); } - PhysicFixture PhysicContact::GetFixtureB() + Fixture Contact::GetFixtureB() { KGE_ASSERT(contact_); - return PhysicFixture(contact_->GetFixtureB()); + return Fixture(contact_->GetFixtureB()); } - const PhysicFixture PhysicContact::GetFixtureB() const + const Fixture Contact::GetFixtureB() const { KGE_ASSERT(contact_); - return PhysicFixture(contact_->GetFixtureB()); + return Fixture(contact_->GetFixtureB()); } - void PhysicContact::SetTangentSpeed(float speed) + void Contact::SetTangentSpeed(float speed) { KGE_ASSERT(contact_); - PhysicBody* body = GetFixtureA().GetBody(); + Body* body = GetFixtureA().GetBody(); KGE_ASSERT(body); - PhysicWorld* world = body->GetWorld(); + World* world = body->GetWorld(); KGE_ASSERT(world); contact_->SetTangentSpeed(world->Stage2World(speed)); } - float PhysicContact::GetTangentSpeed() const + float Contact::GetTangentSpeed() const { KGE_ASSERT(contact_); - const PhysicBody* body = GetFixtureA().GetBody(); + const Body* body = GetFixtureA().GetBody(); KGE_ASSERT(body); - const PhysicWorld* world = body->GetWorld(); + const World* world = body->GetWorld(); KGE_ASSERT(world); return world->World2Stage(contact_->GetTangentSpeed()); } - PhysicContactEdge::PhysicContactEdge() + ContactEdge::ContactEdge() : edge_(nullptr) { } - PhysicContactEdge::PhysicContactEdge(b2ContactEdge* edge) - : PhysicContactEdge() + ContactEdge::ContactEdge(b2ContactEdge* edge) + : ContactEdge() { SetB2ContactEdge(edge); } diff --git a/src/kiwano-physics/Contact.h b/src/kiwano-physics/Contact.h index b32b8db4..0f0ee915 100644 --- a/src/kiwano-physics/Contact.h +++ b/src/kiwano-physics/Contact.h @@ -26,14 +26,14 @@ namespace kiwano { namespace physics { - class PhysicBody; + class Body; // 接触 - class KGE_API PhysicContact + class KGE_API Contact { public: - PhysicContact(); - PhysicContact(b2Contact* contact); + Contact(); + Contact(b2Contact* contact); // 是否是接触 bool IsTouching() const { KGE_ASSERT(contact_); return contact_->IsTouching(); } @@ -43,16 +43,16 @@ namespace kiwano bool IsEnabled() const { KGE_ASSERT(contact_); return contact_->IsEnabled(); } // 获取下一接触 - PhysicContact GetNext(); - const PhysicContact GetNext() const; + Contact GetNext(); + const Contact GetNext() const; // 夹具 A - PhysicFixture GetFixtureA(); - const PhysicFixture GetFixtureA() const; + Fixture GetFixtureA(); + const Fixture GetFixtureA() const; // 夹具 B - PhysicFixture GetFixtureB(); - const PhysicFixture GetFixtureB() const; + Fixture GetFixtureB(); + const Fixture GetFixtureB() const; // 摩擦 void SetFriction(float friction) { KGE_ASSERT(contact_); contact_->SetFriction(friction); } @@ -78,27 +78,27 @@ namespace kiwano // 接触边 - class KGE_API PhysicContactEdge + class KGE_API ContactEdge { public: - PhysicContactEdge(); - PhysicContactEdge(b2ContactEdge* edge); + ContactEdge(); + ContactEdge(b2ContactEdge* edge); // 获取接触物体 - PhysicBody* GetOtherBody() { KGE_ASSERT(edge_); return static_cast(edge_->other->GetUserData()); } - const PhysicBody* GetOtherBody() const { KGE_ASSERT(edge_); return static_cast(edge_->other->GetUserData()); } + Body* GetOtherBody() { KGE_ASSERT(edge_); return static_cast(edge_->other->GetUserData()); } + const Body* GetOtherBody() const { KGE_ASSERT(edge_); return static_cast(edge_->other->GetUserData()); } // 获取接触 - PhysicContact GetContact() { KGE_ASSERT(edge_); return PhysicContact(edge_->contact); } - const PhysicContact GetContact() const { KGE_ASSERT(edge_); return PhysicContact(edge_->contact); } + Contact GetContact() { KGE_ASSERT(edge_); return Contact(edge_->contact); } + const Contact GetContact() const { KGE_ASSERT(edge_); return Contact(edge_->contact); } // 获取上一接触边 - PhysicContactEdge GetPrev() { KGE_ASSERT(edge_); return PhysicContactEdge(edge_->prev); } - const PhysicContactEdge GetPrev() const { KGE_ASSERT(edge_); return PhysicContactEdge(edge_->prev); } + ContactEdge GetPrev() { KGE_ASSERT(edge_); return ContactEdge(edge_->prev); } + const ContactEdge GetPrev() const { KGE_ASSERT(edge_); return ContactEdge(edge_->prev); } // 获取下一接触边 - PhysicContactEdge GetNext() { KGE_ASSERT(edge_); return PhysicContactEdge(edge_->next); } - const PhysicContactEdge GetNext() const { KGE_ASSERT(edge_); return PhysicContactEdge(edge_->next); } + ContactEdge GetNext() { KGE_ASSERT(edge_); return ContactEdge(edge_->next); } + const ContactEdge GetNext() const { KGE_ASSERT(edge_); return ContactEdge(edge_->next); } b2ContactEdge* GetB2ContactEdge() { return edge_; } const b2ContactEdge* GetB2ContactEdge() const { return edge_; } diff --git a/src/kiwano-physics/ContactListener.cpp b/src/kiwano-physics/ContactListener.cpp index 276d5a78..12ec7da6 100644 --- a/src/kiwano-physics/ContactListener.cpp +++ b/src/kiwano-physics/ContactListener.cpp @@ -26,31 +26,31 @@ namespace kiwano { namespace physics { - PhysicContactListener::PhysicContactListener() + ContactListener::ContactListener() : running_(true) { } - PhysicContactListener::~PhysicContactListener() + ContactListener::~ContactListener() { } - PhysicContactCallbackListener::PhysicContactCallbackListener() + ContactCallbackListener::ContactCallbackListener() { } - PhysicContactCallbackListener::~PhysicContactCallbackListener() + ContactCallbackListener::~ContactCallbackListener() { } - PhysicContactListener* PhysicContactDispatcher::AddContactListener(PhysicContactListenerPtr listener) + ContactListener* ContactDispatcher::AddContactListener(ContactListenerPtr listener) { return AddContactListener(listener.get()); } - PhysicContactListener* PhysicContactDispatcher::AddContactListener(PhysicContactListener* listener) + ContactListener* ContactDispatcher::AddContactListener(ContactListener* listener) { KGE_ASSERT(listener && "AddListener failed, NULL pointer exception"); @@ -61,7 +61,7 @@ namespace kiwano return listener; } - void PhysicContactDispatcher::StartContactListeners(String const& listener_name) + void ContactDispatcher::StartContactListeners(String const& listener_name) { for (auto listener : listeners_) { @@ -72,7 +72,7 @@ namespace kiwano } } - void PhysicContactDispatcher::StopContactListeners(String const& listener_name) + void ContactDispatcher::StopContactListeners(String const& listener_name) { for (auto listener : listeners_) { @@ -83,9 +83,9 @@ namespace kiwano } } - void PhysicContactDispatcher::RemoveContactListeners(String const& listener_name) + void ContactDispatcher::RemoveContactListeners(String const& listener_name) { - PhysicContactListenerPtr next; + ContactListenerPtr next; for (auto listener = listeners_.first_item(); listener; listener = next) { next = listener->next_item(); @@ -97,7 +97,7 @@ namespace kiwano } } - void PhysicContactDispatcher::StartAllContactListeners() + void ContactDispatcher::StartAllContactListeners() { for (auto listener : listeners_) { @@ -105,7 +105,7 @@ namespace kiwano } } - void PhysicContactDispatcher::StopAllContactListeners() + void ContactDispatcher::StopAllContactListeners() { for (auto listener : listeners_) { @@ -113,18 +113,18 @@ namespace kiwano } } - void PhysicContactDispatcher::RemoveAllContactListeners() + void ContactDispatcher::RemoveAllContactListeners() { listeners_.clear(); } - void PhysicContactDispatcher::OnContactBegin(b2Contact* b2contact) + void ContactDispatcher::OnContactBegin(b2Contact* b2contact) { if (listeners_.empty()) return; - PhysicContact contact(b2contact); - PhysicContactListenerPtr next; + Contact contact(b2contact); + ContactListenerPtr next; for (auto listener = listeners_.first_item(); listener; listener = next) { next = listener->next_item(); @@ -136,13 +136,13 @@ namespace kiwano } } - void PhysicContactDispatcher::OnContactEnd(b2Contact* b2contact) + void ContactDispatcher::OnContactEnd(b2Contact* b2contact) { if (listeners_.empty()) return; - PhysicContact contact(b2contact); - PhysicContactListenerPtr next; + Contact contact(b2contact); + ContactListenerPtr next; for (auto listener = listeners_.first_item(); listener; listener = next) { next = listener->next_item(); diff --git a/src/kiwano-physics/ContactListener.h b/src/kiwano-physics/ContactListener.h index 9556d633..1223e8d3 100644 --- a/src/kiwano-physics/ContactListener.h +++ b/src/kiwano-physics/ContactListener.h @@ -25,27 +25,27 @@ namespace kiwano { namespace physics { - class PhysicContactDispatcher; + class ContactDispatcher; - KGE_DECLARE_SMART_PTR(PhysicContactListener); + KGE_DECLARE_SMART_PTR(ContactListener); // 接触监听器 - class KGE_API PhysicContactListener + class KGE_API ContactListener : public ObjectBase - , protected IntrusiveListItem + , protected IntrusiveListItem { - friend IntrusiveList; - friend class PhysicContactDispatcher; + friend IntrusiveList; + friend class ContactDispatcher; public: - PhysicContactListener(); - virtual ~PhysicContactListener(); + ContactListener(); + virtual ~ContactListener(); // 接触开始 - virtual void OnContactBegin(PhysicContact contact) { KGE_NOT_USED(contact); } + virtual void OnContactBegin(Contact contact) { KGE_NOT_USED(contact); } // 接触结束 - virtual void OnContactEnd(PhysicContact contact) { KGE_NOT_USED(contact); } + virtual void OnContactEnd(Contact contact) { KGE_NOT_USED(contact); } inline void Start() { running_ = true; } inline void Stop() { running_ = true; } @@ -56,21 +56,21 @@ namespace kiwano }; - KGE_DECLARE_SMART_PTR(PhysicContactCallbackListener); + KGE_DECLARE_SMART_PTR(ContactCallbackListener); // 接触回调监听器 - class KGE_API PhysicContactCallbackListener - : public PhysicContactListener + class KGE_API ContactCallbackListener + : public ContactListener { - friend IntrusiveList; - friend class PhysicContactDispatcher; + friend IntrusiveList; + friend class ContactDispatcher; public: - using ContactBeginCallback = Function; - using ContactEndCallback = Function; + using ContactBeginCallback = Function; + using ContactEndCallback = Function; - PhysicContactCallbackListener(); - virtual ~PhysicContactCallbackListener(); + ContactCallbackListener(); + virtual ~ContactCallbackListener(); // 接触开始回调 void SetCallbackOnContactBegin(ContactBeginCallback const& cb) { begin_ = cb; } @@ -80,8 +80,8 @@ namespace kiwano void SetCallbackOnContactEnd(ContactEndCallback const& cb) { end_ = cb; } ContactEndCallback GetCallbackOnContactEnd() const { return end_; } - void OnContactBegin(PhysicContact contact) override { if (begin_) begin_(contact); } - void OnContactEnd(PhysicContact contact) override { if (end_) end_(contact); } + void OnContactBegin(Contact contact) override { if (begin_) begin_(contact); } + void OnContactEnd(Contact contact) override { if (end_) end_(contact); } protected: ContactBeginCallback begin_; @@ -90,19 +90,19 @@ namespace kiwano // 接触分发器 - class KGE_API PhysicContactDispatcher + class KGE_API ContactDispatcher { public: - using Listeners = IntrusiveList; + using Listeners = IntrusiveList; // 添加监听器 - PhysicContactListener* AddContactListener( - PhysicContactListenerPtr listener + ContactListener* AddContactListener( + ContactListenerPtr listener ); // 添加监听器 - PhysicContactListener* AddContactListener( - PhysicContactListener* listener + ContactListener* AddContactListener( + ContactListener* listener ); // 启动监听器 diff --git a/src/kiwano-physics/Fixture.cpp b/src/kiwano-physics/Fixture.cpp index 35f264e6..dc6a8c52 100644 --- a/src/kiwano-physics/Fixture.cpp +++ b/src/kiwano-physics/Fixture.cpp @@ -27,19 +27,19 @@ namespace kiwano namespace physics { - PhysicFixture::PhysicFixture() + Fixture::Fixture() : fixture_(nullptr) { } - PhysicFixture::PhysicFixture(b2Fixture* fixture) - : PhysicFixture() + Fixture::Fixture(b2Fixture* fixture) + : Fixture() { SetB2Fixture(fixture); } - PhysicFixture::PhysicFixture(PhysicBody* body, PhysicShape* shape, const Param& param) - : PhysicFixture() + Fixture::Fixture(Body* body, Shape* shape, const Param& param) + : Fixture() { KGE_ASSERT(body); @@ -58,38 +58,38 @@ namespace kiwano } } - PhysicBody* PhysicFixture::GetBody() + Body* Fixture::GetBody() { KGE_ASSERT(fixture_); - return static_cast(fixture_->GetBody()->GetUserData()); + return static_cast(fixture_->GetBody()->GetUserData()); } - const PhysicBody* PhysicFixture::GetBody() const + const Body* Fixture::GetBody() const { KGE_ASSERT(fixture_); - return static_cast(fixture_->GetBody()->GetUserData()); + return static_cast(fixture_->GetBody()->GetUserData()); } - PhysicShape PhysicFixture::GetShape() const + Shape Fixture::GetShape() const { KGE_ASSERT(fixture_); - return PhysicShape(fixture_->GetShape()); + return Shape(fixture_->GetShape()); } - PhysicFixture PhysicFixture::GetNext() const + Fixture Fixture::GetNext() const { KGE_ASSERT(fixture_); - return PhysicFixture(fixture_->GetNext()); + return Fixture(fixture_->GetNext()); } - void PhysicFixture::GetMassData(float* mass, Point* center, float* inertia) const + void Fixture::GetMassData(float* mass, Point* center, float* inertia) const { KGE_ASSERT(fixture_); - const PhysicBody* body = GetBody(); + const Body* body = GetBody(); KGE_ASSERT(body); - const PhysicWorld* world = body->GetWorld(); + const World* world = body->GetWorld(); KGE_ASSERT(world); b2MassData data; @@ -100,14 +100,14 @@ namespace kiwano if (inertia) *inertia = data.I; } - bool PhysicFixture::TestPoint(const Point& p) const + bool Fixture::TestPoint(const Point& p) const { KGE_ASSERT(fixture_); - const PhysicBody* body = GetBody(); + const Body* body = GetBody(); KGE_ASSERT(body); - const PhysicWorld* world = body->GetWorld(); + const World* world = body->GetWorld(); KGE_ASSERT(world); return fixture_->TestPoint(world->Stage2World(p)); diff --git a/src/kiwano-physics/Fixture.h b/src/kiwano-physics/Fixture.h index 85cb3895..2097d5a2 100644 --- a/src/kiwano-physics/Fixture.h +++ b/src/kiwano-physics/Fixture.h @@ -26,10 +26,10 @@ namespace kiwano { namespace physics { - class PhysicBody; + class Body; // 夹具 - class PhysicFixture + class Fixture { public: struct Param @@ -49,19 +49,19 @@ namespace kiwano {} }; - PhysicFixture(); - PhysicFixture(b2Fixture* fixture); - PhysicFixture(PhysicBody* body, PhysicShape* shape, const Param& param); + Fixture(); + Fixture(b2Fixture* fixture); + Fixture(Body* body, Shape* shape, const Param& param); // 物体 - PhysicBody* GetBody(); - const PhysicBody* GetBody() const; + Body* GetBody(); + const Body* GetBody() const; // 形状 - PhysicShape GetShape() const; + Shape GetShape() const; // 下一夹具 (同一物体上) - PhysicFixture GetNext() const; + Fixture GetNext() const; // 接触传感器 bool IsSensor() const { KGE_ASSERT(fixture_); return fixture_->IsSensor(); } diff --git a/src/kiwano-physics/Joint.cpp b/src/kiwano-physics/Joint.cpp index e32a2598..08be38b7 100644 --- a/src/kiwano-physics/Joint.cpp +++ b/src/kiwano-physics/Joint.cpp @@ -26,29 +26,29 @@ namespace kiwano namespace physics { // - // PhysicJoint + // Joint // - PhysicJoint::PhysicJoint() + Joint::Joint() : joint_(nullptr) , world_(nullptr) , type_(Type::Unknown) { } - PhysicJoint::PhysicJoint(b2Joint* joint) - : PhysicJoint() + Joint::Joint(b2Joint* joint) + : Joint() { SetB2Joint(joint); } - PhysicJoint::PhysicJoint(PhysicWorld* world, b2JointDef* joint_def) - : PhysicJoint() + Joint::Joint(World* world, b2JointDef* joint_def) + : Joint() { Init(world, joint_def); } - PhysicJoint::~PhysicJoint() + Joint::~Joint() { if (world_) { @@ -56,7 +56,7 @@ namespace kiwano } } - void PhysicJoint::Init(PhysicWorld* world, b2JointDef* joint_def) + void Joint::Init(World* world, b2JointDef* joint_def) { world_ = world; if (world_) @@ -68,28 +68,28 @@ namespace kiwano } } - PhysicBodyPtr PhysicJoint::GetBodyA() const + BodyPtr Joint::GetBodyA() const { KGE_ASSERT(joint_); b2Body* body = joint_->GetBodyA(); - return PhysicBodyPtr(static_cast(body->GetUserData())); + return BodyPtr(static_cast(body->GetUserData())); } - PhysicBodyPtr PhysicJoint::GetBodyB() const + BodyPtr Joint::GetBodyB() const { KGE_ASSERT(joint_); b2Body* body = joint_->GetBodyB(); - return PhysicBodyPtr(static_cast(body->GetUserData())); + return BodyPtr(static_cast(body->GetUserData())); } - void PhysicJoint::SetB2Joint(b2Joint* joint) + void Joint::SetB2Joint(b2Joint* joint) { joint_ = joint; if (joint_) { - type_ = PhysicJoint::Type(joint_->GetType()); + type_ = Joint::Type(joint_->GetType()); } } @@ -98,19 +98,19 @@ namespace kiwano // DistanceJoint::DistanceJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - DistanceJoint::DistanceJoint(PhysicWorld* world, b2DistanceJointDef* def) - : PhysicJoint(world, def) + DistanceJoint::DistanceJoint(World* world, b2DistanceJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - DistanceJoint::DistanceJoint(PhysicWorld* world, DistanceJoint::Param const& param) - : PhysicJoint() + DistanceJoint::DistanceJoint(World* world, DistanceJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -141,19 +141,19 @@ namespace kiwano // FrictionJoint::FrictionJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - FrictionJoint::FrictionJoint(PhysicWorld* world, b2FrictionJointDef* def) - : PhysicJoint(world, def) + FrictionJoint::FrictionJoint(World* world, b2FrictionJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - FrictionJoint::FrictionJoint(PhysicWorld* world, FrictionJoint::Param const& param) - : PhysicJoint() + FrictionJoint::FrictionJoint(World* world, FrictionJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -196,19 +196,19 @@ namespace kiwano // GearJoint::GearJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - GearJoint::GearJoint(PhysicWorld* world, b2GearJointDef* def) - : PhysicJoint(world, def) + GearJoint::GearJoint(World* world, b2GearJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - GearJoint::GearJoint(PhysicWorld* world, GearJoint::Param const& param) - : PhysicJoint() + GearJoint::GearJoint(World* world, GearJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.joint_a && param.joint_b); @@ -239,19 +239,19 @@ namespace kiwano // MotorJoint::MotorJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - MotorJoint::MotorJoint(PhysicWorld* world, b2MotorJointDef* def) - : PhysicJoint(world, def) + MotorJoint::MotorJoint(World* world, b2MotorJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - MotorJoint::MotorJoint(PhysicWorld* world, MotorJoint::Param const& param) - : PhysicJoint() + MotorJoint::MotorJoint(World* world, MotorJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -294,19 +294,19 @@ namespace kiwano // PrismaticJoint::PrismaticJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - PrismaticJoint::PrismaticJoint(PhysicWorld* world, b2PrismaticJointDef* def) - : PhysicJoint(world, def) + PrismaticJoint::PrismaticJoint(World* world, b2PrismaticJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - PrismaticJoint::PrismaticJoint(PhysicWorld* world, PrismaticJoint::Param const& param) - : PhysicJoint() + PrismaticJoint::PrismaticJoint(World* world, PrismaticJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -359,19 +359,19 @@ namespace kiwano // PulleyJoint::PulleyJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - PulleyJoint::PulleyJoint(PhysicWorld* world, b2PulleyJointDef* def) - : PhysicJoint(world, def) + PulleyJoint::PulleyJoint(World* world, b2PulleyJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - PulleyJoint::PulleyJoint(PhysicWorld* world, PulleyJoint::Param const& param) - : PhysicJoint() + PulleyJoint::PulleyJoint(World* world, PulleyJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -431,19 +431,19 @@ namespace kiwano // RevoluteJoint::RevoluteJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - RevoluteJoint::RevoluteJoint(PhysicWorld* world, b2RevoluteJointDef* def) - : PhysicJoint(world, def) + RevoluteJoint::RevoluteJoint(World* world, b2RevoluteJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - RevoluteJoint::RevoluteJoint(PhysicWorld* world, RevoluteJoint::Param const& param) - : PhysicJoint() + RevoluteJoint::RevoluteJoint(World* world, RevoluteJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -508,19 +508,19 @@ namespace kiwano // RopeJoint::RopeJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - RopeJoint::RopeJoint(PhysicWorld* world, b2RopeJointDef* def) - : PhysicJoint(world, def) + RopeJoint::RopeJoint(World* world, b2RopeJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - RopeJoint::RopeJoint(PhysicWorld* world, RopeJoint::Param const& param) - : PhysicJoint() + RopeJoint::RopeJoint(World* world, RopeJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -553,19 +553,19 @@ namespace kiwano // WeldJoint::WeldJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - WeldJoint::WeldJoint(PhysicWorld* world, b2WeldJointDef* def) - : PhysicJoint(world, def) + WeldJoint::WeldJoint(World* world, b2WeldJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - WeldJoint::WeldJoint(PhysicWorld* world, WeldJoint::Param const& param) - : PhysicJoint() + WeldJoint::WeldJoint(World* world, WeldJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -584,19 +584,19 @@ namespace kiwano // WheelJoint::WheelJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - WheelJoint::WheelJoint(PhysicWorld* world, b2WheelJointDef* def) - : PhysicJoint(world, def) + WheelJoint::WheelJoint(World* world, b2WheelJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - WheelJoint::WheelJoint(PhysicWorld* world, WheelJoint::Param const& param) - : PhysicJoint() + WheelJoint::WheelJoint(World* world, WheelJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); @@ -642,19 +642,19 @@ namespace kiwano // MouseJoint::MouseJoint() - : PhysicJoint() + : Joint() , raw_joint_(nullptr) { } - MouseJoint::MouseJoint(PhysicWorld* world, b2MouseJointDef* def) - : PhysicJoint(world, def) + MouseJoint::MouseJoint(World* world, b2MouseJointDef* def) + : Joint(world, def) , raw_joint_(nullptr) { } - MouseJoint::MouseJoint(PhysicWorld* world, MouseJoint::Param const& param) - : PhysicJoint() + MouseJoint::MouseJoint(World* world, MouseJoint::Param const& param) + : Joint() , raw_joint_(nullptr) { KGE_ASSERT(param.body_a && param.body_b); diff --git a/src/kiwano-physics/Joint.h b/src/kiwano-physics/Joint.h index e2a8b0df..46548a4f 100644 --- a/src/kiwano-physics/Joint.h +++ b/src/kiwano-physics/Joint.h @@ -26,7 +26,7 @@ namespace kiwano { namespace physics { - KGE_DECLARE_SMART_PTR(PhysicJoint); + KGE_DECLARE_SMART_PTR(Joint); KGE_DECLARE_SMART_PTR(DistanceJoint); KGE_DECLARE_SMART_PTR(FrictionJoint); KGE_DECLARE_SMART_PTR(GearJoint); @@ -40,7 +40,7 @@ namespace kiwano KGE_DECLARE_SMART_PTR(WheelJoint); // 关节 - class KGE_API PhysicJoint + class KGE_API Joint : public virtual RefCounter { public: @@ -62,43 +62,43 @@ namespace kiwano struct ParamBase { - PhysicBody* body_a; - PhysicBody* body_b; + Body* body_a; + Body* body_b; - ParamBase(PhysicBody* body_a, PhysicBody* body_b) : body_a(body_a), body_b(body_b) {} - ParamBase(PhysicBodyPtr body_a, PhysicBodyPtr body_b) : body_a(body_a.get()), body_b(body_b.get()) {} + ParamBase(Body* body_a, Body* body_b) : body_a(body_a), body_b(body_b) {} + ParamBase(BodyPtr body_a, BodyPtr body_b) : body_a(body_a.get()), body_b(body_b.get()) {} }; - PhysicJoint(); - PhysicJoint(b2Joint* joint); - PhysicJoint(PhysicWorld* world, b2JointDef* joint_def); - virtual ~PhysicJoint(); + Joint(); + Joint(b2Joint* joint); + Joint(World* world, b2JointDef* joint_def); + virtual ~Joint(); - void Init(PhysicWorld* world, b2JointDef* joint_def); + void Init(World* world, b2JointDef* joint_def); - PhysicBodyPtr GetBodyA() const; - PhysicBodyPtr GetBodyB() const; + BodyPtr GetBodyA() const; + BodyPtr GetBodyB() const; b2Joint* GetB2Joint() { return joint_; } const b2Joint* GetB2Joint() const { return joint_; } void SetB2Joint(b2Joint* joint); - PhysicWorld* GetWorld() { return world_; } - const PhysicWorld* GetWorld() const { return world_; } + World* GetWorld() { return world_; } + const World* GetWorld() const { return world_; } protected: b2Joint* joint_; - PhysicWorld* world_; + World* world_; Type type_; }; // 固定距离关节 class KGE_API DistanceJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point anchor_a; Point anchor_b; @@ -106,8 +106,8 @@ namespace kiwano float damping_ratio; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& anchor_a, Point const& anchor_b, float frequency_hz = 0.f, @@ -121,8 +121,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& anchor_a, Point const& anchor_b, float frequency_hz = 0.f, @@ -133,8 +133,8 @@ namespace kiwano }; DistanceJoint(); - DistanceJoint(PhysicWorld* world, b2DistanceJointDef* def); - DistanceJoint(PhysicWorld* world, Param const& param); + DistanceJoint(World* world, b2DistanceJointDef* def); + DistanceJoint(World* world, Param const& param); void SetLength(float length); float GetLength() const; @@ -154,18 +154,18 @@ namespace kiwano // 摩擦关节 class KGE_API FrictionJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point anchor; float max_force; float max_torque; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& anchor, float max_force = 0.f, float max_torque = 0.f @@ -177,8 +177,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& anchor, float max_force = 0.f, float max_torque = 0.f @@ -188,8 +188,8 @@ namespace kiwano }; FrictionJoint(); - FrictionJoint(PhysicWorld* world, b2FrictionJointDef* def); - FrictionJoint(PhysicWorld* world, Param const& param); + FrictionJoint(World* world, b2FrictionJointDef* def); + FrictionJoint(World* world, Param const& param); // 设定最大摩擦力 void SetMaxForce(float force); @@ -206,18 +206,18 @@ namespace kiwano // 齿轮关节 class KGE_API GearJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { - PhysicJointPtr joint_a; - PhysicJointPtr joint_b; + JointPtr joint_a; + JointPtr joint_b; float ratio; Param( - PhysicJoint* joint_a, - PhysicJoint* joint_b, + Joint* joint_a, + Joint* joint_b, float ratio = 1.f ) : ParamBase(nullptr, nullptr) @@ -227,8 +227,8 @@ namespace kiwano {} Param( - PhysicJointPtr joint_a, - PhysicJointPtr joint_b, + JointPtr joint_a, + JointPtr joint_b, float ratio = 1.f ) : Param(joint_a.get(), joint_b.get(), ratio) @@ -236,8 +236,8 @@ namespace kiwano }; GearJoint(); - GearJoint(PhysicWorld* world, b2GearJointDef* def); - GearJoint(PhysicWorld* world, Param const& param); + GearJoint(World* world, b2GearJointDef* def); + GearJoint(World* world, Param const& param); // 设定齿轮传动比 void SetRatio(float ratio); @@ -250,18 +250,18 @@ namespace kiwano // 马达关节 class KGE_API MotorJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { float max_force; float max_torque; float correction_factor; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, float max_force = 1.f, float max_torque = 100.f, float correction_factor = 0.3f @@ -273,8 +273,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, float max_force = 0.f, float max_torque = 0.f, float correction_factor = 0.3f @@ -284,8 +284,8 @@ namespace kiwano }; MotorJoint(); - MotorJoint(PhysicWorld* world, b2MotorJointDef* def); - MotorJoint(PhysicWorld* world, Param const& param); + MotorJoint(World* world, b2MotorJointDef* def); + MotorJoint(World* world, Param const& param); // 设定最大摩擦力 void SetMaxForce(float force); @@ -302,10 +302,10 @@ namespace kiwano // 平移关节 class KGE_API PrismaticJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point anchor; Vec2 axis; @@ -317,8 +317,8 @@ namespace kiwano float motor_speed; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& anchor, Vec2 const& axis, bool enable_limit = false, @@ -340,8 +340,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& anchor, Vec2 const& axis, bool enable_limit = false, @@ -356,8 +356,8 @@ namespace kiwano }; PrismaticJoint(); - PrismaticJoint(PhysicWorld* world, b2PrismaticJointDef* def); - PrismaticJoint(PhysicWorld* world, Param const& param); + PrismaticJoint(World* world, b2PrismaticJointDef* def); + PrismaticJoint(World* world, Param const& param); float GetReferenceAngle() const { KGE_ASSERT(raw_joint_); return math::Radian2Degree(raw_joint_->GetReferenceAngle()); } float GetJointTranslation() const; @@ -388,10 +388,10 @@ namespace kiwano // 滑轮关节 class KGE_API PulleyJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point anchor_a; Point anchor_b; @@ -400,8 +400,8 @@ namespace kiwano float ratio; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& anchor_a, Point const& anchor_b, Point const& ground_anchor_a, @@ -417,8 +417,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& anchor_a, Point const& anchor_b, Point const& ground_anchor_a, @@ -430,8 +430,8 @@ namespace kiwano }; PulleyJoint(); - PulleyJoint(PhysicWorld* world, b2PulleyJointDef* def); - PulleyJoint(PhysicWorld* world, Param const& param); + PulleyJoint(World* world, b2PulleyJointDef* def); + PulleyJoint(World* world, Param const& param); Point GetGroundAnchorA() const; Point GetGroundAnchorB() const; @@ -451,10 +451,10 @@ namespace kiwano // 旋转关节 class KGE_API RevoluteJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point anchor; bool enable_limit; @@ -465,8 +465,8 @@ namespace kiwano float motor_speed; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& anchor, bool enable_limit = false, float lower_angle = 0.0f, @@ -486,8 +486,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& anchor, bool enable_limit = false, float lower_angle = 0.0f, @@ -501,8 +501,8 @@ namespace kiwano }; RevoluteJoint(); - RevoluteJoint(PhysicWorld* world, b2RevoluteJointDef* def); - RevoluteJoint(PhysicWorld* world, Param const& param); + RevoluteJoint(World* world, b2RevoluteJointDef* def); + RevoluteJoint(World* world, Param const& param); float GetReferenceAngle() const { KGE_ASSERT(raw_joint_); return math::Radian2Degree(raw_joint_->GetReferenceAngle()); } float GetJointAngle() const; @@ -533,18 +533,18 @@ namespace kiwano // 绳关节 class KGE_API RopeJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point local_anchor_a; Point local_anchor_b; float max_length; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& local_anchor_a, Point const& local_anchor_b, float max_length = 0.f @@ -556,8 +556,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& local_anchor_a, Point const& local_anchor_b, float max_length = 0.f @@ -567,8 +567,8 @@ namespace kiwano }; RopeJoint(); - RopeJoint(PhysicWorld* world, b2RopeJointDef* def); - RopeJoint(PhysicWorld* world, Param const& param); + RopeJoint(World* world, b2RopeJointDef* def); + RopeJoint(World* world, Param const& param); void SetMaxLength(float length); float GetMaxLength() const; @@ -580,18 +580,18 @@ namespace kiwano // 焊接关节 class KGE_API WeldJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point anchor; float frequency_hz; float damping_ratio; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& anchor, float frequency_hz = 0.f, float damping_ratio = 0.f @@ -603,8 +603,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& anchor, float frequency_hz = 0.f, float damping_ratio = 0.f @@ -614,8 +614,8 @@ namespace kiwano }; WeldJoint(); - WeldJoint(PhysicWorld* world, b2WeldJointDef* def); - WeldJoint(PhysicWorld* world, Param const& param); + WeldJoint(World* world, b2WeldJointDef* def); + WeldJoint(World* world, Param const& param); // 设置弹簧阻尼器频率 [赫兹] void SetFrequency(float hz) { KGE_ASSERT(raw_joint_); raw_joint_->SetFrequency(hz); } @@ -632,10 +632,10 @@ namespace kiwano // 轮关节 class KGE_API WheelJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point anchor; Vec2 axis; @@ -646,8 +646,8 @@ namespace kiwano float damping_ratio; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& anchor, Vec2 const& axis, float frequency_hz = 2.0f, @@ -667,8 +667,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& anchor, Vec2 const& axis, float frequency_hz = 2.0f, @@ -682,8 +682,8 @@ namespace kiwano }; WheelJoint(); - WheelJoint(PhysicWorld* world, b2WheelJointDef* def); - WheelJoint(PhysicWorld* world, Param const& param); + WheelJoint(World* world, b2WheelJointDef* def); + WheelJoint(World* world, Param const& param); float GetJointTranslation() const; float GetJointLinearSpeed() const; @@ -715,10 +715,10 @@ namespace kiwano // 鼠标关节 // 用于使身体的某个点追踪世界上的指定点,例如让物体追踪鼠标位置 class KGE_API MouseJoint - : public PhysicJoint + : public Joint { public: - struct Param : public PhysicJoint::ParamBase + struct Param : public Joint::ParamBase { Point target; float max_force; @@ -726,8 +726,8 @@ namespace kiwano float damping_ratio; Param( - PhysicBody* body_a, - PhysicBody* body_b, + Body* body_a, + Body* body_b, Point const& target, float max_force, float frequency_hz = 5.0f, @@ -741,8 +741,8 @@ namespace kiwano {} Param( - PhysicBodyPtr body_a, - PhysicBodyPtr body_b, + BodyPtr body_a, + BodyPtr body_b, Point const& target, float max_force, float frequency_hz = 5.0f, @@ -753,8 +753,8 @@ namespace kiwano }; MouseJoint(); - MouseJoint(PhysicWorld* world, b2MouseJointDef* def); - MouseJoint(PhysicWorld* world, Param const& param); + MouseJoint(World* world, b2MouseJointDef* def); + MouseJoint(World* world, Param const& param); // 设定最大摩擦力 [N] void SetMaxForce(float force); diff --git a/src/kiwano-physics/Shape.cpp b/src/kiwano-physics/Shape.cpp index e380fa3b..47d6dc0d 100644 --- a/src/kiwano-physics/Shape.cpp +++ b/src/kiwano-physics/Shape.cpp @@ -25,55 +25,55 @@ namespace kiwano { namespace physics { - PhysicShape::PhysicShape() + Shape::Shape() : shape_(nullptr) { } - PhysicShape::PhysicShape(b2Shape* shape) + Shape::Shape(b2Shape* shape) : shape_(shape) { } - b2Shape* PhysicShape::GetB2Shape() + b2Shape* Shape::GetB2Shape() { return shape_; } - const b2Shape* PhysicShape::GetB2Shape() const + const b2Shape* Shape::GetB2Shape() const { return shape_; } - void PhysicShape::SetB2Shape(b2Shape* shape) + void Shape::SetB2Shape(b2Shape* shape) { shape_ = shape; } // - // PhysicCircleShape + // CircleShape // - PhysicCircleShape::PhysicCircleShape() - : PhysicShape(&circle_) + CircleShape::CircleShape() + : Shape(&circle_) , circle_() , radius_(0.f) { } - PhysicCircleShape::PhysicCircleShape(float radius, Point const& offset) - : PhysicCircleShape() + CircleShape::CircleShape(float radius, Point const& offset) + : CircleShape() { Set(radius, offset); } - void PhysicCircleShape::Set(float radius, Point const& offset) + void CircleShape::Set(float radius, Point const& offset) { radius_ = radius; offset_ = offset; } - void PhysicCircleShape::FitWorld(PhysicWorld* world) + void CircleShape::FitWorld(World* world) { KGE_ASSERT(world); circle_.m_radius = world->Stage2World(radius_); @@ -81,30 +81,30 @@ namespace kiwano } // - // PhysicBoxShape + // BoxShape // - PhysicBoxShape::PhysicBoxShape() - : PhysicShape(&polygon_) + BoxShape::BoxShape() + : Shape(&polygon_) , polygon_() , rotation_(0.f) { } - PhysicBoxShape::PhysicBoxShape(Vec2 const& size, Point const& offset, float rotation) - : PhysicBoxShape() + BoxShape::BoxShape(Vec2 const& size, Point const& offset, float rotation) + : BoxShape() { Set(size, offset, rotation); } - void PhysicBoxShape::Set(Vec2 const& size, Point const& offset, float rotation) + void BoxShape::Set(Vec2 const& size, Point const& offset, float rotation) { box_size_ = size; offset_ = offset; rotation_ = rotation; } - void PhysicBoxShape::FitWorld(PhysicWorld* world) + void BoxShape::FitWorld(World* world) { KGE_ASSERT(world); @@ -114,27 +114,27 @@ namespace kiwano } // - // PhysicPolygonShape + // PolygonShape // - PhysicPolygonShape::PhysicPolygonShape() - : PhysicShape(&polygon_) + PolygonShape::PolygonShape() + : Shape(&polygon_) , polygon_() { } - PhysicPolygonShape::PhysicPolygonShape(Vector const& vertexs) - : PhysicPolygonShape() + PolygonShape::PolygonShape(Vector const& vertexs) + : PolygonShape() { Set(vertexs); } - void PhysicPolygonShape::Set(Vector const& vertexs) + void PolygonShape::Set(Vector const& vertexs) { vertexs_ = vertexs; } - void PhysicPolygonShape::FitWorld(PhysicWorld* world) + void PolygonShape::FitWorld(World* world) { KGE_ASSERT(world); @@ -149,28 +149,28 @@ namespace kiwano } // - // PhysicEdgeShape + // EdgeShape // - PhysicEdgeShape::PhysicEdgeShape() - : PhysicShape(&edge_) + EdgeShape::EdgeShape() + : Shape(&edge_) , edge_() { } - PhysicEdgeShape::PhysicEdgeShape(Point const& p1, Point const& p2) - : PhysicEdgeShape() + EdgeShape::EdgeShape(Point const& p1, Point const& p2) + : EdgeShape() { Set(p1, p2); } - void PhysicEdgeShape::Set(Point const& p1, Point const& p2) + void EdgeShape::Set(Point const& p1, Point const& p2) { p_[0] = p1; p_[1] = p2; } - void PhysicEdgeShape::FitWorld(PhysicWorld* world) + void EdgeShape::FitWorld(World* world) { KGE_ASSERT(world); @@ -180,29 +180,29 @@ namespace kiwano } // - // PhysicChainShape + // ChainShape // - PhysicChainShape::PhysicChainShape() - : PhysicShape(&chain_) + ChainShape::ChainShape() + : Shape(&chain_) , chain_() , loop_(false) { } - PhysicChainShape::PhysicChainShape(Vector const& vertexs, bool loop) - : PhysicChainShape() + ChainShape::ChainShape(Vector const& vertexs, bool loop) + : ChainShape() { Set(vertexs, loop); } - void PhysicChainShape::Set(Vector const& vertexs, bool loop) + void ChainShape::Set(Vector const& vertexs, bool loop) { vertexs_ = vertexs; loop_ = loop; } - void PhysicChainShape::FitWorld(PhysicWorld* world) + void ChainShape::FitWorld(World* world) { KGE_ASSERT(world); diff --git a/src/kiwano-physics/Shape.h b/src/kiwano-physics/Shape.h index 1d51a5df..0d891f62 100644 --- a/src/kiwano-physics/Shape.h +++ b/src/kiwano-physics/Shape.h @@ -25,37 +25,37 @@ namespace kiwano { namespace physics { - class PhysicWorld; + class World; // 形状基类 - class KGE_API PhysicShape + class KGE_API Shape { public: - PhysicShape(); - PhysicShape(b2Shape* shape); + Shape(); + Shape(b2Shape* shape); b2Shape* GetB2Shape(); const b2Shape* GetB2Shape() const; void SetB2Shape(b2Shape* shape); - virtual void FitWorld(PhysicWorld* world) {} + virtual void FitWorld(World* world) {} protected: b2Shape* shape_; }; // 圆形形状 - class KGE_API PhysicCircleShape - : public PhysicShape + class KGE_API CircleShape + : public Shape { public: - PhysicCircleShape(); + CircleShape(); - PhysicCircleShape(float radius, Point const& offset = Point()); + CircleShape(float radius, Point const& offset = Point()); void Set(float radius, Point const& offset = Point()); - void FitWorld(PhysicWorld* world) override; + void FitWorld(World* world) override; protected: float radius_; @@ -64,17 +64,17 @@ namespace kiwano }; // 盒子形状 - class KGE_API PhysicBoxShape - : public PhysicShape + class KGE_API BoxShape + : public Shape { public: - PhysicBoxShape(); + BoxShape(); - PhysicBoxShape(Vec2 const& size, Point const& offset = Point(), float rotation = 0.f); + BoxShape(Vec2 const& size, Point const& offset = Point(), float rotation = 0.f); void Set(Vec2 const& size, Point const& offset = Point(), float rotation = 0.f); - void FitWorld(PhysicWorld* world) override; + void FitWorld(World* world) override; protected: float rotation_; @@ -84,17 +84,17 @@ namespace kiwano }; // 多边形形状 - class KGE_API PhysicPolygonShape - : public PhysicShape + class KGE_API PolygonShape + : public Shape { public: - PhysicPolygonShape(); + PolygonShape(); - PhysicPolygonShape(Vector const& vertexs); + PolygonShape(Vector const& vertexs); void Set(Vector const& vertexs); - void FitWorld(PhysicWorld* world) override; + void FitWorld(World* world) override; protected: Vector vertexs_; @@ -102,17 +102,17 @@ namespace kiwano }; // 线段形状, 用于表示一条边 - class KGE_API PhysicEdgeShape - : public PhysicShape + class KGE_API EdgeShape + : public Shape { public: - PhysicEdgeShape(); + EdgeShape(); - PhysicEdgeShape(Point const& p1, Point const& p2); + EdgeShape(Point const& p1, Point const& p2); void Set(Point const& p1, Point const& p2); - void FitWorld(PhysicWorld* world) override; + void FitWorld(World* world) override; protected: Point p_[2]; @@ -120,17 +120,17 @@ namespace kiwano }; // 链式形状 - class KGE_API PhysicChainShape - : public PhysicShape + class KGE_API ChainShape + : public Shape { public: - PhysicChainShape(); + ChainShape(); - PhysicChainShape(Vector const& vertexs, bool loop = false); + ChainShape(Vector const& vertexs, bool loop = false); void Set(Vector const& vertexs, bool loop = false); - void FitWorld(PhysicWorld* world) override; + void FitWorld(World* world) override; protected: bool loop_; diff --git a/src/kiwano-physics/World.cpp b/src/kiwano-physics/World.cpp index 01ea268d..ea9a3226 100644 --- a/src/kiwano-physics/World.cpp +++ b/src/kiwano-physics/World.cpp @@ -29,12 +29,12 @@ namespace kiwano const float DefaultGlobalScale = 100.f; // 100 pixels per meters } - class PhysicWorld::DestructionListener : public b2DestructionListener + class World::DestructionListener : public b2DestructionListener { - PhysicWorld* world_; + World* world_; public: - DestructionListener(PhysicWorld* world) + DestructionListener(World* world) : world_(world) { } @@ -53,13 +53,13 @@ namespace kiwano } }; - class PhysicWorld::ContactListener + class World::ContactListener : public b2ContactListener { - PhysicWorld* world_; + World* world_; public: - ContactListener(PhysicWorld* world) + ContactListener(World* world) : world_(world) { } @@ -70,7 +70,7 @@ namespace kiwano void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) override { KGE_NOT_USED(contact); KGE_NOT_USED(impulse); } }; - PhysicWorld::PhysicWorld() + World::World() : world_(b2Vec2(0, 10.0f)) , vel_iter_(6) , pos_iter_(2) @@ -86,7 +86,7 @@ namespace kiwano world_.SetContactListener(contact_listener_); } - PhysicWorld::~PhysicWorld() + World::~World() { world_.SetDestructionListener(nullptr); if (destruction_listener_) @@ -110,7 +110,7 @@ namespace kiwano RemoveAllJoints(); } - void PhysicWorld::RemoveBody(PhysicBody* body) + void World::RemoveBody(Body* body) { if (body && body->GetB2Body()) { @@ -118,7 +118,7 @@ namespace kiwano } } - void PhysicWorld::RemoveAllBodies() + void World::RemoveAllBodies() { if (world_.GetBodyCount()) { @@ -132,7 +132,7 @@ namespace kiwano } } - void PhysicWorld::AddJoint(PhysicJoint* joint) + void World::AddJoint(Joint* joint) { if (joint) { @@ -140,7 +140,7 @@ namespace kiwano } } - void PhysicWorld::RemoveJoint(PhysicJoint* joint) + void World::RemoveJoint(Joint* joint) { if (joint) { @@ -159,7 +159,7 @@ namespace kiwano } } - void PhysicWorld::RemoveAllJoints() + void World::RemoveAllJoints() { if (world_.GetJointCount()) { @@ -178,14 +178,14 @@ namespace kiwano joints_.clear(); } - void PhysicWorld::JointRemoved(b2Joint* joint) + void World::JointRemoved(b2Joint* joint) { if (!removing_joint_ && joint) { auto iter = std::find_if( joints_.begin(), joints_.end(), - [joint](PhysicJoint* j) -> bool { return j->GetB2Joint() == joint; } + [joint](Joint* j) -> bool { return j->GetB2Joint() == joint; } ); if (iter != joints_.end()) @@ -195,36 +195,36 @@ namespace kiwano } } - b2World* PhysicWorld::GetB2World() + b2World* World::GetB2World() { return &world_; } - const b2World* PhysicWorld::GetB2World() const + const b2World* World::GetB2World() const { return &world_; } - Vec2 PhysicWorld::GetGravity() const + Vec2 World::GetGravity() const { b2Vec2 g = world_.GetGravity(); return Vec2(g.x, g.y); } - void PhysicWorld::SetGravity(Vec2 gravity) + void World::SetGravity(Vec2 gravity) { world_.SetGravity(b2Vec2(gravity.x, gravity.y)); } - void PhysicWorld::Update(Duration dt) + void World::Update(Duration dt) { Stage::Update(dt); b2Body* b2body = world_.GetBodyList(); while (b2body) { - PhysicBody* body = static_cast(b2body->GetUserData()); - if (body && body->GetType() != PhysicBody::Type::Static) + Body* body = static_cast(b2body->GetUserData()); + if (body && body->GetType() != Body::Type::Static) { body->UpdateFromActor(); } @@ -237,8 +237,8 @@ namespace kiwano b2body = world_.GetBodyList(); while (b2body) { - PhysicBody* body = static_cast(b2body->GetUserData()); - if (body && body->GetType() != PhysicBody::Type::Static) + Body* body = static_cast(b2body->GetUserData()); + if (body && body->GetType() != Body::Type::Static) { body->UpdateActor(); } diff --git a/src/kiwano-physics/World.h b/src/kiwano-physics/World.h index 5cebada3..74fd7c8d 100644 --- a/src/kiwano-physics/World.h +++ b/src/kiwano-physics/World.h @@ -28,17 +28,17 @@ namespace kiwano namespace physics { // 物理世界 - class KGE_API PhysicWorld + class KGE_API World : public Stage - , public PhysicContactDispatcher + , public ContactDispatcher { - friend class PhysicBody; - friend class PhysicJoint; + friend class Body; + friend class Joint; public: - PhysicWorld(); + World(); - virtual ~PhysicWorld(); + virtual ~World(); // 获取重力 Vec2 GetGravity() const; @@ -71,16 +71,16 @@ namespace kiwano private: // 移除物体 - void RemoveBody(PhysicBody* body); + void RemoveBody(Body* body); // 移除所有物体 void RemoveAllBodies(); // 添加关节 - void AddJoint(PhysicJoint* joint); + void AddJoint(Joint* joint); // 移除关节 - void RemoveJoint(PhysicJoint* joint); + void RemoveJoint(Joint* joint); // 移除所有关节 void RemoveAllJoints(); @@ -105,9 +105,9 @@ namespace kiwano ContactListener* contact_listener_; bool removing_joint_; - Vector joints_; + Vector joints_; }; - KGE_DECLARE_SMART_PTR(PhysicWorld); + KGE_DECLARE_SMART_PTR(World); } }