diff --git a/Source/Engine/Physics/Physics.cpp b/Source/Engine/Physics/Physics.cpp
index ecd7c1093..24bb4c1a6 100644
--- a/Source/Engine/Physics/Physics.cpp
+++ b/Source/Engine/Physics/Physics.cpp
@@ -184,6 +184,15 @@ PhysicsScene* Physics::FindScene(const StringView& name)
return nullptr;
}
+void Physics::DeleteScene(PhysicsScene* scene)
+{
+ if (scene == nullptr || scene == DefaultScene)
+ return;
+ scene->CollectResults();
+ Scenes.RemoveKeepOrder(scene);
+ Delete(scene);
+}
+
bool Physics::GetAutoSimulation()
{
return !DefaultScene || DefaultScene->GetAutoSimulation();
diff --git a/Source/Engine/Physics/Physics.h b/Source/Engine/Physics/Physics.h
index 85cd5e77b..11fd3fb80 100644
--- a/Source/Engine/Physics/Physics.h
+++ b/Source/Engine/Physics/Physics.h
@@ -32,6 +32,11 @@ API_CLASS(Static) class FLAXENGINE_API Physics
///
API_FUNCTION() static PhysicsScene* FindScene(const StringView& name);
+ ///
+ /// Delete an existing scene (excluding the default one).
+ ///
+ API_FUNCTION() static void DeleteScene(PhysicsScene* scene);
+
public:
///
/// The automatic simulation feature. True if perform physics simulation after on fixed update by auto, otherwise user should do it.