pathfinding rework for now

This commit is contained in:
2025-06-13 00:06:51 +10:00
parent 400415f8a5
commit 6f4f465e37
817 changed files with 5533 additions and 3146 deletions

View File

@ -1,8 +1,10 @@
class_name FlowNode extends StaticBody3D
var connections: Array[FlowNode]
var visualisers: Array[CSGBox3D]
var traversable: bool = true
@export var connections: Array[FlowNode]
@export var visualisers: Array[Node3D]
var visual_scene: PackedScene = preload("res://cube2.tscn")
@export var traversable: bool = true
@export var buildable: bool = true
var best_path: FlowNode :
get():
return best_path
@ -12,33 +14,44 @@ var best_path: FlowNode :
set_connector_color(best_path, Color.DARK_GREEN)
func _ready() -> void:
visualisers = []
for node: FlowNode in connections:
var visual: Node3D = visual_scene.instantiate()
add_child(visual)
visual.owner = self
visualisers.append(visual)
set_connector_color(node, Color.WEB_GRAY)
func _process(delta: float) -> void:
for i: int in connections.size():
var distance: float = global_position.distance_to(connections[i].global_position)
visualisers[i].size = Vector3(0.3, 0.3, 1.0 * (distance / 2.0))
visualisers[i].position = to_local(connections[i].global_position) / 4.0
if distance >= 0.05:
visualisers[i].look_at(connections[i].global_position)
if visible:
for i: int in connections.size():
var distance: float = global_position.distance_to(connections[i].global_position)
visualisers[i].scale = Vector3(0.3, 0.3, 1.0 * (distance / 2.0))
visualisers[i].position = to_local(connections[i].global_position) / 4.0
if distance >= 0.05:
visualisers[i].look_at(connections[i].global_position)
func set_color(new_color: Color) -> void:
$CSGSphere3D.material.albedo_color = new_color
$flow_node/Sphere.material_override.albedo_color = new_color
func set_connector_color(node: FlowNode, new_color: Color) -> void:
var i: int = connections.find(node)
visualisers[i].material.albedo_color = new_color
if visible:
var i: int = connections.find(node)
visualisers[i].get_child(0).material_override.albedo_color = new_color
func add_connection(node: FlowNode) -> void:
if !connections.has(node):
var visual: CSGBox3D = CSGBox3D.new()
visual.material = StandardMaterial3D.new()
visual.material.resource_local_to_scene = true
visual.material.albedo_color = Color.DARK_GRAY
var visual: Node3D = visual_scene.instantiate()
add_child(visual)
visual.owner = self
connections.append(node)
visualisers.append(visual)
set_connector_color(node, Color.WEB_GRAY)
func remove_connection(node: FlowNode) -> void: