summaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorA Thousand Ships <96648715+AThousandShips@users.noreply.github.com>2024-02-22 15:14:29 +0100
committerA Thousand Ships <96648715+AThousandShips@users.noreply.github.com>2024-02-22 16:23:48 +0100
commitf06222e487355749ca9d10f9a00342481ffd5c4c (patch)
treea03b342f14d8691e9845bb418268cc2bc4ac82ef /main
parent9c626b623619d89ce3e02a8422a4de977e016d1b (diff)
downloadredot-engine-f06222e487355749ca9d10f9a00342481ffd5c4c.tar.gz
[Physics] Fix export with 3D disabled
Diffstat (limited to 'main')
-rw-r--r--main/main.cpp22
-rw-r--r--main/performance.cpp10
2 files changed, 32 insertions, 0 deletions
diff --git a/main/main.cpp b/main/main.cpp
index 4c9c159f47..c520ebecd3 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -74,7 +74,9 @@
#include "servers/navigation_server_3d.h"
#include "servers/navigation_server_3d_dummy.h"
#include "servers/physics_server_2d.h"
+#ifndef _3D_DISABLED
#include "servers/physics_server_3d.h"
+#endif // _3D_DISABLED
#include "servers/register_server_types.h"
#include "servers/rendering/rendering_server_default.h"
#include "servers/text/text_server_dummy.h"
@@ -144,8 +146,10 @@ static RenderingServer *rendering_server = nullptr;
static CameraServer *camera_server = nullptr;
static XRServer *xr_server = nullptr;
static TextServerManager *tsman = nullptr;
+#ifndef _3D_DISABLED
static PhysicsServer3DManager *physics_server_3d_manager = nullptr;
static PhysicsServer3D *physics_server_3d = nullptr;
+#endif // _3D_DISABLED
static PhysicsServer2DManager *physics_server_2d_manager = nullptr;
static PhysicsServer2D *physics_server_2d = nullptr;
static NavigationServer3D *navigation_server_3d = nullptr;
@@ -293,6 +297,7 @@ static Vector<String> get_files_with_extension(const String &p_root, const Strin
// FIXME: Could maybe be moved to have less code in main.cpp.
void initialize_physics() {
+#ifndef _3D_DISABLED
/// 3D Physics Server
physics_server_3d = PhysicsServer3DManager::get_singleton()->new_server(
GLOBAL_GET(PhysicsServer3DManager::setting_property_name));
@@ -302,6 +307,7 @@ void initialize_physics() {
}
ERR_FAIL_NULL(physics_server_3d);
physics_server_3d->init();
+#endif // _3D_DISABLED
// 2D Physics server
physics_server_2d = PhysicsServer2DManager::get_singleton()->new_server(
@@ -315,8 +321,10 @@ void initialize_physics() {
}
void finalize_physics() {
+#ifndef _3D_DISABLED
physics_server_3d->finish();
memdelete(physics_server_3d);
+#endif // _3D_DISABLED
physics_server_2d->finish();
memdelete(physics_server_2d);
@@ -655,7 +663,9 @@ Error Main::test_setup() {
tsman->add_interface(ts);
}
+#ifndef _3D_DISABLED
physics_server_3d_manager = memnew(PhysicsServer3DManager);
+#endif // _3D_DISABLED
physics_server_2d_manager = memnew(PhysicsServer2DManager);
// From `Main::setup2()`.
@@ -783,9 +793,11 @@ void Main::test_cleanup() {
if (tsman) {
memdelete(tsman);
}
+#ifndef _3D_DISABLED
if (physics_server_3d_manager) {
memdelete(physics_server_3d_manager);
}
+#endif // _3D_DISABLED
if (physics_server_2d_manager) {
memdelete(physics_server_2d_manager);
}
@@ -2561,7 +2573,9 @@ Error Main::setup2() {
tsman->add_interface(ts);
}
+#ifndef _3D_DISABLED
physics_server_3d_manager = memnew(PhysicsServer3DManager);
+#endif // _3D_DISABLED
physics_server_2d_manager = memnew(PhysicsServer2DManager);
register_server_types();
@@ -3925,14 +3939,18 @@ bool Main::iteration() {
uint64_t physics_begin = OS::get_singleton()->get_ticks_usec();
+#ifndef _3D_DISABLED
PhysicsServer3D::get_singleton()->sync();
PhysicsServer3D::get_singleton()->flush_queries();
+#endif // _3D_DISABLED
PhysicsServer2D::get_singleton()->sync();
PhysicsServer2D::get_singleton()->flush_queries();
if (OS::get_singleton()->get_main_loop()->physics_process(physics_step * time_scale)) {
+#ifndef _3D_DISABLED
PhysicsServer3D::get_singleton()->end_sync();
+#endif // _3D_DISABLED
PhysicsServer2D::get_singleton()->end_sync();
exit = true;
@@ -3948,8 +3966,10 @@ bool Main::iteration() {
message_queue->flush();
+#ifndef _3D_DISABLED
PhysicsServer3D::get_singleton()->end_sync();
PhysicsServer3D::get_singleton()->step(physics_step * time_scale);
+#endif // _3D_DISABLED
PhysicsServer2D::get_singleton()->end_sync();
PhysicsServer2D::get_singleton()->step(physics_step * time_scale);
@@ -4194,9 +4214,11 @@ void Main::cleanup(bool p_force) {
if (tsman) {
memdelete(tsman);
}
+#ifndef _3D_DISABLED
if (physics_server_3d_manager) {
memdelete(physics_server_3d_manager);
}
+#endif // _3D_DISABLED
if (physics_server_2d_manager) {
memdelete(physics_server_2d_manager);
}
diff --git a/main/performance.cpp b/main/performance.cpp
index b5f1a45b9a..aff26c20a3 100644
--- a/main/performance.cpp
+++ b/main/performance.cpp
@@ -180,12 +180,22 @@ double Performance::get_monitor(Monitor p_monitor) const {
return PhysicsServer2D::get_singleton()->get_process_info(PhysicsServer2D::INFO_COLLISION_PAIRS);
case PHYSICS_2D_ISLAND_COUNT:
return PhysicsServer2D::get_singleton()->get_process_info(PhysicsServer2D::INFO_ISLAND_COUNT);
+#ifdef _3D_DISABLED
+ case PHYSICS_3D_ACTIVE_OBJECTS:
+ return 0;
+ case PHYSICS_3D_COLLISION_PAIRS:
+ return 0;
+ case PHYSICS_3D_ISLAND_COUNT:
+ return 0;
+#else
case PHYSICS_3D_ACTIVE_OBJECTS:
return PhysicsServer3D::get_singleton()->get_process_info(PhysicsServer3D::INFO_ACTIVE_OBJECTS);
case PHYSICS_3D_COLLISION_PAIRS:
return PhysicsServer3D::get_singleton()->get_process_info(PhysicsServer3D::INFO_COLLISION_PAIRS);
case PHYSICS_3D_ISLAND_COUNT:
return PhysicsServer3D::get_singleton()->get_process_info(PhysicsServer3D::INFO_ISLAND_COUNT);
+#endif // _3D_DISABLED
+
case AUDIO_OUTPUT_LATENCY:
return AudioServer::get_singleton()->get_output_latency();
case NAVIGATION_ACTIVE_MAPS: