X-Git-Url: http://git.purplebirdman.com/william-skin.git/blobdiff_plain/3e74277bb1d2ad3f5ccdc26c690a0f6e37ffcd25..c84055968443414e67caa33c3a823094ed29365b:/player/player.gd diff --git a/player/player.gd b/player/player.gd index 076679a..1ebbf4c 100644 --- a/player/player.gd +++ b/player/player.gd @@ -49,6 +49,7 @@ var _lockon_direction: Vector3 = Vector3.ZERO var _lockon_indicator_scene = load("res://ux/lockon_indicator.tscn") var _lockon_instance: Node3D = _lockon_indicator_scene.instantiate() +var _head_track_target: Node3D = null var _head_track_arr: Array[Node3D] = [] enum {LOCKON_LEFT, LOCKON_CENTER, LOCKON_RIGHT} @@ -75,6 +76,7 @@ func _ready() -> void: _debug.stats.add_property(self, "_idle_time", "round") _debug.stats.add_property(self, "_lockon_shift", "round") _debug.stats.add_property(self, "_head_track_arr", "") + _debug.stats.add_property(self, "_head_track_target", "") func _input(event: InputEvent) -> void: @@ -323,11 +325,28 @@ func _process_player(delta: float) -> void: move_and_slide() +# head tracking +# TODO: choose the closest head track thing to my position +# tell skin to track it +func _pick_head_track_target() -> void: + if _head_track_arr.is_empty(): + _head_track_target = null + _skin.set_head_target(Vector3.ZERO) + _skin.set_eyes_target(Vector3.ZERO) + else: + var target: Node3D = _head_track_arr.front() + _head_track_target = target + _skin.set_head_target(target.global_position) + _skin.set_eyes_target(target.global_position) + + +# if we find a head tracking obj, add it to the array unless it's already there func _on_head_turn_area_entered(area: Area3D) -> void: for node in area.get_parent().get_children().filter(func(c): return c.is_in_group("player-headTrack")): var i = _head_track_arr.find(node) if i < 0: _head_track_arr.append(node) + _pick_head_track_target() func _on_head_turn_area_exited(area: Area3D) -> void: @@ -335,3 +354,4 @@ func _on_head_turn_area_exited(area: Area3D) -> void: var i = _head_track_arr.find(node) if i >= 0: _head_track_arr.remove_at(i) + _pick_head_track_target()