]> Untitled Git - william-skin.git/blob - william.gd
d0d86bef706669a86bb14795d1092d3f0aa2b5ef
[william-skin.git] / william.gd
1 class_name WilliamSkin 
2 extends Node3D
3
4
5 @export_category("Tracking")
6 @export var head_influence: float = 0.5
7 @export var eye_influence: float = 1.0
8
9
10 @onready var _animation_tree: AnimationTree = $AnimationTree
11 @onready var _head: TrackingBone3D_head = $base/rig/Skeleton3D/head
12 @onready var _eye_L: TrackingBone3D = $base/rig/Skeleton3D/eye_L
13 @onready var _eye_R: TrackingBone3D = $base/rig/Skeleton3D/eye_R
14
15
16 # TODO: eye tracking
17 func set_eyes_target(target: Vector3) -> void:
18         for eye in [ _eye_L, _eye_R ]:
19                 eye.target = target
20                 eye.active = target != Vector3.ZERO
21                 eye.influence = eye_influence
22
23
24 # TODO: head tracking
25 func set_head_target(target: Vector3) -> void:
26         _head.target = target
27         _head.active = target != Vector3.ZERO
28         _head.influence = head_influence
29
30
31 # manage talking and expressions
32 func talk() -> void:
33         _animation_tree.set("parameters/motion/transition_request", "talk")
34
35
36 # manage vectored movement
37 func current_state() -> String:
38         return _animation_tree.get("parameters/motion/current_state")
39
40
41 func set_hips_direction(direction: float) -> void:
42         _animation_tree.set("parameters/hips_direction/blend_position", clamp(direction, -PI / 2, PI / 2))
43
44
45 func get_hips_direction() -> float:
46         return _animation_tree.get("parameters/hips_direction/blend_position")
47
48
49 func pose() -> void:
50         _animation_tree.set("parameters/motion/transition_request", "pose")
51
52
53 func idle() -> void:
54         _animation_tree.set("parameters/motion/transition_request", "idle")
55
56
57 func move_forward() -> void:
58         _animation_tree.set("parameters/motion/transition_request", "forward")
59
60
61 func move_backward() -> void:
62         _animation_tree.set("parameters/motion/transition_request", "backward")
63
64
65 func movement_speed(speed: float) -> void:
66         _animation_tree.set("parameters/forward/blend_position", speed)
67         _animation_tree.set("parameters/backward/blend_position", speed)
68
69
70 func jump() -> void:
71         _animation_tree.set("parameters/motion/transition_request", "fall")
72
73
74 func fall() -> void:
75         _animation_tree.set("parameters/motion/transition_request", "fall")
76
77
78 func landing() -> void:
79         _animation_tree.set("parameters/motion/transition_request", "landing")