From 72bcb1fda7397495a7254c17871a839c0947b805 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Nov 2017 23:20:45 +0100 Subject: [PATCH 1/5] Physics2D/RigidBody2D: Fix SetGeom attribute copy --- include/Nazara/Physics2D/RigidBody2D.hpp | 3 +- src/Nazara/Physics2D/RigidBody2D.cpp | 43 ++++++++++++++---------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index 4494c690c..49df6a775 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -74,10 +74,11 @@ namespace Nz static constexpr std::size_t InvalidShapeIndex = std::numeric_limits::max(); private: - void CopyBodyData(cpBody* body); cpBody* Create(float mass = 1.f, float moment = 1.f); void Destroy(); + static void CopyBodyData(cpBody* from, cpBody* to); + std::vector m_shapes; Collider2DRef m_geom; cpBody* m_handle; diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index 0931e0a45..fd54909b4 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -44,7 +44,7 @@ namespace Nz m_handle = Create(m_mass, object.GetMomentOfInertia()); SetGeom(object.GetGeom(), false); - CopyBodyData(object.GetHandle()); + CopyBodyData(object.GetHandle(), m_handle); for (std::size_t i = 0; i < m_shapes.size(); ++i) m_shapes[i]->bb = cpShapeCacheBB(object.m_shapes[i]); @@ -243,7 +243,7 @@ namespace Nz cpBody* newHandle = Create(static_cast(mass), static_cast(moment)); - CopyBodyData(m_handle); + CopyBodyData(m_handle, newHandle); Destroy(); m_handle = newHandle; @@ -403,25 +403,20 @@ namespace Nz return *this; } - void RigidBody2D::CopyBodyData(cpBody* body) - { - cpBodySetAngle(m_handle, cpBodyGetAngle(body)); - cpBodySetAngularVelocity(m_handle, cpBodyGetAngularVelocity(body)); - cpBodySetCenterOfGravity(m_handle, cpBodyGetCenterOfGravity(body)); - cpBodySetForce(m_handle, cpBodyGetForce(body)); - cpBodySetPosition(m_handle, cpBodyGetPosition(body)); - cpBodySetTorque(m_handle, cpBodyGetTorque(body)); - cpBodySetVelocity(m_handle, cpBodyGetVelocity(body)); - } - cpBody* RigidBody2D::Create(float mass, float moment) { - cpBody* handle = cpBodyNew(mass, moment); + cpBody* handle; + if (IsKinematic()) + { + if (IsStatic()) + handle = cpBodyNewStatic(); + else + handle = cpBodyNewKinematic(); + } + else + handle = cpBodyNew(mass, moment); + cpBodySetUserData(handle, this); - - if (mass <= 0.f) - cpBodySetType(handle, CP_BODY_TYPE_KINEMATIC); - cpSpaceAddBody(m_world->GetHandle(), handle); return handle; @@ -443,4 +438,16 @@ namespace Nz } m_shapes.clear(); } + + void RigidBody2D::CopyBodyData(cpBody* from, cpBody* to) + { + cpBodySetAngle(to, cpBodyGetAngle(from)); + cpBodySetAngularVelocity(to, cpBodyGetAngularVelocity(from)); + cpBodySetCenterOfGravity(to, cpBodyGetCenterOfGravity(from)); + cpBodySetForce(to, cpBodyGetForce(from)); + cpBodySetPosition(to, cpBodyGetPosition(from)); + cpBodySetTorque(to, cpBodyGetTorque(from)); + cpBodySetVelocity(to, cpBodyGetVelocity(from)); + } + } From 71ee30d570e60ceb01c4d8e342990aa75df1c798 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Nov 2017 23:21:11 +0100 Subject: [PATCH 2/5] Sdk/GraphicsComponent: Fix clear method --- SDK/include/NDK/Components/GraphicsComponent.inl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index 275fe9a9d..cd31cde5e 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -55,8 +55,15 @@ namespace Ndk inline void GraphicsComponent::Clear() { + m_materialEntries.clear(); m_renderables.clear(); + if (m_reflectiveMaterialCount > 0) + { + m_reflectiveMaterialCount = 0; + InvalidateReflectionMap(); + } + InvalidateBoundingVolume(); } From 9eaf995b2192451d4833f3dbb06f37afcd609927 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Nov 2017 23:21:32 +0100 Subject: [PATCH 3/5] Sdk/CollisionComponent2D: C++14 cleanup --- SDK/src/NDK/Components/CollisionComponent2D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SDK/src/NDK/Components/CollisionComponent2D.cpp b/SDK/src/NDK/Components/CollisionComponent2D.cpp index 5a37d5e04..974a89cd8 100644 --- a/SDK/src/NDK/Components/CollisionComponent2D.cpp +++ b/SDK/src/NDK/Components/CollisionComponent2D.cpp @@ -58,7 +58,7 @@ namespace Ndk NazaraAssert(entityWorld->HasSystem(), "World must have a physics system"); Nz::PhysWorld2D& physWorld = entityWorld->GetSystem().GetWorld(); - m_staticBody.reset(new Nz::RigidBody2D(&physWorld, 0.f, m_geom)); + m_staticBody = std::make_unique(&physWorld, 0.f, m_geom); Nz::Matrix4f matrix; if (m_entity->HasComponent()) From 69590b52a7229e8b8a41691a192461e83750c1dc Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Nov 2017 23:22:41 +0100 Subject: [PATCH 4/5] Update ChangeLog.md --- ChangeLog.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index 3e4eccbc0..8be273e9b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -24,7 +24,7 @@ Nazara Engine: - Fix String movement constructor, which was leaving a null shared string (which was not reusable) - Add Flags::Test method, in order to test one or multiple flags at once. - ⚠️ Vector2, Vector3 and Vector4 array/pointer constructor is now explicit to prevent some mistakes as `Vector2 vec2; vec2 = 0;` - +- Fix RigidBody2D::SetGeom attribute copy and possible crash with static objects Nazara Development Kit: - Added ImageWidget (#139) @@ -46,6 +46,7 @@ Nazara Development Kit: - Fix TextAreaWidget cursor sometimes showing up in readonly mode - ⚠️ BaseWidget::OnKeyPressed now returns a boolean to indicate if it should block default action (such as tab to switch to the previous/next widget) - Pressing tab/shift-tab will now move to the next/previous widget able to be focused on +- Fix GraphicsComponent::Clear method now clearing reflective states # 0.4: From b7d5e8e430245cca88e853e7985a67a61cf86715 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Nov 2017 23:30:32 +0100 Subject: [PATCH 5/5] Fix readme link to AppVeyor --- readme.md | 2 +- readme_fr.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 753a00523..2c470a751 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ Platform | Build Status | Nightlies ------------ | ------------- | ------------- -Windows | [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/dj5qx7axym4uakmy/branch/master?svg=true)](https://ci.appveyor.com/project/DPSLynix/nazaraengine/branch/master) | MSVC14: [x86](https://ci.appveyor.com/api/projects/DPSLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32) [x86_64](https://ci.appveyor.com/api/projects/DPSLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) +Windows | [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/dj5qx7axym4uakmy/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) | MSVC14: [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32) [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) Linux | [![Travis CI Build Status](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine.svg?branch=master)](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine) | No # Nazara Engine diff --git a/readme_fr.md b/readme_fr.md index 22215c42c..639ef666c 100644 --- a/readme_fr.md +++ b/readme_fr.md @@ -1,6 +1,6 @@ Platforme | Build Status | Nightlies ------------ | ------------- | ------------- -Windows | [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/dj5qx7axym4uakmy/branch/master?svg=true)](https://ci.appveyor.com/project/DPSLynix/nazaraengine/branch/master) | MSVC14: [x86](https://ci.appveyor.com/api/projects/DPSLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32) [x86_64](https://ci.appveyor.com/api/projects/DPSLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) +Windows | [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/dj5qx7axym4uakmy/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) | MSVC14: [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32) [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) Linux | [![Travis CI Build Status](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine.svg?branch=master)](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine) | Non # Nazara Engine