@@ -159,9 +159,10 @@ void RigidBody::SetCenterOfMassOffset(const Float3& value)
|
||||
{
|
||||
if (value == _centerOfMassOffset)
|
||||
return;
|
||||
Float3 delta = value - _centerOfMassOffset;
|
||||
_centerOfMassOffset = value;
|
||||
if (_actor)
|
||||
PhysicsBackend::SetRigidDynamicActorCenterOfMassOffset(_actor, _centerOfMassOffset);
|
||||
PhysicsBackend::AddRigidDynamicActorCenterOfMassOffset(_actor, delta);
|
||||
}
|
||||
|
||||
void RigidBody::SetConstraints(const RigidbodyConstraints value)
|
||||
@@ -356,9 +357,7 @@ void RigidBody::OnDebugDrawSelected()
|
||||
{
|
||||
const auto collider = Cast<Collider>(child);
|
||||
if (collider && collider->GetAttachedRigidBody() == this)
|
||||
{
|
||||
collider->OnDebugDrawSelf();
|
||||
}
|
||||
}
|
||||
|
||||
Actor::OnDebugDrawSelected();
|
||||
@@ -534,7 +533,7 @@ void RigidBody::BeginPlay(SceneBeginData* data)
|
||||
|
||||
// Apply the Center Of Mass offset
|
||||
if (!_centerOfMassOffset.IsZero())
|
||||
PhysicsBackend::SetRigidDynamicActorCenterOfMassOffset(_actor, _centerOfMassOffset);
|
||||
PhysicsBackend::AddRigidDynamicActorCenterOfMassOffset(_actor, _centerOfMassOffset);
|
||||
|
||||
// Register actor
|
||||
PhysicsBackend::AddSceneActor(scene, _actor);
|
||||
|
||||
@@ -2482,7 +2482,7 @@ Vector3 PhysicsBackend::GetRigidDynamicActorCenterOfMass(void* actor)
|
||||
return P2C(actorPhysX->getCMassLocalPose().p);
|
||||
}
|
||||
|
||||
void PhysicsBackend::SetRigidDynamicActorCenterOfMassOffset(void* actor, const Float3& value)
|
||||
void PhysicsBackend::AddRigidDynamicActorCenterOfMassOffset(void* actor, const Float3& value)
|
||||
{
|
||||
auto actorPhysX = (PxRigidDynamic*)actor;
|
||||
auto pose = actorPhysX->getCMassLocalPose();
|
||||
|
||||
@@ -164,7 +164,7 @@ public:
|
||||
static Vector3 GetRigidDynamicActorAngularVelocity(void* actor);
|
||||
static void SetRigidDynamicActorAngularVelocity(void* actor, const Vector3& value, bool wakeUp);
|
||||
static Vector3 GetRigidDynamicActorCenterOfMass(void* actor);
|
||||
static void SetRigidDynamicActorCenterOfMassOffset(void* actor, const Float3& value);
|
||||
static void AddRigidDynamicActorCenterOfMassOffset(void* actor, const Float3& value);
|
||||
static bool GetRigidDynamicActorIsSleeping(void* actor);
|
||||
static void RigidDynamicActorSleep(void* actor);
|
||||
static void RigidDynamicActorWakeUp(void* actor);
|
||||
|
||||
Reference in New Issue
Block a user