Files
godot-demo-projects/3d/physics_tests/utils/system.gd
2025-10-11 05:03:59 -07:00

64 lines
1.7 KiB
GDScript

extends Node
enum PhysicsEngine {
GODOT_PHYSICS,
JOLT_PHYSICS,
OTHER,
}
var _engine := PhysicsEngine.OTHER
func _enter_tree() -> void:
process_mode = Node.PROCESS_MODE_ALWAYS
# Always enable visible collision shapes on startup
# (same as the Debug > Visible Collision Shapes option).
get_tree().debug_collisions_hint = true
var engine_string: String = ProjectSettings.get_setting("physics/3d/physics_engine")
match engine_string:
"DEFAULT":
_engine = PhysicsEngine.GODOT_PHYSICS
"GodotPhysics3D":
_engine = PhysicsEngine.GODOT_PHYSICS
"Jolt Physics":
_engine = PhysicsEngine.JOLT_PHYSICS
_:
_engine = PhysicsEngine.OTHER
func _process(_delta: float) -> void:
if Input.is_action_just_pressed(&"toggle_full_screen"):
if DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
else:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
if Input.is_action_just_pressed(&"toggle_debug_collision"):
var debug_collision_enabled := not _is_debug_collision_enabled()
_set_debug_collision_enabled(debug_collision_enabled)
if debug_collision_enabled:
Log.print_log("Debug Collision ON")
else:
Log.print_log("Debug Collision OFF")
if Input.is_action_just_pressed(&"toggle_pause"):
get_tree().paused = not get_tree().paused
if Input.is_action_just_pressed(&"exit"):
get_tree().quit()
func get_physics_engine() -> PhysicsEngine:
return _engine
func _set_debug_collision_enabled(enabled: bool) -> void:
get_tree().debug_collisions_hint = enabled
func _is_debug_collision_enabled() -> bool:
return get_tree().debug_collisions_hint