From cc322c8f40a39a6ccf39e5a32cc4c9605b9549e9 Mon Sep 17 00:00:00 2001 From: Nekojimi Date: Tue, 22 Apr 2025 20:24:56 +0100 Subject: [PATCH] Added static navigation obstacle component. --- scripts/nav_obstacle.gd | 27 +++++++++++++++++++++++++++ scripts/nav_obstacle.gd.uid | 1 + 2 files changed, 28 insertions(+) create mode 100644 scripts/nav_obstacle.gd create mode 100644 scripts/nav_obstacle.gd.uid diff --git a/scripts/nav_obstacle.gd b/scripts/nav_obstacle.gd new file mode 100644 index 0000000..6aa7838 --- /dev/null +++ b/scripts/nav_obstacle.gd @@ -0,0 +1,27 @@ +extends Node3D + +@export var aabb: AABB = AABB(Vector3(-1,0,-1),Vector3(2,2,2)) +@export var weight: float = 10.0 +@export var make_solid: bool = true + +var enable_timer: float = 1.0 +var enabled: bool = false + +func _process(delta: float) -> void: + if enable_timer > 0: + enable_timer -= delta + if !enabled and enable_timer <= 0: + enabled = true + update() + +func update() -> void: + var global_aabb: AABB = global_transform * aabb + #DebugDraw3D.draw_aabb(global_aabb, Color.DARK_CYAN, 5) + for map_rid in NavigationServer3D.get_maps(): + for region_rid in NavigationServer3D.map_get_regions(map_rid): + var region_aabb: AABB = NavigationServer3D.region_get_bounds(region_rid).grow(0.1) + #DebugDraw3D.draw_aabb(region_aabb, Color.YELLOW, 5) + if global_aabb.intersects(region_aabb): + NavigationServer3D.region_set_travel_cost(region_rid, weight) + #NavigationServer3D.region_set_enabled(region_rid, false) + DebugDraw3D.draw_aabb(region_aabb, Color.RED, 5) diff --git a/scripts/nav_obstacle.gd.uid b/scripts/nav_obstacle.gd.uid new file mode 100644 index 0000000..6be287b --- /dev/null +++ b/scripts/nav_obstacle.gd.uid @@ -0,0 +1 @@ +uid://bcp3fwf3nds3k