Constraint 2D (#147)
* Rename all Constraint by [name]Constraint3D * Create Refs and Libraries for Constraint2D * Remove ref to PhysWorld in Constraints ctors * Update Constraint2d ctor to have RigiBodies first * Add New static function for all constraints and fix an oopsie * Add Contraint Library and remove all library useless aliases * Add ConstraintComponent2D * remove useless definition of Constraint2D library * Fix : getting the world of the constraint before having created it * Make the GetStaticBody function return a ref * Remove : Useless AddJoint Fonction and Update CreateJoint function * Update PhysicsSystem3D because GetStaticBody return now a ref * Oops * Having done something with the 3D and i was needing 2D * Add ConstraintComponent as friend of Collision and PhysicsComponent * Update all the Get[Static/Rigid]Body function so they return a pointer * fix the bugs caused by the commit before * update : CreateConstraint lambda for the nullptr case * remove the useless use of const pointer * Update : CreateConstraint function * Update ChangeLog.md
This commit is contained in:
29
SDK/include/NDK/Components/ConstraintComponent2D.inl
Normal file
29
SDK/include/NDK/Components/ConstraintComponent2D.inl
Normal file
@@ -0,0 +1,29 @@
|
||||
#include <NDK/Components/ConstraintComponent2D.hpp>
|
||||
#include <NDK/Components/PhysicsComponent2D.hpp>
|
||||
#include <NDK/Components/CollisionComponent2D.hpp>
|
||||
|
||||
namespace Ndk
|
||||
{
|
||||
template<typename T, typename ...Args>
|
||||
inline Nz::ObjectRef<T> ConstraintComponent2D::CreateConstraint(const Ndk::EntityHandle first, const Ndk::EntityHandle second, Args && ...args)
|
||||
{
|
||||
auto QueryBody = [](const Ndk::EntityHandle& entity) -> Nz::RigidBody2D*
|
||||
{
|
||||
if (entity->HasComponent<Ndk::PhysicsComponent2D>())
|
||||
return entity->GetComponent<Ndk::PhysicsComponent2D>().GetRigidBody();
|
||||
else if (entity->HasComponent<Ndk::CollisionComponent2D>())
|
||||
return entity->GetComponent<Ndk::CollisionComponent2D>().GetStaticBody();
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
Nz::RigidBody2D* body_first{ QueryBody(first) }, body_second{ QueryBody(second) };
|
||||
|
||||
NazaraAssert(body_first && body_second, "RigidBodies of CollisionComponent2D or PhysicsComponent2D must be valid");
|
||||
|
||||
Nz::ObjectRef<T> constraint = T::New(*body_first, *body_second, std::forward<Args>(args)...);
|
||||
|
||||
m_constraints.push_back(constraint);
|
||||
|
||||
return constraint;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user