Added the pathfinding module

This commit is contained in:
douwe
2025-09-01 20:22:54 +02:00
parent a232425980
commit a58cfe74a1
23 changed files with 183 additions and 63 deletions

View File

@@ -1,21 +1,31 @@
extends Module
var enabled := true
var pos_x_register_index:int
var pos_y_register_index:int
var pos_z_register_index:int
var pos := Vector3i.ZERO
func _ready() -> void:
if Terrain.instance == null:
print("No terrain to get clicks from")
func set_registers(index:int)->int:
func get_register_reservation_size()->int:
return 3
func set_reserved_registers(index:int)->void:
pos_x_register_index = index
pos_y_register_index = index+1
pos_z_register_index = index+2
return 3
func get_register_types()->Dictionary[int, String]:
return {
pos_x_register_index: "[X] Click",
pos_y_register_index: "[Y] Click",
pos_z_register_index: "[Z] Click"
}
func _unhandled_input(event: InputEvent) -> void:
if not enabled: return
@@ -32,8 +42,11 @@ func set_click_registers()->void:
var origin := current_camera.project_ray_origin(mouse_pos_2d)
var dir := current_camera.project_ray_normal(mouse_pos_2d)
var res := Terrain.instance.get_voxel_tool().raycast(origin, dir, 100)
pos = res.previous_position
func early_tick()->void:
var registers := cpu.cobor_vm.get_registers()
registers[pos_x_register_index] = res.previous_position.x
registers[pos_y_register_index] = res.previous_position.y
registers[pos_z_register_index] = res.previous_position.z
registers[pos_x_register_index] = pos.x
registers[pos_y_register_index] = pos.y
registers[pos_z_register_index] = pos.z
cpu.cobor_vm.set_registers(cpu.register_size, registers)