summaryrefslogtreecommitdiffstats
path: root/main/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'main/main.cpp')
-rw-r--r--main/main.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/main/main.cpp b/main/main.cpp
index 439cd385c0..75797e31de 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -80,6 +80,7 @@
#include "servers/navigation_server_2d.h"
#include "servers/navigation_server_2d_dummy.h"
#include "servers/physics_server_2d.h"
+#include "servers/physics_server_2d_dummy.h"
#ifndef _3D_DISABLED
#include "servers/physics_server_3d.h"
@@ -340,7 +341,15 @@ void initialize_physics() {
// Physics server not found, Use the default physics
physics_server_2d = PhysicsServer2DManager::get_singleton()->new_default_server();
}
- ERR_FAIL_NULL(physics_server_2d);
+
+ // Fall back to dummy if no default server has been registered.
+ if (!physics_server_2d) {
+ WARN_PRINT(vformat("Falling back to dummy PhysicsServer2D; 2D physics functionality will be disabled. If this is intended, set the %s project setting to Dummy.", PhysicsServer2DManager::setting_property_name));
+ physics_server_2d = memnew(PhysicsServer2DDummy);
+ }
+
+ // Should be impossible, but make sure it's not null.
+ ERR_FAIL_NULL_MSG(physics_server_2d, "Failed to initialize PhysicsServer2D.");
physics_server_2d->init();
}