From 46dfa503eb63a684a8b9856eebb1f3c59c4aa701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 13 Jul 2021 12:04:51 +0200 Subject: [PATCH] Update PhysicsDemo example --- examples/PhysicsDemo/main.cpp | 36 ++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/examples/PhysicsDemo/main.cpp b/examples/PhysicsDemo/main.cpp index 08ff56140..15f5d378b 100644 --- a/examples/PhysicsDemo/main.cpp +++ b/examples/PhysicsDemo/main.cpp @@ -170,8 +170,6 @@ int main() } } - Nz::Vector3f viewerPos = Nz::Vector3f::Zero(); - Nz::EulerAnglesf camAngles(0.f, 0.f, 0.f); Nz::Quaternionf camQuat(camAngles); @@ -215,21 +213,30 @@ int main() { auto view = registry.view(); for (auto [entity, gfxComponent] : view.each()) - { gfxComponent.AttachRenderable(colliderModel); - registry.patch(entity); - } } else { auto view = registry.view(); for (auto [entity, gfxComponent] : view.each()) - { gfxComponent.DetachRenderable(colliderModel); - registry.patch(entity); - } } } + else if (event.key.virtualKey == Nz::Keyboard::VKey::Space) + { + entt::entity entity = registry.create(); + auto& entityGfx = registry.emplace(entity); + entityGfx.AttachRenderable(model); + if (showColliders) + entityGfx.AttachRenderable(colliderModel); + + registry.emplace(entity); + + auto& entityPhys = registry.emplace(entity, physSytem.CreateRigidBody(shipCollider)); + entityPhys.SetMass(1.f); + entityPhys.SetAngularDamping(Nz::Vector3f::Zero()); + entityPhys.SetLinearDamping(0.f); + } break; @@ -261,6 +268,17 @@ int main() physSytem.Update(registry, 1000.f / 60.f); + auto spaceshipView = registry.view(); + for (auto&& [entity, node, _] : spaceshipView.each()) + { + if (entity == playerEntity) + continue; + + Nz::Vector3f spaceshipPos = node.GetPosition(Nz::CoordSys::Global); + if (spaceshipPos.GetSquaredLength() > Nz::IntegralPow(200.f, 2)) + registry.destroy(entity); + } + Nz::RigidBody3DComponent& playerShipBody = registry.get(playerEntity); Nz::Quaternionf currentRotation = playerShipBody.GetRotation(); @@ -310,7 +328,7 @@ int main() if (secondClock.GetMilliseconds() >= 1000) { - window.SetTitle(windowTitle + " - " + Nz::NumberToString(fps) + " FPS"); + window.SetTitle(windowTitle + " - " + Nz::NumberToString(fps) + " FPS" + " - " + Nz::NumberToString(registry.alive()) + " entities"); fps = 0;