Revert "Merge branch 'Tryibion-rot-colliders'" (#1141)

This reverts commit 73cb792989, reversing
changes made to b4fe3a44aa.
This commit is contained in:
Wojtek Figat
2024-03-07 23:24:40 +01:00
parent aca7913c93
commit 41cff47ca3
4 changed files with 12 additions and 124 deletions

View File

@@ -14,7 +14,6 @@
Collider::Collider(const SpawnParams& params)
: PhysicsColliderActor(params)
, _center(Float3::Zero)
, _colliderOrientation(Quaternion::Identity)
, _isTrigger(false)
, _shape(nullptr)
, _staticActor(nullptr)
@@ -45,36 +44,11 @@ void Collider::SetCenter(const Vector3& value)
_center = value;
if (_staticActor)
{
Quaternion result;
Quaternion::Multiply(Quaternion::Identity, _colliderOrientation, result);
PhysicsBackend::SetShapeLocalPose(_shape, _center, result);
PhysicsBackend::SetShapeLocalPose(_shape, _center, Quaternion::Identity);
}
else if (const RigidBody* rigidBody = GetAttachedRigidBody())
{
Quaternion result;
Quaternion::Multiply(_localTransform.Orientation, _colliderOrientation, result);
PhysicsBackend::SetShapeLocalPose(_shape, (_localTransform.Translation + result * _center) * rigidBody->GetScale(), result);
}
UpdateBounds();
}
void Collider::SetColliderOrientation(const Quaternion& value)
{
if (Quaternion::NearEqual(value, _colliderOrientation))
return;
_colliderOrientation = value;
if (_staticActor)
{
Quaternion result;
Quaternion::Multiply(Quaternion::Identity, _colliderOrientation, result);
PhysicsBackend::SetShapeLocalPose(_shape, _center, result);
}
else if (const RigidBody* rigidBody = GetAttachedRigidBody())
{
Quaternion result;
Quaternion::Multiply(_localTransform.Orientation, _colliderOrientation, result);
PhysicsBackend::SetShapeLocalPose(_shape, (_localTransform.Translation + result * _center) * rigidBody->GetScale(), result);
PhysicsBackend::SetShapeLocalPose(_shape, (_localTransform.Translation + _localTransform.Orientation * _center) * rigidBody->GetScale(), _localTransform.Orientation);
}
UpdateBounds();
}
@@ -194,10 +168,8 @@ void Collider::Attach(RigidBody* rigidBody)
// Attach
PhysicsBackend::AttachShape(_shape, rigidBody->GetPhysicsActor());
Quaternion result;
Quaternion::Multiply(_localTransform.Orientation, _colliderOrientation, result);
_cachedLocalPosePos = (_localTransform.Translation + result * _center) * rigidBody->GetScale();
_cachedLocalPoseRot = result;
_cachedLocalPosePos = (_localTransform.Translation + _localTransform.Orientation * _center) * rigidBody->GetScale();
_cachedLocalPoseRot = _localTransform.Orientation;
PhysicsBackend::SetShapeLocalPose(_shape, _cachedLocalPosePos, _cachedLocalPoseRot);
if (rigidBody->IsDuringPlay())
{
@@ -289,9 +261,7 @@ void Collider::CreateStaticActor()
_staticActor = PhysicsBackend::CreateRigidStaticActor(nullptr, _transform.Translation, _transform.Orientation, scene);
// Reset local pos of the shape and link it to the actor
Quaternion result;
Quaternion::Multiply(Quaternion::Identity, _colliderOrientation, result);
PhysicsBackend::SetShapeLocalPose(_shape, _center, result);
PhysicsBackend::SetShapeLocalPose(_shape, _center, Quaternion::Identity);
PhysicsBackend::AttachShape(_shape, _staticActor);
PhysicsBackend::AddSceneActor(scene, _staticActor);
@@ -434,19 +404,15 @@ void Collider::OnTransformChanged()
if (_staticActor)
{
Quaternion result;
Quaternion::Multiply(_localTransform.Orientation, _colliderOrientation, result);
PhysicsBackend::SetRigidActorPose(_staticActor, _transform.Translation, result);
PhysicsBackend::SetRigidActorPose(_staticActor, _transform.Translation, _transform.Orientation);
}
else if (const RigidBody* rigidBody = GetAttachedRigidBody())
{
Quaternion result;
Quaternion::Multiply(_localTransform.Orientation, _colliderOrientation, result);
const Vector3 localPosePos = (_localTransform.Translation + result * _center) * rigidBody->GetScale();
if (_cachedLocalPosePos != localPosePos || _cachedLocalPoseRot != result)
const Vector3 localPosePos = (_localTransform.Translation + _localTransform.Orientation * _center) * rigidBody->GetScale();
if (_cachedLocalPosePos != localPosePos || _cachedLocalPoseRot != _localTransform.Orientation)
{
_cachedLocalPosePos = localPosePos;
_cachedLocalPoseRot = result;
_cachedLocalPoseRot = _localTransform.Orientation;
PhysicsBackend::SetShapeLocalPose(_shape, localPosePos, _cachedLocalPoseRot);
}
}