Revert "Merge branch 'Tryibion-rot-colliders'" (#1141)
This reverts commit73cb792989, reversing changes made tob4fe3a44aa.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user