Fix unity build compilation

This commit is contained in:
SirLynix 2023-04-05 13:23:37 +02:00 committed by Jérôme Leclercq
parent d610baf920
commit 60ed70d3fd
2 changed files with 32 additions and 25 deletions

View File

@ -16,37 +16,40 @@
namespace Nz namespace Nz
{ {
class CallbackHitResult : public btCollisionWorld::RayResultCallback namespace NAZARA_ANONYMOUS_NAMESPACE
{ {
public: class CallbackHitResult : public btCollisionWorld::RayResultCallback
CallbackHitResult(const Vector3f& from, const Vector3f& to, const FunctionRef<std::optional<float>(const BulletPhysWorld3D::RaycastHit& hitInfo)>& callback) : {
m_callback(callback), public:
m_from(from), CallbackHitResult(const Vector3f& from, const Vector3f& to, const FunctionRef<std::optional<float>(const BulletPhysWorld3D::RaycastHit& hitInfo)>& callback) :
m_to(to) m_callback(callback),
{ m_from(from),
} m_to(to)
{
}
btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace) override btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace) override
{ {
m_collisionObject = rayResult.m_collisionObject; m_collisionObject = rayResult.m_collisionObject;
BulletPhysWorld3D::RaycastHit hitInfo; BulletPhysWorld3D::RaycastHit hitInfo;
hitInfo.fraction = rayResult.m_hitFraction; hitInfo.fraction = rayResult.m_hitFraction;
hitInfo.hitPosition = Lerp(m_from, m_to, rayResult.m_hitFraction); hitInfo.hitPosition = Lerp(m_from, m_to, rayResult.m_hitFraction);
hitInfo.hitNormal = FromBullet((normalInWorldSpace) ? rayResult.m_hitNormalLocal : m_collisionObject->getWorldTransform().getBasis() * rayResult.m_hitNormalLocal); hitInfo.hitNormal = FromBullet((normalInWorldSpace) ? rayResult.m_hitNormalLocal : m_collisionObject->getWorldTransform().getBasis() * rayResult.m_hitNormalLocal);
if (const btRigidBody* body = btRigidBody::upcast(m_collisionObject)) if (const btRigidBody* body = btRigidBody::upcast(m_collisionObject))
hitInfo.hitBody = static_cast<BulletRigidBody3D*>(body->getUserPointer()); hitInfo.hitBody = static_cast<BulletRigidBody3D*>(body->getUserPointer());
m_closestHitFraction = std::max(m_callback(hitInfo).value_or(m_closestHitFraction), 0.f); m_closestHitFraction = std::max(m_callback(hitInfo).value_or(m_closestHitFraction), 0.f);
return m_closestHitFraction; return m_closestHitFraction;
} }
private: private:
const FunctionRef<std::optional<float>(const BulletPhysWorld3D::RaycastHit& hitInfo)>& m_callback; const FunctionRef<std::optional<float>(const BulletPhysWorld3D::RaycastHit& hitInfo)>& m_callback;
Vector3f m_from; Vector3f m_from;
Vector3f m_to; Vector3f m_to;
}; };
}
struct BulletPhysWorld3D::BulletWorld struct BulletPhysWorld3D::BulletWorld
{ {
@ -104,6 +107,8 @@ namespace Nz
bool BulletPhysWorld3D::RaycastQuery(const Vector3f& from, const Vector3f& to, const FunctionRef<std::optional<float>(const RaycastHit& hitInfo)>& callback) bool BulletPhysWorld3D::RaycastQuery(const Vector3f& from, const Vector3f& to, const FunctionRef<std::optional<float>(const RaycastHit& hitInfo)>& callback)
{ {
NAZARA_USE_ANONYMOUS_NAMESPACE
CallbackHitResult resultHandler(from, to, callback); CallbackHitResult resultHandler(from, to, callback);
m_world->dynamicWorld.rayTest(ToBullet(from), ToBullet(to), resultHandler); m_world->dynamicWorld.rayTest(ToBullet(from), ToBullet(to), resultHandler);

View File

@ -350,6 +350,8 @@ namespace Nz
bool JoltPhysWorld3D::RaycastQuery(const Vector3f& from, const Vector3f& to, const FunctionRef<std::optional<float>(const RaycastHit& hitInfo)>& callback) bool JoltPhysWorld3D::RaycastQuery(const Vector3f& from, const Vector3f& to, const FunctionRef<std::optional<float>(const RaycastHit& hitInfo)>& callback)
{ {
NAZARA_USE_ANONYMOUS_NAMESPACE
JPH::RRayCast rayCast; JPH::RRayCast rayCast;
rayCast.mDirection = ToJolt(to - from); rayCast.mDirection = ToJolt(to - from);
rayCast.mOrigin = ToJolt(from); rayCast.mOrigin = ToJolt(from);