Merge branch 'GoaLitiuM-physicsscene_change_fix'
This commit is contained in:
@@ -569,7 +569,7 @@ void RigidBody::OnTransformChanged()
|
||||
|
||||
void RigidBody::OnPhysicsSceneChanged(PhysicsScene* previous)
|
||||
{
|
||||
PhysicsBackend::RemoveSceneActor(previous->GetPhysicsScene(), _actor);
|
||||
PhysicsBackend::RemoveSceneActor(previous->GetPhysicsScene(), _actor, true);
|
||||
void* scene = GetPhysicsScene()->GetPhysicsScene();
|
||||
PhysicsBackend::AddSceneActor(scene, _actor);
|
||||
const bool putToSleep = !_startAwake && GetEnableSimulation() && !GetIsKinematic() && IsActiveInHierarchy();
|
||||
|
||||
@@ -438,7 +438,7 @@ void Collider::OnPhysicsSceneChanged(PhysicsScene* previous)
|
||||
|
||||
if (_staticActor != nullptr)
|
||||
{
|
||||
PhysicsBackend::RemoveSceneActor(previous->GetPhysicsScene(), _staticActor);
|
||||
PhysicsBackend::RemoveSceneActor(previous->GetPhysicsScene(), _staticActor, true);
|
||||
void* scene = GetPhysicsScene()->GetPhysicsScene();
|
||||
PhysicsBackend::AddSceneActor(scene, _staticActor);
|
||||
}
|
||||
|
||||
@@ -1998,11 +1998,14 @@ void PhysicsBackend::AddSceneActor(void* scene, void* actor)
|
||||
FlushLocker.Unlock();
|
||||
}
|
||||
|
||||
void PhysicsBackend::RemoveSceneActor(void* scene, void* actor)
|
||||
void PhysicsBackend::RemoveSceneActor(void* scene, void* actor, bool immediately)
|
||||
{
|
||||
auto scenePhysX = (ScenePhysX*)scene;
|
||||
FlushLocker.Lock();
|
||||
scenePhysX->RemoveActors.Add((PxActor*)actor);
|
||||
if (immediately)
|
||||
scenePhysX->Scene->removeActor(*(PxActor*)actor);
|
||||
else
|
||||
scenePhysX->RemoveActors.Add((PxActor*)actor);
|
||||
FlushLocker.Unlock();
|
||||
}
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ public:
|
||||
static void SetSceneBounceThresholdVelocity(void* scene, float value);
|
||||
static void SetSceneOrigin(void* scene, const Vector3& oldOrigin, const Vector3& newOrigin);
|
||||
static void AddSceneActor(void* scene, void* actor);
|
||||
static void RemoveSceneActor(void* scene, void* actor);
|
||||
static void RemoveSceneActor(void* scene, void* actor, bool immediately = false);
|
||||
static void AddSceneActorAction(void* scene, void* actor, ActionType action);
|
||||
#if COMPILE_WITH_PROFILER
|
||||
static void GetSceneStatistics(void* scene, PhysicsStatistics& result);
|
||||
|
||||
@@ -115,7 +115,7 @@ void PhysicsBackend::AddSceneActor(void* scene, void* actor)
|
||||
{
|
||||
}
|
||||
|
||||
void PhysicsBackend::RemoveSceneActor(void* scene, void* actor)
|
||||
void PhysicsBackend::RemoveSceneActor(void* scene, void* actor, bool immediately)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -2582,7 +2582,7 @@ void TerrainPatch::Deserialize(DeserializeStream& stream, ISerializeModifier* mo
|
||||
|
||||
void TerrainPatch::OnPhysicsSceneChanged(PhysicsScene* previous)
|
||||
{
|
||||
PhysicsBackend::RemoveSceneActor(previous->GetPhysicsScene(), _physicsActor);
|
||||
PhysicsBackend::RemoveSceneActor(previous->GetPhysicsScene(), _physicsActor, true);
|
||||
void* scene = _terrain->GetPhysicsScene()->GetPhysicsScene();
|
||||
PhysicsBackend::AddSceneActor(scene, _physicsActor);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user