Sdk/[Collision|Physics]Component2D: Set internal rigidbody userdata to the entity id

This commit is contained in:
Lynix 2018-02-17 14:22:25 +01:00
parent af75e2cc68
commit 166ecffc32
3 changed files with 5 additions and 1 deletions

View File

@ -102,6 +102,7 @@ Nazara Development Kit:
- ⚠️ Renamed World::Update() to World::Refresh() for more clarity and to differentiate it from World::Update(elapsedTime) - ⚠️ Renamed World::Update() to World::Refresh() for more clarity and to differentiate it from World::Update(elapsedTime)
- World entity ids are now reused from lowest to highest (they were previously reused in reverse order of death) - World entity ids are now reused from lowest to highest (they were previously reused in reverse order of death)
- World now has an internal profiler, allowing to measure the refresh and system update time - World now has an internal profiler, allowing to measure the refresh and system update time
- CollisionComponent[2D|3D] and PhysicsComponent[2D|3D] now configures their internal RigidBody userdata to the entity ID they belong to (useful for callbacks)
# 0.4: # 0.4:

View File

@ -59,6 +59,7 @@ namespace Ndk
Nz::PhysWorld2D& physWorld = entityWorld->GetSystem<PhysicsSystem2D>().GetWorld(); Nz::PhysWorld2D& physWorld = entityWorld->GetSystem<PhysicsSystem2D>().GetWorld();
m_staticBody = std::make_unique<Nz::RigidBody2D>(&physWorld, 0.f, m_geom); m_staticBody = std::make_unique<Nz::RigidBody2D>(&physWorld, 0.f, m_geom);
m_staticBody->SetUserdata(reinterpret_cast<void*>(static_cast<std::ptrdiff_t>(m_entity->GetId())));
Nz::Matrix4f matrix; Nz::Matrix4f matrix;
if (m_entity->HasComponent<NodeComponent>()) if (m_entity->HasComponent<NodeComponent>())

View File

@ -8,6 +8,7 @@
#include <NDK/Components/CollisionComponent2D.hpp> #include <NDK/Components/CollisionComponent2D.hpp>
#include <NDK/Components/NodeComponent.hpp> #include <NDK/Components/NodeComponent.hpp>
#include <NDK/Systems/PhysicsSystem2D.hpp> #include <NDK/Systems/PhysicsSystem2D.hpp>
#include <memory>
namespace Ndk namespace Ndk
{ {
@ -40,8 +41,9 @@ namespace Ndk
else else
matrix.MakeIdentity(); matrix.MakeIdentity();
m_object.reset(new Nz::RigidBody2D(&world, 1.f, geom)); m_object = std::make_unique<Nz::RigidBody2D>(&world, 1.f, geom);
m_object->SetPosition(Nz::Vector2f(matrix.GetTranslation())); m_object->SetPosition(Nz::Vector2f(matrix.GetTranslation()));
m_object->SetUserdata(reinterpret_cast<void*>(static_cast<std::ptrdiff_t>(m_entity->GetId())));
} }
/*! /*!