Moved to pith verbage; CPUController WIP testing

This commit is contained in:
2026-10-25 23:12:51 -05:00
parent 86434b26d5
commit b2ecc00d57
8 changed files with 95 additions and 24 deletions
@@ -8,7 +8,7 @@ func _process(_delta: float) -> void:
if Globals.ControlMode.PLAYER_MODE == jet.controller.control_mode:
continue
process_jet_plan(jet.controller.cpu)
process_jet_plan(jet)
func _controller_message(event: BaseEvent) -> void:
if event is InitSpawnsLoadedEvent:
@@ -22,7 +22,71 @@ func handle_init_spawns_loaded_event() -> void:
create_jet_plan(jet)
func create_jet_plan(jet: Jet) -> void:
print(jet)
assign_jet_target(jet)
func process_jet_plan(jet: CPU) -> void:
jet.yaw_left()
func assign_jet_target(jet: Jet) -> void:
for _jet: Jet in jets_collection.get_children():
if _jet.faction == jet.faction: continue
if _jet.targeted_by: continue
_jet.targeted_by = jet
jet.target = _jet
break
func process_jet_plan(jet: Jet) -> void:
if not is_instance_valid(jet.target): return
var direction: Vector3 = (
jet.target.global_position - jet.global_position
).normalized()
var target_basis = Basis.looking_at(direction, Vector3.UP)
var target_rotation = target_basis.get_euler()
var current_rotation = jet.global_rotation
var yaw_error = wrapf(
target_rotation.y - current_rotation.y,
-PI,
PI
)
var pitch_error = wrapf(
target_rotation.x - current_rotation.x,
-PI,
PI
)
var deadzone = deg_to_rad(2.0)
if yaw_error > deadzone:
jet.controller.cpu.yaw_right()
elif yaw_error < -deadzone:
jet.controller.cpu.yaw_left()
else:
jet.controller.cpu.no_action()
if pitch_error > deadzone:
jet.controller.cpu.pitch_down()
elif pitch_error < -deadzone:
jet.controller.cpu.pitch_up()
#func process_jet_plan(jet: Jet) -> void:
#var direction = (jet.target.global_position - jet.global_position).normalized()
#var target_basis = jet.looking_at(direction, Vector3.UP)
#var target_rotation = target_basis.get_euler()
#var direction = jet.target.global_position - jet.global_position
#var desired_rotation = jet.look_rotation(direction)
#var rotation_error = desired_rotation - jet.rotation
#jet.pitch_input = calculate_pitch(rotation_error)
#jet.yaw_input = calculate_yaw(rotation_error)
#jet.roll_input = calculate_roll(rotation_error)
#jet.throttle = calculate_throttle(distance)
+4 -4
View File
@@ -15,11 +15,11 @@ func unhandled_input(_event: InputEvent) -> Globals.ControllerCommand:
return command
func pull_up() -> void:
command = Globals.ControllerCommand.PULL_UP
func pitch_up() -> void:
command = Globals.ControllerCommand.PITCH_UP
func push_down() -> void:
command = Globals.ControllerCommand.PUSH_DOWN
func pitch_down() -> void:
command = Globals.ControllerCommand.PITCH_DOWN
func yaw_left() -> void:
command = Globals.ControllerCommand.YAW_LEFT
+4 -4
View File
@@ -2,10 +2,10 @@ class_name Player extends Node
func process(_delta: float) -> Globals.ControllerCommand:
if Input.is_action_pressed("pull_up"):
return Globals.ControllerCommand.PULL_UP
if Input.is_action_pressed("push_down"):
return Globals.ControllerCommand.PUSH_DOWN
if Input.is_action_pressed("pitch_up"):
return Globals.ControllerCommand.PITCH_UP
if Input.is_action_pressed("pitch_down"):
return Globals.ControllerCommand.PITCH_DOWN
if Input.is_action_pressed("yaw_left"):
return Globals.ControllerCommand.YAW_LEFT
if Input.is_action_pressed("yaw_right"):
+6 -6
View File
@@ -21,10 +21,10 @@ func do_action(
var change_rate: float = deg_to_rad(1) * delta
match action:
Globals.ControllerCommand.PULL_UP:
pull_up(change_rate, jet)
Globals.ControllerCommand.PUSH_DOWN:
push_down(change_rate, jet)
Globals.ControllerCommand.PITCH_UP:
pitch_up(change_rate, jet)
Globals.ControllerCommand.PITCH_DOWN:
pitch_down(change_rate, jet)
Globals.ControllerCommand.YAW_LEFT:
yaw_left(change_rate, jet)
Globals.ControllerCommand.YAW_RIGHT:
@@ -40,10 +40,10 @@ func do_action(
_:
pass
func pull_up(change_rate: float, jet: Jet) -> void:
func pitch_up(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.RIGHT, change_rate * MIN_SPEED)
func push_down(change_rate: float, jet: Jet) -> void:
func pitch_down(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.LEFT, change_rate * MIN_SPEED)
func yaw_left(change_rate: float, jet: Jet) -> void: