From: Clifton Palmer Date: Wed, 11 Jun 2025 14:20:55 +0000 (+0300) Subject: Squashed commit of the following: X-Git-Url: http://git.purplebirdman.com/frog-ninja.git/commitdiff_plain/refs/heads/master?hp=df26d4a32e30692efba3fb3b7270501dc005bbff Squashed commit of the following: * Removed deprecated globals, added Player class documentation * Added hit escape window * Added better control of walking state to player and robot * Added basic bullet parrying --- diff --git a/asset/character/animation/idle_default.res b/asset/character/animation/idle_default.res index 9e590bf..c0ba014 100644 Binary files a/asset/character/animation/idle_default.res and b/asset/character/animation/idle_default.res differ diff --git a/asset/character/input/grunt_input_handler.gd b/asset/character/input/grunt_input_handler.gd index 0cba6ea..1785dc0 100644 --- a/asset/character/input/grunt_input_handler.gd +++ b/asset/character/input/grunt_input_handler.gd @@ -4,12 +4,17 @@ class_name GruntInputHandler @export var target: Player @onready var me: Player = $".." +@export var time_walking := 0.0 +@export var time_walking_paused := 0.0 +var started_walking := 0.0 + @export var time_between_slashes := 1.0 var last_slash := 0.0 @export var time_between_shots := 1.0 var last_shot := 0.0 +@export var walk_speed := 1.0 func get_movement_direction() -> Vector2: # TODO: pathing @@ -19,14 +24,18 @@ func get_movement_direction() -> Vector2: func get_player_input() -> InputPacket: var p: InputPacket = InputPacket.new() - var vector_to_target := target.global_position - me.global_position - p.player_movement_direction = get_movement_direction() - if p.player_movement_direction != Vector2.ZERO and vector_to_target.length() > 1.5: - p.player_actions.append("Walk") - if target.state_name != "Death": var now := Time.get_unix_time_from_system() + var vector_to_target := target.global_position - me.global_position + + p.player_movement_direction = get_movement_direction() + if (now - started_walking) < time_walking: + if p.player_movement_direction != Vector2.ZERO and vector_to_target.length() > 1.5: + p.player_actions.append("Walk") + elif (now - started_walking) > (time_walking + time_walking_paused): + started_walking = now + if vector_to_target.length() < 2: if (now - last_slash) > time_between_slashes: p.player_combat_actions.append("slash") diff --git a/asset/character/input/shooter_input_handler.gd b/asset/character/input/shooter_input_handler.gd new file mode 100644 index 0000000..bc65492 --- /dev/null +++ b/asset/character/input/shooter_input_handler.gd @@ -0,0 +1,28 @@ +extends GruntInputHandler +class_name ShooterInputHandler + + +func get_player_input() -> InputPacket: + var p: InputPacket = InputPacket.new() + var vector_to_target := target.global_position - me.global_position + + p.player_movement_direction = get_movement_direction() + if p.player_movement_direction != Vector2.ZERO and vector_to_target.length() > 1.5: + p.player_actions.append("Walk") + + if target.state_name != "Death": + var now := Time.get_unix_time_from_system() + if vector_to_target.length() < 2: + if (now - last_slash) > time_between_slashes: + p.player_combat_actions.append("slash") + last_slash = now + else: + if me.energy_points > 10: + if (now - last_shot) > time_between_shots: + p.player_combat_actions.append("shoot") + last_shot = now + + if p.player_actions.is_empty(): + p.player_actions.append("Idle") + + return p diff --git a/asset/character/input/shooter_input_handler.gd.uid b/asset/character/input/shooter_input_handler.gd.uid new file mode 100644 index 0000000..6a3e156 --- /dev/null +++ b/asset/character/input/shooter_input_handler.gd.uid @@ -0,0 +1 @@ +uid://civc5w5mpihev diff --git a/asset/character/model/character_model.gd b/asset/character/model/character_model.gd index 00dc2c6..7e8e575 100644 --- a/asset/character/model/character_model.gd +++ b/asset/character/model/character_model.gd @@ -43,6 +43,10 @@ func set_weapon_collision(): w.collision_mask = player.collision_mask +func set_hitbox_monitoring(b: bool): + hitbox.monitoring = b + + func assemble_character_states(): for node in $States.get_children(): if node is State: @@ -102,6 +106,11 @@ func assign_current_state(state_name: String): current_state.on_enter_state() player.state_name = current_state.name + # reset all stateful information + animator.play(&"RESET") + animator.advance(0) + + # connect signals and play state's animation animator.animation_started.connect(current_state._when_animation_started) animator.animation_finished.connect(current_state._when_animation_finished) animator.play_section(current_state.animation_name, 0.0, -1, -1, current_state.animation_speed_scale) diff --git a/asset/character/model/hitbox.gd b/asset/character/model/hitbox.gd index 532f987..0a20654 100644 --- a/asset/character/model/hitbox.gd +++ b/asset/character/model/hitbox.gd @@ -5,8 +5,6 @@ class_name Hitbox @export var debug_color_hit: Color = Color(Color.YELLOW, 0.5) @export var debug_color_standby: Color = Color(Color.GREEN, 0.5) - -@onready var model: CharacterModel = $"../.." @onready var shape: CollisionShape3D = $CollisionShape3D @onready var hit_effect: HitEffect = $HitEffect @@ -18,13 +16,13 @@ func _ready() -> void: func _process(delta: float) -> void: - for area in get_overlapping_areas(): - if area is Hurtbox: - on_hit(area) + if monitoring: + for area in get_overlapping_areas(): + if area is Hurtbox: + on_hit(area) _last_hit += delta if _last_hit > 1.0: - # TODO: all these guys share the same collision shape shape.debug_color = debug_color_standby @@ -34,12 +32,14 @@ func on_hit(area: Hurtbox): shape.debug_color = debug_color_hit hit_effect.trigger() - area.ignore_list.append(self) - var hit_pkt := area.get_hit_packet() - model.current_state.react_to_hit(hit_pkt) - hit_pkt.queue_free() + on_successful_hit(area) func is_being_attacked_by(area: Hurtbox): return area.is_attacking and not area.ignore_list.has(self) + + +## To be overridden by a child class +func on_successful_hit(_area: Hurtbox): + pass diff --git a/asset/character/model/state/dashing_state.gd b/asset/character/model/state/dashing_state.gd index 0c6ea9e..a404968 100644 --- a/asset/character/model/state/dashing_state.gd +++ b/asset/character/model/state/dashing_state.gd @@ -29,8 +29,8 @@ func update(input: InputPacket, delta: float): if input.player_movement_direction == Vector2.ZERO: dir = Vector2(player.last_movement_vector.x, player.last_movement_vector.z) else: - dir = input.player_movement_direction.normalized() - new_position = player.global_position + Vector3(dir.x, 0, dir.y) * dash_length + dir = input.player_movement_direction + new_position = player.global_position + Vector3(dir.x, 0, dir.y).normalized() * dash_length rotate_skin(new_position) diff --git a/asset/character/model/state/hit_state.gd b/asset/character/model/state/hit_state.gd index 69674e6..aa0c4ce 100644 --- a/asset/character/model/state/hit_state.gd +++ b/asset/character/model/state/hit_state.gd @@ -1,6 +1,9 @@ extends State +@onready var escape_timer: Timer = $HitEscapeTimer + + func should_enter(input: InputPacket) -> String: if animation_finished: input.player_actions.sort_custom(states_priority_sort) @@ -12,3 +15,13 @@ func react_to_hit(hit: HitPacket): super.react_to_hit(hit) if name == "Hit": queued_state_name = "Hit2" + + +func on_enter_state(): + if player.hit_escape_window > 0: + player.model.set_hitbox_monitoring(false) + escape_timer.start(player.hit_escape_window) + + +func _on_hit_escape_timer_timeout() -> void: + player.model.set_hitbox_monitoring(true) diff --git a/asset/character/model/state/moving_state.gd b/asset/character/model/state/moving_state.gd index accd96e..b62532f 100644 --- a/asset/character/model/state/moving_state.gd +++ b/asset/character/model/state/moving_state.gd @@ -23,7 +23,7 @@ func update_skin(delta: float): player.model.global_rotation.y = lerp_angle( player.model.global_rotation.y, skin_target_angle, - PlayerVariables.rotation_speed * delta + player.rotation_speed * delta ) # lean into player momentum just a little bit @@ -35,7 +35,7 @@ func update_skin(delta: float): ) * player.velocity.length() * 0.08, -skin_lean_limit, skin_lean_limit ), - PlayerVariables.rotation_speed * delta * 0.25 + player.rotation_speed * delta * 0.25 ) @@ -47,7 +47,7 @@ func get_new_velocity_from_input(input: InputPacket, delta: float, speed: float) ) # save off last movement direction - if movement_vector.length() > 0.2: + if movement_vector.length() > 0.01: player.last_movement_vector = movement_vector # if we're not stuck, then it's okay to set the velocity @@ -55,7 +55,7 @@ func get_new_velocity_from_input(input: InputPacket, delta: float, speed: float) player.ground_slope_input = (PI / 2) - player.velocity.angle_to(player.floor_normal) var new_velocity = player.velocity.move_toward( movement_vector * (speed + player.ground_slope_input * speed), - PlayerVariables.acceleration * delta + player.acceleration * delta ) return new_velocity diff --git a/asset/character/model/state/shooting_state.gd b/asset/character/model/state/shooting_state.gd index 351588f..30b117d 100644 --- a/asset/character/model/state/shooting_state.gd +++ b/asset/character/model/state/shooting_state.gd @@ -17,12 +17,10 @@ func on_enter_state(): player.energy_points -= energy_toll var new_bullet: Projectile = bullet.instantiate() - new_bullet.last_movement_direction = player.last_movement_vector new_bullet.weapon = player.model.weapon_l + get_tree().root.add_child(new_bullet, true) + new_bullet.collision_layer = player.collision_layer new_bullet.collision_mask = player.collision_mask - - # TODO: global_position isn't set right until instance has been added to the scene tree new_bullet.global_position = player.model.weapon_l.model.get_bullet_origin() - - get_tree().root.add_child(new_bullet, true) + new_bullet.direction = player.last_movement_vector diff --git a/asset/character/model/state/state.gd b/asset/character/model/state/state.gd index 04c2219..3b69143 100644 --- a/asset/character/model/state/state.gd +++ b/asset/character/model/state/state.gd @@ -90,10 +90,11 @@ func _when_animation_finished(_anim_name: StringName): func check_combos(input: InputPacket): - for combo: Combo in get_children(): - if combo.is_triggered(input): - queued_state_name = combo.triggered_state_name - has_queued_state = true + for node in get_children(): + if node is Combo: + if node.is_triggered(input): + queued_state_name = node.triggered_state_name + has_queued_state = true func ok_to_queue_next_state() -> bool: diff --git a/asset/character/model/state/walking_state.gd b/asset/character/model/state/walking_state.gd new file mode 100644 index 0000000..86e3000 --- /dev/null +++ b/asset/character/model/state/walking_state.gd @@ -0,0 +1,6 @@ +extends MovingState +class_name WalkingState + + +func on_enter_state(): + movement_speed = player.walk_speed diff --git a/asset/character/model/state/walking_state.gd.uid b/asset/character/model/state/walking_state.gd.uid new file mode 100644 index 0000000..5822bb1 --- /dev/null +++ b/asset/character/model/state/walking_state.gd.uid @@ -0,0 +1 @@ +uid://diy1r1tcb7ios diff --git a/asset/character/player/character_hitbox.gd b/asset/character/player/character_hitbox.gd new file mode 100644 index 0000000..05aa9a3 --- /dev/null +++ b/asset/character/player/character_hitbox.gd @@ -0,0 +1,11 @@ +extends Hitbox +class_name CharacterHitbox + + +@onready var model: CharacterModel = $"../.." + + +func on_successful_hit(area: Hurtbox): + var hit_pkt := area.get_hit_packet() + model.current_state.react_to_hit(hit_pkt) + hit_pkt.queue_free() diff --git a/asset/character/player/character_hitbox.gd.uid b/asset/character/player/character_hitbox.gd.uid new file mode 100644 index 0000000..e9860c1 --- /dev/null +++ b/asset/character/player/character_hitbox.gd.uid @@ -0,0 +1 @@ +uid://bbrhjr310yx0w diff --git a/asset/character/player/player.gd b/asset/character/player/player.gd index 8666036..02f6288 100644 --- a/asset/character/player/player.gd +++ b/asset/character/player/player.gd @@ -11,52 +11,91 @@ class_name Player ## Human-readable name for UI display @export var display_name := "" -## Ceiling for hit points +## Ceiling for hit points. @export var max_hit_points: float = 100.0 -## Ceiling for stamina points +## Ceiling for stamina points. @export var max_stamina_points: float = 100.0 -## Ceiling for energy points +## Ceiling for energy points. @export var max_energy_points: float = 100.0 -## Rate of stamina regeneration +## Rate of stamina regeneration. @export var stamina_regain_per_sec: float = 80.0 + +@export_group("Camera") + +## Distance that the camera retreats from the player. +## Mostly relevant for the player's own CameraHandler instance. +@export_range(1.0, 10.0) var camera_distance := 4.0 + ## Remaps absolute input relative to current camera. ## Bad idea for robots, good idea for player control! [br] ## [br] ## TODO: Probably should be all managed by the InputHandler! -@export var input_is_relative_to_camera: bool = false +@export var camera_relative_input: bool = false -## Current state name of the PlayerModel state machine. For debugging. -var state_name := "" +@export_group("Movement") -## How long the player has been idle. Populated by the Idle state. -var idle_time := 0.00 +## Rate of speed while walking. +## Used to override the Walk state's default speed. +@export var walk_speed := 5.0 -## Points to the last meaningful movement of the Player. -var last_movement_vector: Vector3 +## Rate of acceleration while doing any sort of movement. +## Used mostly by the Walk state. +@export var acceleration := 20.0 -## For debugging. Records the floor normal. -var floor_normal := Vector3.ZERO +## Rate of rotation while turning. +@export var rotation_speed := 10.0 -## For debugging. How much the immediate slope influences velocity. -var ground_slope_input := 0.0 +## Vertical velocity limit for when a fall should trigger a hard landing. +@export var fall_landing_limit := 3.0 + +## Vertical velocity limit for when a fall should trigger a roll. +@export var fall_roll_limit := 6.0 + + +@export_group("Combat") + +## The time window in seconds for player to escape subsequent hits. +## Used by the Hit state. +@export var hit_escape_window := 1.0 -@export_category("Instance") +@export_group("Resources") -## Current hit points +## Current hit points. @export var hit_points: float = 100.0 -## Current stamina points +## Current stamina points. @export var stamina_points: float = 100.0 -## Current energy points +## Current energy points. @export var energy_points: float = 0.0 +## Current state name of the PlayerModel state machine. +## For debugging. +var state_name := "" + +## How long the player has been idle. +## Populated by the Idle state. +var idle_time := 0.00 + +## Points to the last meaningful movement of the Player. +## Useful for debugging, movement, and targeting. +var last_movement_vector: Vector3 + +## Records the floor normal. +## For debugging. +var floor_normal := Vector3.ZERO + +## How much the immediate slope influences velocity. +## For debugging. +var ground_slope_input := 0.0 + + # onready @onready var input: InputHandler = $Input @onready var model: CharacterModel = $Model @@ -73,13 +112,12 @@ func _ready() -> void: func _physics_process(delta: float) -> void: var input_pkt := input.get_player_input() - if input_is_relative_to_camera: + if camera_relative_input: cameraHandler.update(input_pkt, delta) - cameraHandler.camera_distance = PlayerVariables.camera_distance + velocity.length() / 4 + cameraHandler.camera_distance = camera_distance + velocity.length() / 4 input_pkt.player_movement_direction = cameraHandler.get_xz_direction_relative_to_camera( input_pkt.player_movement_direction ) model.update(input_pkt, delta) - input_pkt.queue_free() diff --git a/asset/character/player/player.tscn b/asset/character/player/player.tscn index 3725f1c..049002b 100644 --- a/asset/character/player/player.tscn +++ b/asset/character/player/player.tscn @@ -12,6 +12,7 @@ collision_layer = 2 collision_mask = 5 script = ExtResource("1_onrkg") +camera_relative_input = true [node name="Collision" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) diff --git a/asset/character/player/player_model.tscn b/asset/character/player/player_model.tscn index faaa3cb..3c87ca9 100644 --- a/asset/character/player/player_model.tscn +++ b/asset/character/player/player_model.tscn @@ -4,7 +4,7 @@ [ext_resource type="Script" uid="uid://bdr0q5omece4p" path="res://asset/character/model/animated_skeleton_3d.gd" id="2_2jlbv"] [ext_resource type="PackedScene" uid="uid://bbx1vedqbdh17" path="res://asset/weapon/gun.tscn" id="3_qq571"] [ext_resource type="PackedScene" uid="uid://b3idqb7fb550a" path="res://asset/weapon/sword.tscn" id="4_qvp1s"] -[ext_resource type="Script" uid="uid://cvxbo21ycx74x" path="res://asset/character/model/hitbox.gd" id="5_2jlbv"] +[ext_resource type="Script" uid="uid://bbrhjr310yx0w" path="res://asset/character/player/character_hitbox.gd" id="5_ykn0j"] [ext_resource type="AnimationLibrary" uid="uid://cg3xw52n4bmjt" path="res://asset/character/animation/death_library.tres" id="6_60hmv"] [ext_resource type="PackedScene" uid="uid://c7wv7pk6df1wi" path="res://asset/effect/hit_effect.tscn" id="6_62708"] [ext_resource type="AnimationLibrary" uid="uid://04k5svk657o7" path="res://asset/character/animation/gun_library.tres" id="7_f732t"] @@ -15,13 +15,13 @@ [ext_resource type="Script" uid="uid://bv5k167ugxmso" path="res://asset/character/model/state/idle_state.gd" id="9_f7muk"] [ext_resource type="AnimationLibrary" uid="uid://b2rxvi8461gvp" path="res://asset/character/animation/idle_library.tres" id="9_f732t"] [ext_resource type="AnimationLibrary" uid="uid://bqfx5ahksacit" path="res://asset/character/animation/sword_library.tres" id="10_62708"] -[ext_resource type="Script" uid="uid://cqurhmxam2nl0" path="res://asset/character/model/state/moving_state.gd" id="10_slqck"] [ext_resource type="Script" uid="uid://bxydwp6ucqo8l" path="res://asset/character/model/state/slashing_state.gd" id="11_7rfaj"] [ext_resource type="Script" uid="uid://b1sroy3tk3gk2" path="res://asset/character/model/state/combo/to_slash.gd" id="12_ad0q0"] [ext_resource type="Script" uid="uid://dyi5okvau0djc" path="res://asset/character/model/state/shooting_state.gd" id="13_3wesr"] [ext_resource type="Script" uid="uid://bdiks0m7vsn5w" path="res://asset/character/model/state/dashing_state.gd" id="14_ub7je"] [ext_resource type="Script" uid="uid://b0oj5iuvr8omo" path="res://asset/character/model/state/falling_state.gd" id="15_wgnsq"] [ext_resource type="Script" uid="uid://cgb5nb8cw7cmn" path="res://asset/character/model/state/fall_to_landing_state.gd" id="16_5tdrp"] +[ext_resource type="Script" uid="uid://diy1r1tcb7ios" path="res://asset/character/model/state/walking_state.gd" id="16_ykn0j"] [ext_resource type="Script" uid="uid://dmq4o0gahrwi" path="res://asset/character/model/state/gun_raise_state.gd" id="17_3a6lp"] [ext_resource type="Script" uid="uid://c1symdjulry0s" path="res://asset/character/model/state/combo/to_fire_gun.gd" id="17_60hmv"] [ext_resource type="Script" uid="uid://whl70vbdv7gu" path="res://asset/character/model/state/fall_to_rolling_state.gd" id="17_voqd6"] @@ -56,10 +56,10 @@ tracks/1/path = NodePath("Skeleton3D:queue_next_state") tracks/1/interp = 0 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(0), +"times": PackedFloat32Array(0.0333333), "transitions": PackedFloat32Array(1), "update": 1, -"values": [false] +"values": [true] } tracks/2/type = "value" tracks/2/imported = false @@ -87,15 +87,15 @@ bones/0/name = "weapon.L" bones/0/parent = -1 bones/0/rest = Transform3D(1, -2.81782e-08, -3.38388e-07, -3.38388e-07, 0, -1, 2.81782e-08, 1, -9.53516e-15, 0.778152, 1.42065, -0.0554846) bones/0/enabled = true -bones/0/position = Vector3(0.778152, 1.42065, -0.0554846) -bones/0/rotation = Quaternion(0.707107, -1.29601e-07, -1.09676e-07, 0.707107) +bones/0/position = Vector3(0.258624, 0.8283, 0.25055) +bones/0/rotation = Quaternion(0.558649, -0.613106, 0.0799422, 0.552831) bones/0/scale = Vector3(1, 1, 1) bones/1/name = "weapon.R" bones/1/parent = -1 bones/1/rest = Transform3D(1, 5.72965e-08, -6.49498e-07, -6.49498e-07, 0, -1, -5.72965e-08, 1, 3.7214e-14, -0.778152, 1.42065, -0.0554846) bones/1/enabled = true -bones/1/position = Vector3(-0.778152, 1.42065, -0.0554846) -bones/1/rotation = Quaternion(0.707107, -2.09375e-07, -2.4989e-07, 0.707107) +bones/1/position = Vector3(-0.291032, 0.823065, -0.187203) +bones/1/rotation = Quaternion(0.422232, 0.411611, 0.436028, 0.679836) bones/1/scale = Vector3(1, 1, 1) bones/2/name = "rig" bones/2/parent = -1 @@ -108,323 +108,323 @@ bones/3/name = "DEF-spine" bones/3/parent = 2 bones/3/rest = Transform3D(1, -5.01022e-07, 7.45955e-07, 5.10616e-07, 0.999917, -0.0129167, -7.39421e-07, 0.0129167, 0.999917, -7.72729e-08, 1.04275, 0.0155431) bones/3/enabled = true -bones/3/position = Vector3(-7.72729e-08, 1.04275, 0.0155431) -bones/3/rotation = Quaternion(0.00645848, 3.71352e-07, 2.52915e-07, 0.999979) +bones/3/position = Vector3(0.00289882, 0.96773, 0.000111626) +bones/3/rotation = Quaternion(0.0207104, -0.332163, -0.00177249, 0.942993) bones/3/scale = Vector3(1, 1, 1) bones/4/name = "DEF-spine.001" bones/4/parent = 3 bones/4/rest = Transform3D(1, 6.12747e-07, -4.16994e-07, -5.38239e-07, 0.98715, 0.159796, 5.0955e-07, -0.159796, 0.98715, 7.10543e-15, 0.101824, -1.16425e-09) bones/4/enabled = true bones/4/position = Vector3(7.10543e-15, 0.101824, -1.16425e-09) -bones/4/rotation = Quaternion(-0.0801559, -2.32384e-07, -2.88675e-07, 0.996782) +bones/4/rotation = Quaternion(-0.0801557, -2.41264e-07, -4.07088e-07, 0.996782) bones/4/scale = Vector3(1, 1, 1) bones/5/name = "DEF-spine.002" bones/5/parent = 4 bones/5/rest = Transform3D(1, -7.73194e-13, -2.38418e-07, 8.22932e-13, 1, 2.08616e-07, 2.38418e-07, -2.08616e-07, 1, -1.68199e-14, 0.100027, 9.31292e-10) bones/5/enabled = true bones/5/position = Vector3(-1.68199e-14, 0.100027, 9.31292e-10) -bones/5/rotation = Quaternion(-1.04308e-07, -1.19209e-07, 3.99032e-13, 1) +bones/5/rotation = Quaternion(0.0995175, 0.0409275, -0.0102475, 0.994141) bones/5/scale = Vector3(1, 1, 1) bones/6/name = "DEF-spine.003" bones/6/parent = 5 bones/6/rest = Transform3D(1, 7.31584e-08, -6.47734e-08, -7.48033e-08, 0.999668, -0.0257693, 6.28666e-08, 0.0257693, 0.999668, -6.91027e-15, 0.0932206, 3.72529e-09) bones/6/enabled = true bones/6/position = Vector3(-6.91027e-15, 0.0932206, 3.72529e-09) -bones/6/rotation = Quaternion(0.0128857, -3.19126e-08, -3.69935e-08, 0.999917) -bones/6/scale = Vector3(1, 1, 1) +bones/6/rotation = Quaternion(0.112754, 0.12145, -0.0118515, 0.986101) +bones/6/scale = Vector3(1, 0.999996, 1) bones/7/name = "DEF-spine.004" bones/7/parent = 6 bones/7/rest = Transform3D(1, 2.69986e-06, -3.40985e-06, -3.98378e-06, 0.883184, -0.469026, 1.74522e-06, 0.469026, 0.883184, -2.37588e-14, 0.168653, -7.45057e-09) bones/7/enabled = true bones/7/position = Vector3(-2.37588e-14, 0.168653, -7.45057e-09) -bones/7/rotation = Quaternion(0.241677, -1.32814e-06, -1.72195e-06, 0.970357) +bones/7/rotation = Quaternion(0.208695, -0.010176, 0.00180628, 0.977926) bones/7/scale = Vector3(1, 1, 1) bones/8/name = "DEF-spine.005" bones/8/parent = 7 bones/8/rest = Transform3D(1, -5.71701e-06, 4.90714e-06, 3.76661e-06, 0.943434, 0.331561, -6.5251e-06, -0.331561, 0.943434, 3.19744e-14, 0.0425525, 5.40167e-08) bones/8/enabled = true bones/8/position = Vector3(3.19744e-14, 0.0425525, 5.40167e-08) -bones/8/rotation = Quaternion(-0.168176, 2.89936e-06, 2.40516e-06, 0.985757) +bones/8/rotation = Quaternion(-0.165391, 0.178622, -0.030471, 0.969439) bones/8/scale = Vector3(1, 1, 1) bones/9/name = "DEF-spine.006" bones/9/parent = 8 bones/9/rest = Transform3D(1, 2.66058e-06, -3.06662e-06, -2.57231e-06, 0.999596, 0.0284317, 3.14102e-06, -0.0284316, 0.999596, 1.77636e-14, 0.0564734, -2.79425e-09) bones/9/enabled = true bones/9/position = Vector3(1.77636e-14, 0.0564734, -2.79425e-09) -bones/9/rotation = Quaternion(-0.0142172, -1.55207e-06, -1.30835e-06, 0.999899) +bones/9/rotation = Quaternion(-0.0603909, -0.00521739, -0.0240013, 0.997873) bones/9/scale = Vector3(1, 1, 1) bones/10/name = "DEF-pelvis.L" bones/10/parent = 2 bones/10/rest = Transform3D(-0.40286, 0.848987, -0.341943, 0.355026, 0.489302, 0.79658, 0.843599, 0.199512, -0.498533, -9.39026e-08, 1.04275, 0.0155431) bones/10/enabled = true -bones/10/position = Vector3(-9.39026e-08, 1.04275, 0.0155431) -bones/10/rotation = Quaternion(0.389349, 0.773094, 0.322112, -0.383376) +bones/10/position = Vector3(0.0028988, 0.96773, 0.000111623) +bones/10/rotation = Quaternion(0.257633, 0.850212, 0.445911, -0.109215) bones/10/scale = Vector3(0.999999, 1, 1) bones/11/name = "DEF-pelvis.R" bones/11/parent = 2 bones/11/rest = Transform3D(-0.40286, -0.848987, 0.341943, -0.355026, 0.489302, 0.79658, -0.843599, 0.199512, -0.498533, 7.44983e-08, 1.04275, 0.0155431) bones/11/enabled = true -bones/11/position = Vector3(7.44983e-08, 1.04275, 0.0155431) -bones/11/rotation = Quaternion(-0.389349, 0.773094, 0.322112, 0.383376) +bones/11/position = Vector3(0.00289894, 0.96773, 0.00011172) +bones/11/rotation = Quaternion(-0.465552, 0.59859, 0.184267, 0.625298) bones/11/scale = Vector3(0.999999, 1, 1) bones/12/name = "DEF-thigh.L" bones/12/parent = 2 bones/12/rest = Transform3D(1, -2.09345e-08, 0.000146221, 1.12245e-06, -0.999969, -0.00781959, 0.000146216, 0.00781959, -0.999969, 0.0820778, 0.975232, -0.000452477) bones/12/enabled = true -bones/12/position = Vector3(0.0820778, 0.975232, -0.000452477) -bones/12/rotation = Quaternion(0.999992, 2.75381e-07, 7.31096e-05, 0.00390983) -bones/12/scale = Vector3(1, 1, 1) +bones/12/position = Vector3(0.0770507, 0.899231, 0.0370123) +bones/12/rotation = Quaternion(0.919846, 0.0278561, 0.323155, 0.220632) +bones/12/scale = Vector3(1.01672, 0.967385, 1.01672) bones/13/name = "DEF-thigh.L.001" bones/13/parent = 12 bones/13/rest = Transform3D(1, -1.26403e-08, -3.48623e-11, 1.26403e-08, 1, -5.58701e-09, 3.48624e-11, 5.58701e-09, 1, -9.96879e-09, 0.221857, -3.62888e-10) bones/13/enabled = true bones/13/position = Vector3(-9.96879e-09, 0.221857, -3.62888e-10) -bones/13/rotation = Quaternion(2.7935e-09, -1.74312e-11, 6.32015e-09, 1) +bones/13/rotation = Quaternion(-9.61805e-08, -0.0245935, -3.43408e-08, 0.999698) bones/13/scale = Vector3(1, 1, 1) bones/14/name = "DEF-shin.L" bones/14/parent = 13 bones/14/rest = Transform3D(1, -1.11375e-05, 0.000107765, 1.93136e-05, 0.997095, -0.0761695, -0.000106604, 0.0761695, 0.997095, -1.2041e-08, 0.221857, 2.13731e-10) bones/14/enabled = true bones/14/position = Vector3(-1.2041e-08, 0.221857, 2.13731e-10) -bones/14/rotation = Quaternion(0.0381124, 5.36313e-05, 7.61831e-06, 0.999273) -bones/14/scale = Vector3(1, 1, 1) +bones/14/rotation = Quaternion(0.178561, -0.0251242, 0.00439083, 0.983598) +bones/14/scale = Vector3(0.999989, 0.994082, 1.00651) bones/15/name = "DEF-shin.L.001" bones/15/parent = 14 bones/15/rest = Transform3D(1, 3.34699e-08, 3.12514e-08, -3.34699e-08, 1, 1.11716e-08, -3.12514e-08, -1.11716e-08, 1, -1.28523e-08, 0.222639, 5.92991e-10) bones/15/enabled = true bones/15/position = Vector3(-1.28523e-08, 0.222639, 5.92991e-10) -bones/15/rotation = Quaternion(-5.5858e-09, 1.56257e-08, -1.67349e-08, 1) +bones/15/rotation = Quaternion(4.17848e-08, 0.0356367, 3.99146e-08, 0.999365) bones/15/scale = Vector3(1, 1, 1) bones/16/name = "DEF-foot.L" bones/16/parent = 15 bones/16/rest = Transform3D(1, 0.000206859, 0.000625405, -0.000630092, 0.577262, 0.816559, -0.00019211, -0.816559, 0.577262, -1.10424e-08, 0.222639, -2.42653e-09) bones/16/enabled = true bones/16/position = Vector3(-1.10424e-08, 0.222639, -2.42653e-09) -bones/16/rotation = Quaternion(-0.459749, 0.000230144, -0.000235615, 0.888049) -bones/16/scale = Vector3(1, 1, 1) +bones/16/rotation = Quaternion(-0.409869, 0.0350807, 0.108457, 0.904994) +bones/16/scale = Vector3(0.985381, 1.00281, 1.01326) bones/17/name = "DEF-toe.L" bones/17/parent = 16 bones/17/rest = Transform3D(-1, 0.000487376, 0.00059825, -7.68778e-08, 0.775227, -0.631683, -0.000771646, -0.631683, -0.775227, -2.26655e-09, 0.138169, -2.91629e-09) bones/17/enabled = true bones/17/position = Vector3(-2.26655e-09, 0.138169, -2.91629e-09) -bones/17/rotation = Quaternion(0.000129307, 0.942132, -0.335241, 0.000363509) -bones/17/scale = Vector3(1, 1, 1) +bones/17/rotation = Quaternion(-0.0236569, 0.934707, -0.354279, -0.0158043) +bones/17/scale = Vector3(0.999462, 1.00037, 1.00017) bones/18/name = "DEF-thigh.R" bones/18/parent = 2 bones/18/rest = Transform3D(1, 4.62139e-08, -0.000146221, -1.09717e-06, -0.999969, -0.00781958, -0.000146217, 0.00781958, -0.999969, -0.0820778, 0.975232, -0.000452477) bones/18/enabled = true -bones/18/position = Vector3(-0.0820778, 0.975232, -0.000452477) -bones/18/rotation = Quaternion(0.999992, -2.6274e-07, -7.31101e-05, 0.00390982) -bones/18/scale = Vector3(1, 1, 1) +bones/18/position = Vector3(-0.0508804, 0.902043, -0.0657982) +bones/18/rotation = Quaternion(0.937633, -0.109604, 0.328971, -0.0246992) +bones/18/scale = Vector3(1.01549, 0.969723, 1.01549) bones/19/name = "DEF-thigh.R.001" bones/19/parent = 18 bones/19/rest = Transform3D(1, -1.26401e-08, 7.42734e-11, 1.26401e-08, 1, 4.19003e-09, -7.42735e-11, -4.19003e-09, 1, 6.66206e-09, 0.221857, -4.78394e-10) bones/19/enabled = true bones/19/position = Vector3(6.66206e-09, 0.221857, -4.78394e-10) -bones/19/rotation = Quaternion(-2.09502e-09, 3.71367e-11, 6.32005e-09, 1) +bones/19/rotation = Quaternion(4.46213e-09, 0.0871022, 9.39693e-09, 0.996199) bones/19/scale = Vector3(1, 1, 1) bones/20/name = "DEF-shin.R" bones/20/parent = 19 bones/20/rest = Transform3D(1, 1.11375e-05, -0.000107765, -1.93136e-05, 0.997095, -0.0761695, 0.000106604, 0.0761695, 0.997095, 1.20411e-08, 0.221857, -2.5284e-10) bones/20/enabled = true bones/20/position = Vector3(1.20411e-08, 0.221857, -2.5284e-10) -bones/20/rotation = Quaternion(0.0381124, -5.36313e-05, -7.61831e-06, 0.999273) -bones/20/scale = Vector3(1, 1, 1) +bones/20/rotation = Quaternion(0.227822, 0.0861246, -0.0195815, 0.969689) +bones/20/scale = Vector3(0.999993, 0.991418, 1.00935) bones/21/name = "DEF-shin.R.001" bones/21/parent = 20 bones/21/rest = Transform3D(1, -3.34719e-08, -3.12514e-08, 3.34719e-08, 1, 3.72105e-09, 3.12514e-08, -3.72105e-09, 1, 1.28523e-08, 0.222639, -1.27147e-09) bones/21/enabled = true bones/21/position = Vector3(1.28523e-08, 0.222639, -1.27147e-09) -bones/21/rotation = Quaternion(-1.86052e-09, -1.56257e-08, 1.67359e-08, 1) +bones/21/rotation = Quaternion(4.08423e-08, 0.0708526, 2.40698e-08, 0.997487) bones/21/scale = Vector3(1, 1, 1) bones/22/name = "DEF-foot.R" bones/22/parent = 21 bones/22/rest = Transform3D(1, -0.000206859, -0.000625405, 0.000630092, 0.577262, 0.816559, 0.00019211, -0.816559, 0.577262, 1.10426e-08, 0.222639, 2.69392e-09) bones/22/enabled = true bones/22/position = Vector3(1.10426e-08, 0.222639, 2.69392e-09) -bones/22/rotation = Quaternion(-0.459749, -0.000230144, 0.000235615, 0.888049) -bones/22/scale = Vector3(1, 1, 1) +bones/22/rotation = Quaternion(-0.562472, 0.070339, -0.109352, 0.816529) +bones/22/scale = Vector3(0.988076, 0.989592, 1.02343) bones/23/name = "DEF-toe.R" bones/23/parent = 22 bones/23/rest = Transform3D(-1, -0.000487376, -0.000598249, 7.6805e-08, 0.775227, -0.631683, 0.000771646, -0.631683, -0.775227, 9.71185e-09, 0.138169, 4.34738e-10) bones/23/enabled = true bones/23/position = Vector3(9.71185e-09, 0.138169, 4.34738e-10) -bones/23/rotation = Quaternion(-0.000129308, 0.942132, -0.335241, -0.000363509) -bones/23/scale = Vector3(1, 1, 1) +bones/23/rotation = Quaternion(-0.00194146, 0.936965, -0.3494, -0.00359504) +bones/23/scale = Vector3(0.999647, 1.00025, 1.0001) bones/24/name = "DEF-ear.L" bones/24/parent = 2 bones/24/rest = Transform3D(0.961059, 0.174102, -0.214603, -0.184384, 0.982435, -0.0287021, 0.205837, 0.0671538, 0.976279, 0.08271, 1.67598, 0.02781) bones/24/enabled = true -bones/24/position = Vector3(0.08271, 1.67598, 0.02781) -bones/24/rotation = Quaternion(0.024208, -0.10618, -0.0905341, 0.989921) +bones/24/position = Vector3(0.0537502, 1.57414, 0.164835) +bones/24/rotation = Quaternion(0.156128, -0.101923, -0.0674754, 0.980144) bones/24/scale = Vector3(1, 1, 0.999999) bones/25/name = "DEF-ear.L.001" bones/25/parent = 2 bones/25/rest = Transform3D(0.678915, 0.638299, 0.362834, -0.585463, 0.172429, 0.792149, 0.443065, -0.750228, 0.490766, 0.08901, 1.71153, 0.03024) bones/25/enabled = true -bones/25/position = Vector3(0.08901, 1.71153, 0.03024) -bones/25/rotation = Quaternion(-0.503915, -0.0262126, -0.399819, 0.765198) +bones/25/position = Vector3(0.0573837, 1.60823, 0.17641) +bones/25/rotation = Quaternion(-0.396164, 0.000203222, -0.376699, 0.837348) bones/25/scale = Vector3(1, 1, 1) bones/26/name = "DEF-ear.L.002" bones/26/parent = 2 bones/26/rest = Transform3D(0.186784, 0.0158202, 0.982274, 0.036631, -0.999287, 0.0091287, 0.98172, 0.0342765, -0.18723, 0.108, 1.71666, 0.00792) bones/26/enabled = true -bones/26/position = Vector3(0.108, 1.71666, 0.00792) -bones/26/rotation = Quaternion(0.770276, 0.0170235, 0.637431, 0.00816195) -bones/26/scale = Vector3(1, 1, 1) +bones/26/position = Vector3(0.0761473, 1.6202, 0.156669) +bones/26/rotation = Quaternion(0.757818, -0.037515, 0.641349, -0.113918) +bones/26/scale = Vector3(1.00001, 0.999978, 1.00001) bones/27/name = "DEF-ear.L.003" bones/27/parent = 26 bones/27/rest = Transform3D(0.868707, 0.467945, 0.162405, -0.467945, 0.667817, 0.578834, 0.162405, -0.578834, 0.79911, 1.39698e-08, 0.0341345, 1.36206e-08) bones/27/enabled = true bones/27/position = Vector3(1.39698e-08, 0.0341345, 1.36206e-08) bones/27/rotation = Quaternion(-0.316931, 1.63178e-07, -0.256216, 0.913186) -bones/27/scale = Vector3(1, 1, 1) +bones/27/scale = Vector3(0.999989, 1.00002, 0.999994) bones/28/name = "DEF-ear.L.004" bones/28/parent = 2 bones/28/rest = Transform3D(0.634728, -0.408088, -0.656189, 0.412904, 0.896897, -0.158386, 0.653169, -0.17041, 0.737787, 0.0909, 1.65798, 0.03123) bones/28/enabled = true -bones/28/position = Vector3(0.0909, 1.65798, 0.03123) -bones/28/rotation = Quaternion(-0.003325, -0.362071, 0.227025, 0.904076) +bones/28/position = Vector3(0.063216, 1.55647, 0.163786) +bones/28/rotation = Quaternion(0.124053, -0.396587, 0.210918, 0.884784) bones/28/scale = Vector3(1, 1, 1) bones/29/name = "DEF-ear.R" bones/29/parent = 2 bones/29/rest = Transform3D(0.961059, -0.174102, 0.214603, 0.184384, 0.982435, -0.0287021, -0.205837, 0.0671538, 0.976279, -0.08271, 1.67598, 0.02781) bones/29/enabled = true -bones/29/position = Vector3(-0.08271, 1.67598, 0.02781) -bones/29/rotation = Quaternion(0.024208, 0.10618, 0.0905341, 0.989921) +bones/29/position = Vector3(-0.11121, 1.56271, 0.160239) +bones/29/rotation = Quaternion(0.146783, 0.0852054, 0.139303, 0.975597) bones/29/scale = Vector3(1, 1, 0.999999) bones/30/name = "DEF-ear.R.001" bones/30/parent = 2 bones/30/rest = Transform3D(0.678915, -0.638299, -0.362834, 0.585463, 0.172429, 0.792149, -0.443065, -0.750228, 0.490766, -0.08901, 1.71153, 0.03024) bones/30/enabled = true -bones/30/position = Vector3(-0.08901, 1.71153, 0.03024) -bones/30/rotation = Quaternion(-0.503915, 0.0262126, 0.399819, 0.765198) +bones/30/position = Vector3(-0.120142, 1.59593, 0.171465) +bones/30/rotation = Quaternion(-0.405511, -0.0508089, 0.422474, 0.809008) bones/30/scale = Vector3(1, 1, 1) bones/31/name = "DEF-ear.R.002" bones/31/parent = 2 bones/31/rest = Transform3D(0.186784, -0.0158202, -0.982274, -0.036631, -0.999287, 0.0091287, -0.98172, 0.0342765, -0.18723, -0.108, 1.71666, 0.00792) bones/31/enabled = true -bones/31/position = Vector3(-0.108, 1.71666, 0.00792) -bones/31/rotation = Quaternion(0.770276, -0.0170235, -0.637431, 0.00816195) -bones/31/scale = Vector3(1, 1, 1) +bones/31/position = Vector3(-0.139253, 1.60528, 0.150668) +bones/31/rotation = Quaternion(0.770934, 0.0929014, -0.626393, -0.0682739) +bones/31/scale = Vector3(1.00001, 0.999994, 1) bones/32/name = "DEF-ear.R.003" bones/32/parent = 31 bones/32/rest = Transform3D(0.868707, -0.467945, -0.162405, 0.467945, 0.667817, 0.578834, -0.162405, -0.578834, 0.79911, -1.39698e-08, 0.0341345, 1.36206e-08) bones/32/enabled = true bones/32/position = Vector3(-1.39698e-08, 0.0341345, 1.36206e-08) bones/32/rotation = Quaternion(-0.316931, -1.63178e-07, 0.256216, 0.913186) -bones/32/scale = Vector3(1, 1, 1) +bones/32/scale = Vector3(0.999997, 1, 1) bones/33/name = "DEF-ear.R.004" bones/33/parent = 2 bones/33/rest = Transform3D(0.634728, 0.408088, 0.656189, -0.412904, 0.896897, -0.158386, -0.653169, -0.17041, 0.737787, -0.0909, 1.65798, 0.03123) bones/33/enabled = true -bones/33/position = Vector3(-0.0909, 1.65798, 0.03123) -bones/33/rotation = Quaternion(-0.003325, 0.362071, -0.227025, 0.904076) +bones/33/position = Vector3(-0.1181, 1.54392, 0.158746) +bones/33/rotation = Quaternion(0.10218, 0.379485, -0.145792, 0.907907) bones/33/scale = Vector3(1, 1, 1) bones/34/name = "DEF-teeth.T" bones/34/parent = 2 bones/34/rest = Transform3D(1, 4.62162e-13, 1.77945e-13, -1.77945e-13, 1.78814e-07, 1, 4.62162e-13, -1, 1.78814e-07, -3.77531e-14, 1.63926, 0.14112) bones/34/enabled = true -bones/34/position = Vector3(-3.77531e-14, 1.63926, 0.14112) -bones/34/rotation = Quaternion(-0.707107, -1.00486e-13, -2.26312e-13, 0.707107) +bones/34/position = Vector3(-0.0270593, 1.50402, 0.262718) +bones/34/rotation = Quaternion(-0.609676, -0.0320865, 0.0188979, 0.791776) bones/34/scale = Vector3(1, 1, 1) bones/35/name = "DEF-nose.002" bones/35/parent = 2 bones/35/rest = Transform3D(1, -2.28305e-13, 4.65375e-13, -5.17765e-13, -0.396913, 0.917856, -2.48383e-14, -0.917856, -0.396913, -3.77753e-14, 1.6605, 0.17685) bones/35/enabled = true -bones/35/position = Vector3(-3.77753e-14, 1.6605, 0.17685) -bones/35/rotation = Quaternion(-0.835737, 2.23177e-13, -1.31781e-13, 0.54913) -bones/35/scale = Vector3(1, 1, 1) +bones/35/position = Vector3(-0.0289573, 1.51535, 0.302664) +bones/35/rotation = Quaternion(-0.757489, -0.0352515, 0.0120032, 0.651785) +bones/35/scale = Vector3(1.00001, 0.999983, 1.00001) bones/36/name = "DEF-nose.003" bones/36/parent = 35 bones/36/rest = Transform3D(1, -2.60347e-14, -5.1028e-14, 7.10543e-15, 0.940254, -0.340475, 5.68434e-14, 0.340475, 0.940254, 4.23516e-21, 0.010884, -1.71363e-07) bones/36/enabled = true bones/36/position = Vector3(4.23516e-21, 0.010884, -1.71363e-07) -bones/36/rotation = Quaternion(0.172839, -2.73799e-14, 8.41162e-15, 0.98495) -bones/36/scale = Vector3(1, 1, 1) +bones/36/rotation = Quaternion(0.172811, -6.05809e-08, 3.59375e-07, 0.984955) +bones/36/scale = Vector3(0.99999, 1.00002, 0.999994) bones/37/name = "DEF-nose.L.001" bones/37/parent = 2 bones/37/rest = Transform3D(-0.877924, -0.461149, 0.128806, 0.116591, 0.0550216, 0.991655, -0.464387, 0.885615, 0.00546097, 0.01584, 1.65861, 0.14643) bones/37/enabled = true -bones/37/position = Vector3(0.01584, 1.65861, 0.14643) -bones/37/rotation = Quaternion(-0.12409, 0.694169, 0.676085, 0.213634) +bones/37/position = Vector3(-0.0127419, 1.52241, 0.273218) +bones/37/rotation = Quaternion(-0.126792, 0.594384, 0.765912, 0.209785) bones/37/scale = Vector3(1, 1, 1) bones/38/name = "DEF-nose.R.001" bones/38/parent = 2 bones/38/rest = Transform3D(-0.877924, 0.461149, -0.128806, -0.116591, 0.0550216, 0.991655, 0.464388, 0.885615, 0.00546099, -0.01584, 1.65861, 0.14643) bones/38/enabled = true -bones/38/position = Vector3(-0.01584, 1.65861, 0.14643) -bones/38/rotation = Quaternion(0.12409, 0.694169, 0.676085, -0.213634) +bones/38/position = Vector3(-0.0443339, 1.52022, 0.272338) +bones/38/rotation = Quaternion(0.0641305, 0.607317, 0.752822, -0.245586) bones/38/scale = Vector3(1, 1, 1) bones/39/name = "DEF-eye_master.L" bones/39/parent = 2 bones/39/rest = Transform3D(-1, 1.80179e-13, 4.59309e-13, 4.59309e-13, 0, 1, 1.80179e-13, 1, -8.27579e-26, 0.04644, 1.70469, 0.10881) bones/39/enabled = true -bones/39/position = Vector3(0.04644, 1.70469, 0.10881) -bones/39/rotation = Quaternion(2.26093e-13, 0.707107, 0.707107, 9.86874e-14) +bones/39/position = Vector3(0.0147146, 1.57858, 0.249435) +bones/39/rotation = Quaternion(-0.0320869, 0.609676, 0.791775, -0.0188986) bones/39/scale = Vector3(1, 1, 1) bones/40/name = "DEF-lid.B.L" bones/40/parent = 2 bones/40/rest = Transform3D(0.216868, 0.961081, 0.171145, 0.856458, -0.27145, 0.439084, 0.468453, 0.0513548, -0.881995, 0.02358, 1.70019, 0.12762) bones/40/enabled = true -bones/40/position = Vector3(0.02358, 1.70019, 0.12762) -bones/40/rotation = Quaternion(0.769791, 0.590271, 0.207718, -0.12592) -bones/40/scale = Vector3(1, 1, 1) +bones/40/position = Vector3(-0.00792252, 1.56785, 0.265837) +bones/40/rotation = Quaternion(0.723405, 0.587133, 0.284492, -0.225884) +bones/40/scale = Vector3(0.999995, 1.00001, 0.999995) bones/41/name = "DEF-lid.B.L.001" bones/41/parent = 40 bones/41/rest = Transform3D(0.995628, 0.0831678, -0.0425235, -0.0885883, 0.98508, -0.147543, 0.0296183, 0.150665, 0.988141, -3.86499e-08, 0.0122674, -7.91624e-09) bones/41/enabled = true bones/41/position = Vector3(-3.86499e-08, 0.0122674, -7.91624e-09) -bones/41/rotation = Quaternion(0.074844, -0.0181061, -0.0431072, 0.996099) -bones/41/scale = Vector3(1, 1, 1) +bones/41/rotation = Quaternion(0.0748491, -0.0181048, -0.043127, 0.996097) +bones/41/scale = Vector3(1.00001, 0.999982, 1.00001) bones/42/name = "DEF-lid.B.L.002" bones/42/parent = 41 bones/42/rest = Transform3D(0.965916, 0.239904, -0.0972203, -0.254868, 0.815753, -0.519221, -0.0452555, 0.526302, 0.849092, -1.53668e-08, 0.0145372, 4.02797e-08) bones/42/enabled = true bones/42/position = Vector3(-1.53668e-08, 0.0145372, 4.02797e-08) -bones/42/rotation = Quaternion(0.27435, -0.0136358, -0.12983, 0.952728) -bones/42/scale = Vector3(1, 1, 1) +bones/42/rotation = Quaternion(0.274347, -0.0136375, -0.129823, 0.95273) +bones/42/scale = Vector3(0.999995, 1.00001, 0.999997) bones/43/name = "DEF-lid.B.L.003" bones/43/parent = 42 bones/43/rest = Transform3D(0.99096, -0.13058, 0.0307872, 0.126778, 0.836373, -0.533299, 0.0438886, 0.532381, 0.845367, 4.65661e-10, 0.0149265, 1.11759e-08) bones/43/enabled = true bones/43/position = Vector3(4.65661e-10, 0.0149265, 1.11759e-08) -bones/43/rotation = Quaternion(0.278038, -0.00341824, 0.0671451, 0.958214) -bones/43/scale = Vector3(1, 1, 1) +bones/43/rotation = Quaternion(0.278039, -0.00341864, 0.067147, 0.958214) +bones/43/scale = Vector3(1, 0.999998, 1) bones/44/name = "DEF-lid.T.L" bones/44/parent = 2 bones/44/rest = Transform3D(0.0104918, -0.524464, -0.851368, -0.942304, 0.279708, -0.183919, 0.334593, 0.804178, -0.49127, 0.06912, 1.70523, 0.10962) bones/44/enabled = true -bones/44/position = Vector3(0.06912, 1.70523, 0.10962) -bones/44/rotation = Quaternion(-0.552733, 0.663416, 0.233736, -0.446914) -bones/44/scale = Vector3(1, 1, 1) +bones/44/position = Vector3(0.0372842, 1.58046, 0.250986) +bones/44/rotation = Quaternion(-0.63139, 0.611572, 0.295786, -0.373948) +bones/44/scale = Vector3(1, 0.999997, 1) bones/45/name = "DEF-lid.T.L.001" bones/45/parent = 44 bones/45/rest = Transform3D(1, -0.00012094, 2.69545e-05, 0.000121019, 0.906601, -0.421988, 2.65983e-05, 0.421988, 0.906601, -2.36556e-07, 0.0154444, -4.09782e-08) bones/45/enabled = true bones/45/position = Vector3(-2.36556e-07, 0.0154444, -4.09782e-08) -bones/45/rotation = Quaternion(0.2161, 9.1213e-08, 6.19537e-05, 0.976371) -bones/45/scale = Vector3(1, 1, 1) +bones/45/rotation = Quaternion(0.216098, -2.38372e-06, 7.31266e-05, 0.976372) +bones/45/scale = Vector3(0.999997, 1, 0.999998) bones/46/name = "DEF-lid.T.L.002" bones/46/parent = 45 bones/46/rest = Transform3D(0.973173, 0.220311, -0.066309, -0.207876, 0.718458, -0.663782, -0.0985982, 0.659759, 0.744981, -1.84868e-07, 0.0138006, -1.67638e-08) bones/46/enabled = true bones/46/position = Vector3(-1.84868e-07, 0.0138006, -1.67638e-08) -bones/46/rotation = Quaternion(0.356978, 0.00870878, -0.115488, 0.926905) -bones/46/scale = Vector3(1, 1, 1) +bones/46/rotation = Quaternion(0.356984, 0.00871236, -0.115499, 0.926902) +bones/46/scale = Vector3(0.999999, 1, 0.999997) bones/47/name = "DEF-lid.T.L.003" bones/47/parent = 46 bones/47/rest = Transform3D(0.966996, 0.25037, 0.047264, -0.246756, 0.966464, -0.0711275, -0.0634872, 0.0571173, 0.996347, 4.19095e-08, 0.0117108, 1.53668e-08) bones/47/enabled = true bones/47/position = Vector3(4.19095e-08, 0.0117108, 1.53668e-08) -bones/47/rotation = Quaternion(0.0323463, 0.027934, -0.125387, 0.991187) -bones/47/scale = Vector3(1, 1, 1) +bones/47/rotation = Quaternion(0.0323356, 0.0279349, -0.125373, 0.991189) +bones/47/scale = Vector3(1.00001, 0.999983, 1.00001) bones/48/name = "DEF-eye.L" bones/48/parent = 2 bones/48/rest = Transform3D(-1, 1.80179e-13, 4.59309e-13, 4.59309e-13, 0, 1, 1.80179e-13, 1, -8.27579e-26, 0.04644, 1.70469, 0.10881) bones/48/enabled = true -bones/48/position = Vector3(0.04644, 1.70469, 0.10881) -bones/48/rotation = Quaternion(2.26093e-13, 0.707107, 0.707107, 9.86874e-14) +bones/48/position = Vector3(0.0147146, 1.57858, 0.249435) +bones/48/rotation = Quaternion(-0.0320869, 0.609676, 0.791775, -0.0188987) bones/48/scale = Vector3(1, 1, 1) bones/49/name = "DEF-eye_iris.L" bones/49/parent = 48 @@ -437,71 +437,71 @@ bones/50/name = "DEF-eye_master.R" bones/50/parent = 2 bones/50/rest = Transform3D(-1, 1.80179e-13, 4.59309e-13, 4.59309e-13, 0, 1, 1.80179e-13, 1, -8.27579e-26, -0.04644, 1.70469, 0.10881) bones/50/enabled = true -bones/50/position = Vector3(-0.04644, 1.70469, 0.10881) -bones/50/rotation = Quaternion(2.26093e-13, 0.707107, 0.707107, 9.86874e-14) +bones/50/position = Vector3(-0.0779075, 1.57217, 0.246855) +bones/50/rotation = Quaternion(-0.0320869, 0.609676, 0.791775, -0.0188986) bones/50/scale = Vector3(1, 1, 1) bones/51/name = "DEF-lid.B.R" bones/51/parent = 2 bones/51/rest = Transform3D(0.216868, -0.961081, -0.171145, -0.856458, -0.27145, 0.439084, -0.468453, 0.0513548, -0.881995, -0.02358, 1.70019, 0.12762) bones/51/enabled = true -bones/51/position = Vector3(-0.02358, 1.70019, 0.12762) -bones/51/rotation = Quaternion(0.769791, -0.590271, -0.207718, -0.12592) -bones/51/scale = Vector3(1, 1, 1) +bones/51/position = Vector3(-0.0549516, 1.56459, 0.264527) +bones/51/rotation = Quaternion(0.769847, -0.529271, -0.27921, -0.221921) +bones/51/scale = Vector3(1, 0.999997, 1) bones/52/name = "DEF-lid.B.R.001" bones/52/parent = 51 bones/52/rest = Transform3D(0.995628, -0.0831678, 0.0425235, 0.0885883, 0.98508, -0.147543, -0.0296183, 0.150665, 0.988141, 3.86499e-08, 0.0122674, -7.91624e-09) bones/52/enabled = true bones/52/position = Vector3(3.86499e-08, 0.0122674, -7.91624e-09) -bones/52/rotation = Quaternion(0.074844, 0.0181061, 0.0431072, 0.996099) -bones/52/scale = Vector3(1, 1, 1) +bones/52/rotation = Quaternion(0.0748466, 0.0181067, 0.0431008, 0.996099) +bones/52/scale = Vector3(0.999999, 1, 0.999999) bones/53/name = "DEF-lid.B.R.002" bones/53/parent = 52 bones/53/rest = Transform3D(0.965916, -0.239904, 0.0972204, 0.254868, 0.815752, -0.519221, 0.0452555, 0.526302, 0.849092, 1.53668e-08, 0.0145372, 4.02797e-08) bones/53/enabled = true bones/53/position = Vector3(1.53668e-08, 0.0145372, 4.02797e-08) -bones/53/rotation = Quaternion(0.27435, 0.0136358, 0.12983, 0.952728) -bones/53/scale = Vector3(1, 1, 1) +bones/53/rotation = Quaternion(0.274349, 0.0136351, 0.129833, 0.952728) +bones/53/scale = Vector3(0.999999, 1, 0.999999) bones/54/name = "DEF-lid.B.R.003" bones/54/parent = 53 bones/54/rest = Transform3D(0.99096, 0.13058, -0.0307874, -0.126779, 0.836373, -0.533299, -0.0438884, 0.532381, 0.845366, -1.0943e-07, 0.0149264, -3.72529e-09) bones/54/enabled = true bones/54/position = Vector3(-1.0943e-07, 0.0149264, -3.72529e-09) -bones/54/rotation = Quaternion(0.278038, 0.00341801, -0.0671455, 0.958214) -bones/54/scale = Vector3(1, 1, 1) +bones/54/rotation = Quaternion(0.27804, 0.00341749, -0.0671438, 0.958214) +bones/54/scale = Vector3(0.999997, 1.00001, 0.999996) bones/55/name = "DEF-lid.T.R" bones/55/parent = 2 bones/55/rest = Transform3D(0.0104918, 0.524464, 0.851368, 0.942304, 0.279708, -0.183919, -0.334593, 0.804178, -0.49127, -0.06912, 1.70523, 0.10962) bones/55/enabled = true -bones/55/position = Vector3(-0.06912, 1.70523, 0.10962) -bones/55/rotation = Quaternion(0.552733, 0.663416, 0.233736, 0.446914) -bones/55/scale = Vector3(1, 1, 1) +bones/55/position = Vector3(-0.100572, 1.57091, 0.247145) +bones/55/rotation = Quaternion(0.579192, 0.643093, 0.338318, 0.369471) +bones/55/scale = Vector3(1.00001, 0.999987, 1.00001) bones/56/name = "DEF-lid.T.R.001" bones/56/parent = 55 bones/56/rest = Transform3D(1, 0.000120935, -2.70373e-05, -0.000121049, 0.906601, -0.421988, -2.65209e-05, 0.421988, 0.906601, 2.36556e-07, 0.0154444, -4.09782e-08) bones/56/enabled = true bones/56/position = Vector3(2.36556e-07, 0.0154444, -4.09782e-08) -bones/56/rotation = Quaternion(0.2161, -1.3224e-07, -6.196e-05, 0.976371) -bones/56/scale = Vector3(1, 1, 1) +bones/56/rotation = Quaternion(0.216093, 4.47298e-06, -8.28337e-05, 0.976373) +bones/56/scale = Vector3(0.999988, 1.00002, 0.999992) bones/57/name = "DEF-lid.T.R.002" bones/57/parent = 56 bones/57/rest = Transform3D(0.973173, -0.220311, 0.0663092, 0.207876, 0.718458, -0.663782, 0.0985981, 0.659759, 0.744981, 1.74507e-07, 0.0138006, -4.65661e-08) bones/57/enabled = true bones/57/position = Vector3(1.74507e-07, 0.0138006, -4.65661e-08) -bones/57/rotation = Quaternion(0.356978, -0.00870873, 0.115488, 0.926905) -bones/57/scale = Vector3(1, 1, 1) +bones/57/rotation = Quaternion(0.356984, -0.0087149, 0.115506, 0.926901) +bones/57/scale = Vector3(1, 0.999998, 0.999997) bones/58/name = "DEF-lid.T.R.003" bones/58/parent = 57 bones/58/rest = Transform3D(0.966996, -0.25037, -0.0472639, 0.246756, 0.966464, -0.0711274, 0.0634871, 0.0571173, 0.996347, 7.63685e-08, 0.0117107, 2.468e-08) bones/58/enabled = true bones/58/position = Vector3(7.63685e-08, 0.0117107, 2.468e-08) -bones/58/rotation = Quaternion(0.0323462, -0.0279339, 0.125387, 0.991187) -bones/58/scale = Vector3(1, 1, 1) +bones/58/rotation = Quaternion(0.0323453, -0.0279339, 0.125381, 0.991188) +bones/58/scale = Vector3(1, 0.999999, 1) bones/59/name = "DEF-eye.R" bones/59/parent = 2 bones/59/rest = Transform3D(-1, 1.80179e-13, 4.59309e-13, 4.59309e-13, 0, 1, 1.80179e-13, 1, -8.27579e-26, -0.04644, 1.70469, 0.10881) bones/59/enabled = true -bones/59/position = Vector3(-0.04644, 1.70469, 0.10881) -bones/59/rotation = Quaternion(2.26093e-13, 0.707107, 0.707107, 9.86874e-14) +bones/59/position = Vector3(-0.0779075, 1.57217, 0.246855) +bones/59/rotation = Quaternion(-0.0320869, 0.609676, 0.791775, -0.0188986) bones/59/scale = Vector3(1, 1, 1) bones/60/name = "DEF-eye_iris.R" bones/60/parent = 59 @@ -514,15 +514,15 @@ bones/61/name = "DEF-teeth.B" bones/61/parent = 2 bones/61/rest = Transform3D(1, 4.62162e-13, 1.77945e-13, -1.77945e-13, -1.19209e-07, 1, 4.62162e-13, -0.999999, -1.19209e-07, -3.77531e-14, 1.61028, 0.135) bones/61/enabled = true -bones/61/position = Vector3(-3.77531e-14, 1.61028, 0.135) -bones/61/rotation = Quaternion(-0.707107, -1.00486e-13, -2.26312e-13, 0.707107) +bones/61/position = Vector3(-0.024878, 1.47763, 0.24942) +bones/61/rotation = Quaternion(-0.609676, -0.0320869, 0.0188986, 0.791775) bones/61/scale = Vector3(1, 0.999999, 1) bones/62/name = "DEF-tongue" bones/62/parent = 2 bones/62/rest = Transform3D(1, 4.34147e-13, 1.14851e-13, -2.0596e-13, 0.21611, 0.976368, 3.99068e-13, -0.976368, 0.21611, -3.77531e-14, 1.61514, 0.12186) bones/62/enabled = true -bones/62/position = Vector3(-3.77531e-14, 1.61514, 0.12186) -bones/62/rotation = Quaternion(-0.626055, -9.11212e-14, -2.05221e-13, 0.779779) +bones/62/position = Vector3(-0.0251168, 1.48568, 0.237958) +bones/62/rotation = Quaternion(-0.519998, -0.0298426, 0.0222745, 0.853355) bones/62/scale = Vector3(1, 0.999999, 0.999999) bones/63/name = "DEF-tongue.001" bones/63/parent = 62 @@ -542,36 +542,36 @@ bones/65/name = "DEF-jaw_master" bones/65/parent = 2 bones/65/rest = Transform3D(1, -3.62948e-13, 4.55036e-14, -2.7716e-13, -0.833001, -0.553271, 2.38713e-13, 0.553271, -0.833, -3.77531e-14, 1.68642, 0.05625) bones/65/enabled = true -bones/65/position = Vector3(-3.77531e-14, 1.68642, 0.05625) -bones/65/rotation = Quaternion(0.95734, -1.67158e-13, 7.42204e-14, 0.288963) +bones/65/position = Vector3(-0.0297631, 1.57121, 0.192687) +bones/65/rotation = Quaternion(0.985909, 0.0318187, 0.0193454, 0.163084) bones/65/scale = Vector3(1, 1, 0.999999) bones/66/name = "DEF-chin" bones/66/parent = 2 bones/66/rest = Transform3D(1, 2.84217e-13, 2.38418e-07, 8.53385e-08, 0.933745, -0.357937, -2.22622e-07, 0.357937, 0.933745, -3.77531e-14, 1.56528, 0.13671) bones/66/enabled = true -bones/66/position = Vector3(-3.77531e-14, 1.56528, 0.13671) -bones/66/rotation = Quaternion(0.182009, 1.17218e-07, 2.1697e-08, 0.983297) -bones/66/scale = Vector3(1, 0.999999, 0.999999) +bones/66/position = Vector3(-0.0215639, 1.4338, 0.239603) +bones/66/rotation = Quaternion(0.306981, -0.00260828, 0.0371471, 0.950987) +bones/66/scale = Vector3(0.999995, 1.00001, 0.999996) bones/67/name = "DEF-chin.001" bones/67/parent = 66 bones/67/rest = Transform3D(1, 1.19699e-07, -2.06193e-07, 6.39488e-14, 0.864837, 0.502052, 2.38419e-07, -0.502052, 0.864837, 1.90903e-14, 0.0289157, 0) bones/67/enabled = true bones/67/position = Vector3(1.90903e-14, 0.0289157, 0) bones/67/rotation = Quaternion(-0.259964, -1.15111e-07, -3.09902e-08, 0.965618) -bones/67/scale = Vector3(1, 1, 1) +bones/67/scale = Vector3(1.00001, 0.999993, 1) bones/68/name = "DEF-jaw" bones/68/parent = 2 bones/68/rest = Transform3D(1, -6.25277e-13, 9.53684e-07, 9.50503e-07, -0.0816063, -0.996664, 7.78274e-08, 0.996664, -0.0816064, -3.77531e-14, 1.56951, 0.08505) bones/68/enabled = true -bones/68/position = Vector3(-3.77531e-14, 1.56951, 0.08505) -bones/68/rotation = Quaternion(0.735393, 3.23127e-07, 3.50667e-07, 0.677641) +bones/68/position = Vector3(-0.0207731, 1.45099, 0.190407) +bones/68/rotation = Quaternion(0.816013, 0.0201928, 0.0312884, 0.576833) bones/68/scale = Vector3(1, 0.999999, 0.999999) bones/69/name = "DEF-jaw.L" bones/69/parent = 2 bones/69/rest = Transform3D(0.982712, -0.183588, -0.0239067, -0.184924, -0.979563, -0.0791116, -0.00889419, 0.0821649, -0.996578, 0.08334, 1.68642, 0.05625) bones/69/enabled = true -bones/69/position = Vector3(0.08334, 1.68642, 0.05625) -bones/69/rotation = Quaternion(0.994844, -0.0926055, -0.00824273, 0.0405281) +bones/69/position = Vector3(0.0533455, 1.57697, 0.195002) +bones/69/rotation = Quaternion(0.9945, -0.0552208, -0.00935386, -0.088504) bones/69/scale = Vector3(0.999999, 1, 0.999999) bones/70/name = "DEF-jaw.L.001" bones/70/parent = 69 @@ -591,8 +591,8 @@ bones/72/name = "DEF-jaw.R" bones/72/parent = 2 bones/72/rest = Transform3D(0.982712, 0.183588, 0.0239067, 0.184924, -0.979563, -0.0791116, 0.00889419, 0.0821649, -0.996578, -0.08334, 1.68642, 0.05625) bones/72/enabled = true -bones/72/position = Vector3(-0.08334, 1.68642, 0.05625) -bones/72/rotation = Quaternion(0.994844, 0.0926055, 0.00824273, 0.0405281) +bones/72/position = Vector3(-0.112872, 1.56545, 0.190371) +bones/72/rotation = Quaternion(0.987669, 0.126196, 0.0308314, -0.0873711) bones/72/scale = Vector3(0.999999, 1, 0.999999) bones/73/name = "DEF-jaw.R.001" bones/73/parent = 72 @@ -612,204 +612,204 @@ bones/75/name = "DEF-lip.T.L" bones/75/parent = 2 bones/75/rest = Transform3D(0.267455, 0.963307, -0.0225411, -0.0225393, 0.0296414, 0.999306, 0.963306, -0.266762, 0.02964, -3.77531e-14, 1.6326, 0.1539) bones/75/enabled = true -bones/75/position = Vector3(-3.77531e-14, 1.6326, 0.1539) -bones/75/rotation = Quaternion(-0.549585, -0.427945, -0.427944, 0.57592) +bones/75/position = Vector3(-0.0267033, 1.49431, 0.273377) +bones/75/rotation = Quaternion(-0.451053, -0.39416, -0.463549, 0.652925) bones/75/scale = Vector3(0.999999, 1, 1) bones/76/name = "DEF-lip.T.L.001" bones/76/parent = 75 bones/76/rest = Transform3D(0.84004, -0.47483, -0.262428, 0.533122, 0.812144, 0.237071, 0.100561, -0.339056, 0.935376, 0, 0.0182185, -7.18574e-08) bones/76/enabled = true bones/76/position = Vector3(0, 0.0182185, -7.18574e-08) -bones/76/rotation = Quaternion(-0.152086, -0.0958218, 0.266079, 0.947043) -bones/76/scale = Vector3(0.999999, 1, 1) +bones/76/rotation = Quaternion(-0.15209, -0.0958223, 0.266082, 0.947041) +bones/76/scale = Vector3(0.999994, 1.00001, 0.999993) bones/77/name = "DEF-lip.T.R" bones/77/parent = 2 bones/77/rest = Transform3D(0.267455, -0.963307, 0.0225411, 0.0225393, 0.0296414, 0.999306, -0.963306, -0.266762, 0.02964, -3.77531e-14, 1.6326, 0.1539) bones/77/enabled = true -bones/77/position = Vector3(-3.77531e-14, 1.6326, 0.1539) -bones/77/rotation = Quaternion(-0.549585, 0.427945, 0.427944, 0.57592) -bones/77/scale = Vector3(0.999999, 1, 1) +bones/77/position = Vector3(-0.0267033, 1.49431, 0.273377) +bones/77/rotation = Quaternion(-0.489892, 0.343792, 0.494829, 0.630046) +bones/77/scale = Vector3(0.999999, 1, 0.999999) bones/78/name = "DEF-lip.T.R.001" bones/78/parent = 77 bones/78/rest = Transform3D(0.84004, 0.47483, 0.262428, -0.533122, 0.812144, 0.237071, -0.100561, -0.339056, 0.935376, 0, 0.0182185, -7.18574e-08) bones/78/enabled = true bones/78/position = Vector3(0, 0.0182185, -7.18574e-08) -bones/78/rotation = Quaternion(-0.152086, 0.0958218, -0.266079, 0.947043) -bones/78/scale = Vector3(0.999999, 1, 1) +bones/78/rotation = Quaternion(-0.152094, 0.095823, -0.266084, 0.94704) +bones/78/scale = Vector3(0.999994, 1.00001, 0.999994) bones/79/name = "DEF-lip.B.L" bones/79/parent = 2 bones/79/rest = Transform3D(0.421291, 0.887527, -0.186573, -0.0767522, 0.239873, 0.967765, 0.903672, -0.393391, 0.169176, -3.77531e-14, 1.61802, 0.15003) bones/79/enabled = true -bones/79/position = Vector3(-3.77531e-14, 1.61802, 0.15003) -bones/79/rotation = Quaternion(-0.503051, -0.402929, -0.356375, 0.67645) -bones/79/scale = Vector3(1, 1, 1) +bones/79/position = Vector3(-0.0255889, 1.48124, 0.26592) +bones/79/rotation = Quaternion(-0.393555, -0.377853, -0.385351, 0.744208) +bones/79/scale = Vector3(1, 0.999999, 1) bones/80/name = "DEF-lip.B.L.001" bones/80/parent = 79 bones/80/rest = Transform3D(0.985046, -0.0787517, 0.153241, 0.0762075, 0.99684, 0.0224156, -0.154523, -0.0104023, 0.987934, 1.39698e-09, 0.01876, -4.77303e-08) bones/80/enabled = true bones/80/position = Vector3(1.39698e-09, 0.01876, -4.77303e-08) -bones/80/rotation = Quaternion(-0.00823562, 0.0772331, 0.0388868, 0.99622) -bones/80/scale = Vector3(1, 1, 0.999999) +bones/80/rotation = Quaternion(-0.00824502, 0.0772326, 0.0389061, 0.99622) +bones/80/scale = Vector3(1, 0.999999, 1) bones/81/name = "DEF-lip.B.R" bones/81/parent = 2 bones/81/rest = Transform3D(0.421291, -0.887527, 0.186573, 0.0767522, 0.239873, 0.967765, -0.903672, -0.393391, 0.169176, -3.77531e-14, 1.61802, 0.15003) bones/81/enabled = true -bones/81/position = Vector3(-3.77531e-14, 1.61802, 0.15003) -bones/81/rotation = Quaternion(-0.503051, 0.402929, 0.356375, 0.67645) -bones/81/scale = Vector3(1, 1, 1) +bones/81/position = Vector3(-0.0255889, 1.48124, 0.26592) +bones/81/rotation = Quaternion(-0.429257, 0.328964, 0.424745, 0.726025) +bones/81/scale = Vector3(0.999996, 1.00001, 0.999996) bones/82/name = "DEF-lip.B.R.001" bones/82/parent = 81 bones/82/rest = Transform3D(0.985046, 0.0787517, -0.153241, -0.0762075, 0.99684, 0.0224156, 0.154523, -0.0104023, 0.987934, -1.39698e-09, 0.01876, -4.77303e-08) bones/82/enabled = true bones/82/position = Vector3(-1.39698e-09, 0.01876, -4.77303e-08) -bones/82/rotation = Quaternion(-0.00823562, -0.0772331, -0.0388868, 0.99622) -bones/82/scale = Vector3(1, 1, 0.999999) +bones/82/rotation = Quaternion(-0.00825141, -0.0772324, -0.0389073, 0.99622) +bones/82/scale = Vector3(1.00001, 0.999987, 1.00001) bones/83/name = "DEF-brow.B.L" bones/83/parent = 2 bones/83/rest = Transform3D(-0.231095, -0.567802, 0.790061, 0.778977, 0.378539, 0.499902, -0.582914, 0.730965, 0.354826, 0.07119, 1.7118, 0.11133) bones/83/enabled = true -bones/83/position = Vector3(0.07119, 1.7118, 0.11133) -bones/83/rotation = Quaternion(0.0942595, 0.560091, 0.549405, 0.612836) -bones/83/scale = Vector3(0.999999, 1, 1) +bones/83/position = Vector3(0.0388473, 1.5865, 0.254369) +bones/83/rotation = Quaternion(0.147005, 0.481974, 0.639543, 0.580582) +bones/83/scale = Vector3(0.999994, 1.00001, 0.999994) bones/84/name = "DEF-brow.B.L.001" bones/84/parent = 83 bones/84/rest = Transform3D(0.999539, -0.0295952, -0.00677606, 0.0295952, 0.899936, 0.435016, -0.00677637, -0.435016, 0.900397, 1.22003e-07, 0.01379, 4.47035e-08) bones/84/enabled = true bones/84/position = Vector3(1.22003e-07, 0.01379, 4.47035e-08) -bones/84/rotation = Quaternion(-0.223162, 7.26205e-08, 0.0151823, 0.974663) -bones/84/scale = Vector3(1, 1, 1) +bones/84/rotation = Quaternion(-0.223178, 5.86239e-06, 0.0152086, 0.974659) +bones/84/scale = Vector3(1.00001, 0.999993, 1) bones/85/name = "DEF-brow.B.L.002" bones/85/parent = 84 bones/85/rest = Transform3D(0.982332, 0.17848, 0.0562933, -0.17848, 0.802973, 0.568665, 0.0562932, -0.568665, 0.820641, -6.0536e-08, 0.0134814, -8.00937e-08) bones/85/enabled = true bones/85/position = Vector3(-6.0536e-08, 0.0134814, -8.00937e-08) -bones/85/rotation = Quaternion(-0.299466, 5.00254e-08, -0.0939896, 0.949466) -bones/85/scale = Vector3(1, 1, 1) +bones/85/rotation = Quaternion(-0.299458, -3.83943e-06, -0.0939993, 0.949468) +bones/85/scale = Vector3(1, 0.999999, 1) bones/86/name = "DEF-brow.B.L.003" bones/86/parent = 85 bones/86/rest = Transform3D(0.940071, -0.335681, -0.0598743, 0.335681, 0.880251, 0.335373, -0.0598742, -0.335373, 0.940181, -9.31323e-08, 0.0171657, 1.43424e-07) bones/86/enabled = true bones/86/position = Vector3(-9.31323e-08, 0.0171657, 1.43424e-07) -bones/86/rotation = Quaternion(-0.172944, 3.36183e-08, 0.173103, 0.969601) -bones/86/scale = Vector3(1, 0.999999, 1) +bones/86/rotation = Quaternion(-0.172948, -1.18149e-06, 0.1731, 0.969601) +bones/86/scale = Vector3(0.999999, 1, 0.999999) bones/87/name = "DEF-brow.B.L.004" bones/87/parent = 2 bones/87/rest = Transform3D(-0.70622, -0.232916, -0.668582, -0.0973397, -0.903425, 0.417549, -0.701268, 0.359961, 0.615345, 0.01989, 1.7055, 0.12573) bones/87/enabled = true -bones/87/position = Vector3(0.01989, 1.7055, 0.12573) -bones/87/rotation = Quaternion(-0.381399, 0.216477, 0.897913, 0.0377477) -bones/87/scale = Vector3(0.999999, 0.999999, 0.999999) +bones/87/position = Vector3(-0.0119772, 1.5732, 0.26526) +bones/87/rotation = Quaternion(-0.389274, 0.0848027, 0.915489, 0.0561639) +bones/87/scale = Vector3(1, 0.999989, 1) bones/88/name = "DEF-nose.L" bones/88/parent = 87 bones/88/rest = Transform3D(0.953737, -0.182397, -0.238992, 0.202171, 0.977461, 0.0608056, 0.222514, -0.10631, 0.969116, -1.86265e-08, 0.0127513, 4.00469e-08) bones/88/enabled = true bones/88/position = Vector3(-1.86265e-08, 0.0127513, 4.00469e-08) bones/88/rotation = Quaternion(-0.0423095, -0.116842, 0.0973629, 0.987461) -bones/88/scale = Vector3(1, 1, 1) +bones/88/scale = Vector3(0.999997, 1.00001, 0.999997) bones/89/name = "DEF-brow.B.R" bones/89/parent = 2 bones/89/rest = Transform3D(-0.231095, 0.567802, -0.790061, -0.778977, 0.378539, 0.499902, 0.582914, 0.730965, 0.354826, -0.07119, 1.7118, 0.11133) bones/89/enabled = true -bones/89/position = Vector3(-0.07119, 1.7118, 0.11133) -bones/89/rotation = Quaternion(0.0942595, -0.560091, -0.549405, 0.612836) -bones/89/scale = Vector3(0.999999, 1, 1) +bones/89/position = Vector3(-0.103137, 1.57667, 0.250414) +bones/89/rotation = Quaternion(0.197634, -0.486612, -0.59359, 0.609754) +bones/89/scale = Vector3(0.999998, 1, 0.999998) bones/90/name = "DEF-brow.B.R.001" bones/90/parent = 89 bones/90/rest = Transform3D(0.999539, 0.0295952, 0.00677606, -0.0295952, 0.899936, 0.435016, 0.00677637, -0.435016, 0.900397, -1.22003e-07, 0.01379, 4.47035e-08) bones/90/enabled = true bones/90/position = Vector3(-1.22003e-07, 0.01379, 4.47035e-08) -bones/90/rotation = Quaternion(-0.223162, -7.26205e-08, -0.0151823, 0.974663) -bones/90/scale = Vector3(1, 1, 1) +bones/90/rotation = Quaternion(-0.223161, 1.53186e-06, -0.0151752, 0.974664) +bones/90/scale = Vector3(1, 0.999999, 1) bones/91/name = "DEF-brow.B.R.002" bones/91/parent = 90 bones/91/rest = Transform3D(0.982332, -0.17848, -0.0562933, 0.17848, 0.802973, 0.568665, -0.0562932, -0.568665, 0.820641, 6.0536e-08, 0.0134814, -8.00937e-08) bones/91/enabled = true bones/91/position = Vector3(6.0536e-08, 0.0134814, -8.00937e-08) -bones/91/rotation = Quaternion(-0.299466, -5.00254e-08, 0.0939896, 0.949466) +bones/91/rotation = Quaternion(-0.29947, -3.38517e-06, 0.0939802, 0.949466) bones/91/scale = Vector3(1, 1, 1) bones/92/name = "DEF-brow.B.R.003" bones/92/parent = 91 bones/92/rest = Transform3D(0.940071, 0.335681, 0.0598743, -0.335681, 0.880251, 0.335373, 0.0598742, -0.335373, 0.940181, 9.31323e-08, 0.0171657, 1.43424e-07) bones/92/enabled = true bones/92/position = Vector3(9.31323e-08, 0.0171657, 1.43424e-07) -bones/92/rotation = Quaternion(-0.172944, -3.36183e-08, -0.173103, 0.969601) -bones/92/scale = Vector3(1, 0.999999, 1) +bones/92/rotation = Quaternion(-0.172941, 1.64284e-06, -0.173091, 0.969603) +bones/92/scale = Vector3(1, 0.999994, 1) bones/93/name = "DEF-brow.B.R.004" bones/93/parent = 2 bones/93/rest = Transform3D(-0.70622, 0.232916, 0.668582, 0.0973397, -0.903425, 0.417549, 0.701268, 0.359961, 0.615345, -0.01989, 1.7055, 0.12573) bones/93/enabled = true -bones/93/position = Vector3(-0.01989, 1.7055, 0.12573) -bones/93/rotation = Quaternion(0.381399, 0.216477, 0.897913, -0.0377477) -bones/93/scale = Vector3(0.999999, 0.999999, 0.999999) +bones/93/position = Vector3(-0.0516468, 1.57045, 0.264154) +bones/93/rotation = Quaternion(0.356918, 0.113007, 0.919881, -0.11687) +bones/93/scale = Vector3(0.999998, 1, 0.999998) bones/94/name = "DEF-nose.R" bones/94/parent = 93 bones/94/rest = Transform3D(0.953737, 0.182397, 0.238992, -0.202171, 0.977461, 0.0608056, -0.222514, -0.10631, 0.969116, 1.86265e-08, 0.0127513, 4.00469e-08) bones/94/enabled = true bones/94/position = Vector3(1.86265e-08, 0.0127513, 4.00469e-08) bones/94/rotation = Quaternion(-0.0423095, 0.116842, -0.0973629, 0.987461) -bones/94/scale = Vector3(1, 1, 1) +bones/94/scale = Vector3(1, 0.999989, 1.00001) bones/95/name = "DEF-brow.T.L" bones/95/parent = 2 bones/95/rest = Transform3D(0.788261, -0.0448198, -0.613706, -0.392101, 0.732058, -0.557089, 0.474237, 0.679767, 0.559479, 0.07632, 1.6983, 0.0846) bones/95/enabled = true -bones/95/position = Vector3(0.07632, 1.6983, 0.0846) -bones/95/rotation = Quaternion(0.352393, -0.309967, -0.0989441, 0.877468) +bones/95/position = Vector3(0.0452064, 1.58068, 0.225236) +bones/95/rotation = Quaternion(0.474298, -0.289908, -0.103044, 0.824849) bones/95/scale = Vector3(1, 1, 1) bones/96/name = "DEF-brow.T.L.001" bones/96/parent = 2 bones/96/rest = Transform3D(0.608609, -0.729296, -0.312606, -0.158565, 0.274241, -0.948498, 0.777465, 0.626833, 0.0512642, 0.0747, 1.72476, 0.10917) bones/96/enabled = true -bones/96/position = Vector3(0.0747, 1.72476, 0.10917) -bones/96/rotation = Quaternion(0.566371, -0.391908, 0.205192, 0.695362) +bones/96/position = Vector3(0.0414099, 1.59979, 0.255679) +bones/96/rotation = Quaternion(0.663014, -0.400858, 0.183228, 0.605106) bones/96/scale = Vector3(1, 1, 1) bones/97/name = "DEF-brow.T.L.002" bones/97/parent = 96 bones/97/rest = Transform3D(0.957714, -0.274563, 0.0860193, 0.274563, 0.782732, -0.558521, 0.0860192, 0.558521, 0.825018, 3.72529e-09, 0.0298644, -5.3551e-08) bones/97/enabled = true bones/97/position = Vector3(3.72529e-09, 0.0298644, -5.3551e-08) -bones/97/rotation = Quaternion(0.295789, 5.91866e-09, 0.145407, 0.944122) +bones/97/rotation = Quaternion(0.295791, 1.85949e-07, 0.145407, 0.944121) bones/97/scale = Vector3(1, 1, 1) bones/98/name = "DEF-brow.T.L.003" bones/98/parent = 2 bones/98/rest = Transform3D(0.157201, -0.790994, 0.591284, -0.260981, -0.610717, -0.747605, 0.952458, -0.0367898, -0.30244, 0.01935, 1.72296, 0.13914) bones/98/enabled = true -bones/98/position = Vector3(0.01935, 1.72296, 0.13914) -bones/98/rotation = Quaternion(0.719437, -0.365555, 0.536441, 0.247004) +bones/98/position = Vector3(-0.0139291, 1.58656, 0.282653) +bones/98/rotation = Quaternion(0.752926, -0.407696, 0.500144, 0.129389) bones/98/scale = Vector3(1, 1, 1) bones/99/name = "DEF-brow.T.R" bones/99/parent = 2 bones/99/rest = Transform3D(0.788261, 0.0448198, 0.613706, 0.392101, 0.732058, -0.557089, -0.474237, 0.679767, 0.559479, -0.07632, 1.6983, 0.0846) bones/99/enabled = true -bones/99/position = Vector3(-0.07632, 1.6983, 0.0846) -bones/99/rotation = Quaternion(0.352393, 0.309967, 0.0989441, 0.877468) +bones/99/position = Vector3(-0.10701, 1.57014, 0.220996) +bones/99/rotation = Quaternion(0.450103, 0.29895, 0.172884, 0.823497) bones/99/scale = Vector3(1, 1, 1) bones/100/name = "DEF-brow.T.R.001" bones/100/parent = 2 bones/100/rest = Transform3D(0.608609, 0.729296, 0.312606, 0.158565, 0.274241, -0.948498, -0.777465, 0.626833, 0.0512642, -0.0747, 1.72476, 0.10917) bones/100/enabled = true -bones/100/position = Vector3(-0.0747, 1.72476, 0.10917) -bones/100/rotation = Quaternion(0.566371, 0.391908, -0.205192, 0.695362) +bones/100/position = Vector3(-0.107575, 1.58947, 0.251528) +bones/100/rotation = Quaternion(0.638585, 0.428725, -0.122527, 0.627209) bones/100/scale = Vector3(1, 1, 1) bones/101/name = "DEF-brow.T.R.002" bones/101/parent = 100 bones/101/rest = Transform3D(0.957714, 0.274563, -0.0860193, -0.274563, 0.782732, -0.558521, -0.0860192, 0.558521, 0.825018, -3.72529e-09, 0.0298644, -5.3551e-08) bones/101/enabled = true bones/101/position = Vector3(-3.72529e-09, 0.0298644, -5.3551e-08) -bones/101/rotation = Quaternion(0.295789, -5.91866e-09, -0.145407, 0.944122) +bones/101/rotation = Quaternion(0.29579, -1.72382e-07, -0.145407, 0.944121) bones/101/scale = Vector3(1, 1, 1) bones/102/name = "DEF-brow.T.R.003" bones/102/parent = 2 bones/102/rest = Transform3D(0.157201, 0.790994, -0.591284, 0.260981, -0.610717, -0.747605, -0.952458, -0.0367898, -0.30244, -0.01935, 1.72296, 0.13914) bones/102/enabled = true -bones/102/position = Vector3(-0.01935, 1.72296, 0.13914) -bones/102/rotation = Quaternion(0.719437, 0.365555, -0.536441, 0.247004) +bones/102/position = Vector3(-0.0525217, 1.58389, 0.281578) +bones/102/rotation = Quaternion(0.736574, 0.454963, -0.468916, 0.174886) bones/102/scale = Vector3(1, 1, 1) bones/103/name = "DEF-cheek.B.L" bones/103/parent = 2 bones/103/rest = Transform3D(0.625247, 0.762979, -0.164102, -0.166431, 0.335791, 0.927116, 0.762474, -0.552365, 0.336935, 0.03168, 1.62666, 0.13446) bones/103/enabled = true -bones/103/position = Vector3(0.03168, 1.62666, 0.13446) -bones/103/rotation = Quaternion(-0.487986, -0.305618, -0.306552, 0.757954) +bones/103/position = Vector3(0.00550656, 1.49575, 0.253954) +bones/103/rotation = Quaternion(-0.372109, -0.288048, -0.320363, 0.82215) bones/103/scale = Vector3(1, 1, 0.999999) bones/104/name = "DEF-cheek.B.L.001" bones/104/parent = 103 @@ -822,8 +822,8 @@ bones/105/name = "DEF-cheek.B.R" bones/105/parent = 2 bones/105/rest = Transform3D(0.625247, -0.762979, 0.164102, 0.166431, 0.335791, 0.927116, -0.762474, -0.552365, 0.336935, -0.03168, 1.62666, 0.13446) bones/105/enabled = true -bones/105/position = Vector3(-0.03168, 1.62666, 0.13446) -bones/105/rotation = Quaternion(-0.487986, 0.305618, 0.306552, 0.757954) +bones/105/position = Vector3(-0.0576767, 1.49137, 0.252191) +bones/105/rotation = Quaternion(-0.39986, 0.238726, 0.365912, 0.805748) bones/105/scale = Vector3(1, 1, 0.999999) bones/106/name = "DEF-cheek.B.R.001" bones/106/parent = 105 @@ -836,8 +836,8 @@ bones/107/name = "DEF-cheek.T.L" bones/107/parent = 2 bones/107/rest = Transform3D(0.313146, -0.424331, -0.849637, -0.84709, -0.529289, -0.0478666, -0.429392, 0.734708, -0.525192, 0.07632, 1.6983, 0.0846) bones/107/enabled = true -bones/107/position = Vector3(0.07632, 1.6983, 0.0846) -bones/107/rotation = Quaternion(0.769355, -0.413145, -0.415617, 0.254296) +bones/107/position = Vector3(0.0452064, 1.58068, 0.225236) +bones/107/rotation = Quaternion(0.813926, -0.330536, -0.448723, 0.164067) bones/107/scale = Vector3(1, 1, 1) bones/108/name = "DEF-cheek.T.L.001" bones/108/parent = 107 @@ -850,8 +850,8 @@ bones/109/name = "DEF-cheek.T.R" bones/109/parent = 2 bones/109/rest = Transform3D(0.313146, 0.424331, 0.849637, 0.84709, -0.529289, -0.0478666, 0.429392, 0.734708, -0.525192, -0.07632, 1.6983, 0.0846) bones/109/enabled = true -bones/109/position = Vector3(-0.07632, 1.6983, 0.0846) -bones/109/rotation = Quaternion(0.769355, 0.413145, 0.415617, 0.254296) +bones/109/position = Vector3(-0.10701, 1.57014, 0.220996) +bones/109/rotation = Quaternion(0.776386, 0.381265, 0.481408, 0.141805) bones/109/scale = Vector3(1, 1, 1) bones/110/name = "DEF-cheek.T.R.001" bones/110/parent = 109 @@ -864,162 +864,162 @@ bones/111/name = "DEF-forehead.L" bones/111/parent = 2 bones/111/rest = Transform3D(0.0249791, 0.0778326, 0.996654, 0.368789, -0.927363, 0.0631786, 0.929177, 0.365977, -0.0518685, 0.01512, 1.77336, 0.11925) bones/111/enabled = true -bones/111/position = Vector3(0.01512, 1.77336, 0.11925) -bones/111/rotation = Quaternion(0.707851, 0.157739, 0.680168, 0.106943) +bones/111/position = Vector3(-0.0216774, 1.63996, 0.276128) +bones/111/rotation = Quaternion(0.703204, 0.0932566, 0.704798, -0.00821782) bones/111/scale = Vector3(1, 1, 1) bones/112/name = "DEF-forehead.L.001" bones/112/parent = 2 bones/112/rest = Transform3D(0.261438, 0.191526, 0.946028, 0.471976, -0.880315, 0.0477902, 0.841955, 0.434008, -0.320543, 0.04311, 1.77804, 0.10566) bones/112/enabled = true -bones/112/position = Vector3(0.04311, 1.77804, 0.10566) -bones/112/rotation = Quaternion(0.784585, 0.211418, 0.569722, 0.123064) +bones/112/position = Vector3(0.00601422, 1.64989, 0.264959) +bones/112/rotation = Quaternion(0.780416, 0.163288, 0.603558, 0.00235952) bones/112/scale = Vector3(1, 1, 1) bones/113/name = "DEF-forehead.L.002" bones/113/parent = 2 bones/113/rest = Transform3D(0.729295, 0.177139, 0.660871, 0.414948, -0.882506, -0.221365, 0.544009, 0.435667, -0.717111, 0.06471, 1.77453, 0.0846) bones/113/enabled = true -bones/113/position = Vector3(0.06471, 1.77453, 0.0846) -bones/113/rotation = Quaternion(0.912265, 0.162258, 0.330189, 0.180055) +bones/113/position = Vector3(0.0280072, 1.65338, 0.244308) +bones/113/rotation = Quaternion(0.918289, 0.149486, 0.363101, 0.0505728) bones/113/scale = Vector3(0.999999, 1, 1) bones/114/name = "DEF-forehead.R" bones/114/parent = 2 bones/114/rest = Transform3D(0.0249791, -0.0778326, -0.996654, -0.368789, -0.927363, 0.0631786, -0.929177, 0.365977, -0.0518685, -0.01512, 1.77336, 0.11925) bones/114/enabled = true -bones/114/position = Vector3(-0.01512, 1.77336, 0.11925) -bones/114/rotation = Quaternion(0.707851, -0.157739, -0.680168, 0.106943) +bones/114/position = Vector3(-0.0518334, 1.63788, 0.275288) +bones/114/rotation = Quaternion(0.727263, -0.0442122, -0.683885, 0.0378823) bones/114/scale = Vector3(1, 1, 1) bones/115/name = "DEF-forehead.R.001" bones/115/parent = 2 bones/115/rest = Transform3D(0.261438, -0.191526, -0.946028, -0.471976, -0.880315, 0.0477902, -0.841955, 0.434008, -0.320543, -0.04311, 1.77804, 0.10566) bones/115/enabled = true -bones/115/position = Vector3(-0.04311, 1.77804, 0.10566) -bones/115/rotation = Quaternion(0.784585, -0.211418, -0.569722, 0.123064) +bones/115/position = Vector3(-0.0799664, 1.64393, 0.262565) +bones/115/rotation = Quaternion(0.806286, -0.109012, -0.580051, 0.039495) bones/115/scale = Vector3(1, 1, 1) bones/116/name = "DEF-forehead.R.002" bones/116/parent = 2 bones/116/rest = Transform3D(0.729295, -0.177139, -0.660871, -0.414948, -0.882506, -0.221365, -0.544009, 0.435667, -0.717111, -0.06471, 1.77453, 0.0846) bones/116/enabled = true -bones/116/position = Vector3(-0.06471, 1.77453, 0.0846) -bones/116/rotation = Quaternion(0.912265, -0.162258, -0.330189, 0.180055) +bones/116/position = Vector3(-0.101064, 1.64444, 0.240727) +bones/116/rotation = Quaternion(0.936146, -0.0870676, -0.333104, 0.0713541) bones/116/scale = Vector3(0.999999, 1, 1) bones/117/name = "DEF-nose" bones/117/parent = 2 bones/117/rest = Transform3D(1, -3.6823e-13, 3.36067e-14, -2.71878e-13, -0.793837, -0.60813, 2.5061e-13, 0.608131, -0.793837, -3.77531e-14, 1.70802, 0.13824) bones/117/enabled = true -bones/117/position = Vector3(-3.77531e-14, 1.70802, 0.13824) -bones/117/rotation = Quaternion(0.947058, -1.68973e-13, 7.50261e-14, 0.321063) +bones/117/position = Vector3(-0.0321133, 1.57105, 0.277441) +bones/117/rotation = Quaternion(0.979852, 0.0311496, 0.0204068, 0.19622) bones/117/scale = Vector3(1, 1, 1) bones/118/name = "DEF-nose.001" bones/118/parent = 117 bones/118/rest = Transform3D(1, -5.32907e-15, 2.38419e-07, -2.42945e-08, 0.994795, 0.101899, -2.37178e-07, -0.101899, 0.994795, 5.30081e-21, 0.0441024, -1.49012e-08) bones/118/enabled = true bones/118/position = Vector3(5.30081e-21, 0.0441024, -1.49012e-08) -bones/118/rotation = Quaternion(-0.0510159, 1.19054e-07, -6.08151e-09, 0.998698) -bones/118/scale = Vector3(1, 1, 1) +bones/118/rotation = Quaternion(-0.0510138, 1.13334e-07, -1.45437e-07, 0.998698) +bones/118/scale = Vector3(0.999997, 1.00001, 0.999997) bones/119/name = "DEF-nose.004" bones/119/parent = 2 bones/119/rest = Transform3D(1, -3.20188e-13, 2.38419e-07, -1.27827e-08, -0.998562, 0.0536133, 2.38076e-07, -0.0536132, -0.998564, -3.77531e-14, 1.65537, 0.15354) bones/119/enabled = true -bones/119/position = Vector3(-3.77531e-14, 1.65537, 0.15354) -bones/119/rotation = Quaternion(0.99964, -3.1969e-09, 1.19167e-07, -0.0268162) -bones/119/scale = Vector3(1, 1, 1) +bones/119/position = Vector3(-0.0283639, 1.51637, 0.278826) +bones/119/rotation = Quaternion(0.987166, 0.0362894, 0.00835545, -0.155293) +bones/119/scale = Vector3(1, 0.999997, 1) bones/120/name = "DEF-temple.L" bones/120/parent = 2 bones/120/rest = Transform3D(0.997508, 0.0673201, -0.0214382, 0.0664963, -0.997097, -0.0370832, -0.0238725, 0.0355649, -0.999084, 0.07857, 1.75707, 0.05373) bones/120/enabled = true -bones/120/position = Vector3(0.07857, 1.75707, 0.05373) -bones/120/rotation = Quaternion(0.99921, 0.0334804, -0.0113366, 0.0181764) +bones/120/position = Vector3(0.0434021, 1.6454, 0.210407) +bones/120/rotation = Quaternion(0.991432, 0.07049, 0.00305028, -0.109929) bones/120/scale = Vector3(1.00001, 1, 1) bones/121/name = "DEF-temple.R" bones/121/parent = 2 bones/121/rest = Transform3D(0.997508, -0.0673201, 0.0214382, -0.0664963, -0.997097, -0.0370832, 0.0238725, 0.0355649, -0.999084, -0.07857, 1.75707, 0.05373) bones/121/enabled = true -bones/121/position = Vector3(-0.07857, 1.75707, 0.05373) -bones/121/rotation = Quaternion(0.99921, -0.0334804, 0.0113366, 0.0181764) +bones/121/position = Vector3(-0.113312, 1.63455, 0.206056) +bones/121/rotation = Quaternion(0.993635, 0.00121686, 0.016897, -0.111371) bones/121/scale = Vector3(1.00001, 1, 1) bones/122/name = "DEF-shoulder.L" bones/122/parent = 2 bones/122/rest = Transform3D(0.206201, 0.977363, 0.0473654, 0, -0.0484056, 0.998828, 0.97851, -0.205959, -0.00998127, 0.0457043, 1.44586, -0.0331638) bones/122/enabled = true -bones/122/position = Vector3(0.0457043, 1.44586, -0.0331638) -bones/122/rotation = Quaternion(-0.56227, -0.434562, -0.456131, 0.53568) +bones/122/position = Vector3(0.0447752, 1.36983, 0.0456129) +bones/122/rotation = Quaternion(-0.350645, -0.375406, -0.650507, 0.559428) bones/122/scale = Vector3(1, 1, 1) bones/123/name = "DEF-upper_arm.L" bones/123/parent = 2 bones/123/rest = Transform3D(0, 1, 7.75341e-07, 1, -3.12203e-13, 4.02666e-07, 4.02666e-07, 7.75341e-07, -1, 0.151628, 1.44061, -0.055485) bones/123/enabled = true -bones/123/position = Vector3(0.151628, 1.44061, -0.055485) -bones/123/rotation = Quaternion(0.707107, 0.707107, 4.16488e-07, 1.31761e-07) -bones/123/scale = Vector3(1, 1, 1) +bones/123/position = Vector3(0.152193, 1.35981, 0.056019) +bones/123/rotation = Quaternion(0.911317, 0.152655, 0.382356, 0.00145842) +bones/123/scale = Vector3(1.03719, 0.929578, 1.03719) bones/124/name = "DEF-upper_arm.L.001" bones/124/parent = 123 bones/124/rest = Transform3D(1, -1.49012e-08, 6.89785e-08, 1.49012e-08, 1, 1.57216e-08, -6.89785e-08, -1.57216e-08, 1, -1.43748e-07, 0.139208, 6.27402e-09) bones/124/enabled = true bones/124/position = Vector3(-1.43748e-07, 0.139208, 6.27402e-09) -bones/124/rotation = Quaternion(-7.8608e-09, 3.44893e-08, 7.4506e-09, 1) +bones/124/rotation = Quaternion(-2.63125e-08, -0.102763, 2.59179e-08, 0.994706) bones/124/scale = Vector3(1, 1, 1) bones/125/name = "DEF-forearm.L" bones/125/parent = 124 bones/125/rest = Transform3D(1, -2.52483e-06, -1.21353e-06, 2.52483e-06, 1, -9.31733e-08, 1.21353e-06, 9.31703e-08, 1, -1.43241e-07, 0.139208, 2.18441e-09) bones/125/enabled = true bones/125/position = Vector3(-1.43241e-07, 0.139208, 2.18441e-09) -bones/125/rotation = Quaternion(4.65859e-08, -6.06765e-07, 1.26242e-06, 1) -bones/125/scale = Vector3(1, 1, 1) +bones/125/rotation = Quaternion(-0.191703, -0.102913, -0.0184482, 0.975868) +bones/125/scale = Vector3(0.999859, 0.986185, 1.01712) bones/126/name = "DEF-forearm.L.001" bones/126/parent = 125 bones/126/rest = Transform3D(1, 8.41612e-07, 8.41612e-07, -8.41612e-07, 1, -2.63006e-08, -8.41612e-07, 2.62998e-08, 1, -6.30042e-08, 0.141644, 2.02402e-09) bones/126/enabled = true bones/126/position = Vector3(-6.30042e-08, 0.141644, 2.02402e-09) -bones/126/rotation = Quaternion(1.31501e-08, 4.20806e-07, -4.20806e-07, 1) +bones/126/rotation = Quaternion(-2.1879e-08, 0.0940886, 7.19054e-09, 0.995564) bones/126/scale = Vector3(1, 1, 1) bones/127/name = "DEF-hand.L" bones/127/parent = 126 bones/127/rest = Transform3D(1, 2.34375e-07, -4.04381e-09, -2.34375e-07, 1, -3.47898e-07, 4.04373e-09, 3.47898e-07, 1, 5.20645e-09, 0.141644, 3.60875e-09) bones/127/enabled = true bones/127/position = Vector3(5.20645e-09, 0.141644, 3.60875e-09) -bones/127/rotation = Quaternion(1.73949e-07, -2.02189e-09, -1.17187e-07, 1) -bones/127/scale = Vector3(1, 1, 1) +bones/127/rotation = Quaternion(-0.105879, 0.0927016, -0.190508, 0.971547) +bones/127/scale = Vector3(0.981568, 1.05649, 0.967777) bones/128/name = "DEF-f_index.01.L" bones/128/parent = 127 bones/128/rest = Transform3D(1.78814e-07, -1.77945e-06, 1, 8.76509e-05, 1, 1.77944e-06, -1, 8.76509e-05, 1.7897e-07, -0.00518027, 0.0910931, -0.0225986) bones/128/enabled = true bones/128/position = Vector3(-0.00518027, 0.0910931, -0.0225986) -bones/128/rotation = Quaternion(3.03601e-05, 0.707107, 3.16184e-05, 0.707107) +bones/128/rotation = Quaternion(-0.0693049, 0.705316, -0.0158822, 0.705318) bones/128/scale = Vector3(1, 1, 1) bones/129/name = "DEF-f_index.02.L" bones/129/parent = 128 bones/129/rest = Transform3D(1, 0.000210294, 6.01693e-10, -0.000210294, 1, 9.64135e-07, -3.98941e-10, -9.64135e-07, 1, -6.25325e-10, 0.0370001, -1.51607e-07) bones/129/enabled = true bones/129/position = Vector3(-6.25325e-10, 0.0370001, -1.51607e-07) -bones/129/rotation = Quaternion(-4.82067e-07, 2.50158e-10, -0.000105147, 1) +bones/129/rotation = Quaternion(-0.145085, -0.00725691, 0.00566012, 0.989377) bones/129/scale = Vector3(1, 1, 1) bones/130/name = "DEF-f_index.03.L" bones/130/parent = 129 bones/130/rest = Transform3D(1, -0.000132666, -1.14384e-09, 0.000132666, 1, 4.40931e-06, 5.58872e-10, -4.40931e-06, 1, 8.66724e-10, 0.0285001, -1.74842e-07) bones/130/enabled = true bones/130/position = Vector3(8.66724e-10, 0.0285001, -1.74842e-07) -bones/130/rotation = Quaternion(-2.20465e-06, -4.25677e-10, 6.6333e-05, 1) +bones/130/rotation = Quaternion(-4.31224e-06, 8.13943e-08, 6.78632e-05, 1) bones/130/scale = Vector3(1, 1, 1) bones/131/name = "DEF-thumb.01.L" bones/131/parent = 127 bones/131/rest = Transform3D(0.894418, -0.447099, -0.0109382, 0.390359, 0.768506, 0.506971, -0.21826, -0.457713, 0.861894, -0.0157619, 0.0246615, -0.0268173) bones/131/enabled = true bones/131/position = Vector3(-0.0157619, 0.0246615, -0.0268173) -bones/131/rotation = Quaternion(-0.256913, 0.0552136, 0.223031, 0.938725) +bones/131/rotation = Quaternion(-0.180985, 0.0926649, 0.29506, 0.933594) bones/131/scale = Vector3(1, 1, 1) bones/132/name = "DEF-thumb.02.L" bones/132/parent = 131 bones/132/rest = Transform3D(1, -1.05805e-05, 9.16747e-09, 1.05791e-05, 0.999857, -0.0169387, 1.70053e-07, 0.0169387, 0.999857, 5.82077e-09, 0.041871, 2.23517e-08) bones/132/enabled = true bones/132/position = Vector3(5.82077e-09, 0.041871, 2.23517e-08) -bones/132/rotation = Quaternion(0.00846965, -4.02228e-08, 5.29008e-06, 0.999964) +bones/132/rotation = Quaternion(0.0105866, 0.0213376, -0.00435369, 0.999707) bones/132/scale = Vector3(1, 1, 1) bones/133/name = "DEF-thumb.03.L" bones/133/parent = 132 bones/133/rest = Transform3D(1, 2.47695e-05, -1.53401e-07, -2.47694e-05, 0.999921, -0.0125268, -1.56894e-07, 0.0125268, 0.999922, -1.96509e-07, 0.0341839, -4.65661e-08) bones/133/enabled = true bones/133/position = Vector3(-1.96509e-07, 0.0341839, -4.65661e-08) -bones/133/rotation = Quaternion(0.00626353, 8.73566e-10, -1.23849e-05, 0.99998) +bones/133/rotation = Quaternion(0.00626499, 6.74476e-08, -1.43925e-05, 0.99998) bones/133/scale = Vector3(1, 0.999999, 1) bones/134/name = "DEF-palm.01.L" bones/134/parent = 127 @@ -1033,21 +1033,21 @@ bones/135/parent = 127 bones/135/rest = Transform3D(1.78814e-07, 1.46025e-06, 1, 6.28772e-05, 1, -1.46026e-06, -1, 6.28772e-05, 1.78722e-07, 4.53205e-07, 0.095334, -3.61138e-07) bones/135/enabled = true bones/135/position = Vector3(4.53205e-07, 0.095334, -3.61138e-07) -bones/135/rotation = Quaternion(2.27467e-05, 0.707107, 2.17142e-05, 0.707107) +bones/135/rotation = Quaternion(-0.0314758, 0.69854, 0.151936, 0.698546) bones/135/scale = Vector3(1, 1, 1) bones/136/name = "DEF-f_middle.02.L" bones/136/parent = 135 bones/136/rest = Transform3D(1, 4.26928e-05, 3.4506e-10, -4.26928e-05, 1, 8.082e-06, -1.69725e-14, -8.082e-06, 1, -2.89286e-09, 0.0370001, 1.96181e-09) bones/136/enabled = true bones/136/position = Vector3(-2.89286e-09, 0.0370001, 1.96181e-09) -bones/136/rotation = Quaternion(-4.041e-06, 8.62693e-11, -2.13464e-05, 1) +bones/136/rotation = Quaternion(-0.19045, 0.00460039, -0.0131103, 0.981599) bones/136/scale = Vector3(1, 1, 1) bones/137/name = "DEF-f_middle.03.L" bones/137/parent = 136 bones/137/rest = Transform3D(1, 4.10208e-05, 1.42053e-13, -4.10208e-05, 1, -8.082e-06, -3.31672e-10, 8.082e-06, 1, -4.9588e-09, 0.0295001, 4.17121e-08) bones/137/enabled = true bones/137/position = Vector3(-4.9588e-09, 0.0295001, 4.17121e-08) -bones/137/rotation = Quaternion(4.041e-06, 8.29535e-11, -2.05104e-05, 1) +bones/137/rotation = Quaternion(4.65474e-06, -7.81623e-08, -2.01332e-05, 1) bones/137/scale = Vector3(1, 1, 1) bones/138/name = "DEF-palm.02.L" bones/138/parent = 127 @@ -1061,21 +1061,21 @@ bones/139/parent = 127 bones/139/rest = Transform3D(1.78814e-07, 1.43436e-06, 1, -1.29236e-05, 1, -1.43435e-06, -1, -1.29236e-05, 1.78832e-07, -0.000430138, 0.0910453, 0.0186508) bones/139/enabled = true bones/139/position = Vector3(-0.000430138, 0.0910453, 0.0186508) -bones/139/rotation = Quaternion(-4.06206e-06, 0.707107, -5.0763e-06, 0.707107) +bones/139/rotation = Quaternion(-0.103513, 0.674759, 0.280514, 0.674757) bones/139/scale = Vector3(1, 1, 1) bones/140/name = "DEF-f_ring.02.L" bones/140/parent = 139 bones/140/rest = Transform3D(1, 3.71589e-07, 3.48393e-12, -3.71589e-07, 1, 8.08574e-06, -4.79365e-13, -8.08574e-06, 1, -1.04128e-08, 0.0315001, -4.89833e-10) bones/140/enabled = true bones/140/position = Vector3(-1.04128e-08, 0.0315001, -4.89833e-10) -bones/140/rotation = Quaternion(-4.04287e-06, 9.90825e-13, -1.85795e-07, 1) -bones/140/scale = Vector3(1, 1, 1) +bones/140/rotation = Quaternion(-0.275586, -0.0118266, -0.0280378, 0.960795) +bones/140/scale = Vector3(1, 0.999993, 1) bones/141/name = "DEF-f_ring.03.L" bones/141/parent = 140 bones/141/rest = Transform3D(1, 2.98532e-06, 3.29371e-13, -2.98532e-06, 1, -8.08202e-06, -2.44568e-11, 8.08202e-06, 1, -8.09243e-09, 0.0294999, -3.67384e-08) bones/141/enabled = true bones/141/position = Vector3(-8.09243e-09, 0.0294999, -3.67384e-08) -bones/141/rotation = Quaternion(4.04101e-06, 6.19655e-12, -1.49266e-06, 1) +bones/141/rotation = Quaternion(4.3083e-06, -3.352e-08, -1.93224e-06, 1) bones/141/scale = Vector3(1, 1, 1) bones/142/name = "DEF-palm.03.L" bones/142/parent = 127 @@ -1089,22 +1089,22 @@ bones/143/parent = 127 bones/143/rest = Transform3D(5.96046e-08, 8.12788e-06, 1, -0.00409006, 0.999992, -8.12757e-06, -0.999992, -0.00409007, 9.28477e-08, -0.00486867, 0.0807778, 0.0380627) bones/143/enabled = true bones/143/position = Vector3(-0.00486867, 0.0807778, 0.0380627) -bones/143/rotation = Quaternion(-0.00144318, 0.707105, -0.00144893, 0.707105) +bones/143/rotation = Quaternion(-0.0986601, 0.666724, 0.319945, 0.665869) bones/143/scale = Vector3(1, 1, 1) bones/144/name = "DEF-f_pinky.02.L" bones/144/parent = 143 bones/144/rest = Transform3D(1, -0.000421546, 6.10301e-09, 0.000421546, 1, -1.03914e-05, -1.72257e-09, 1.03914e-05, 1, 7.81739e-10, 0.0359999, -1.39326e-07) bones/144/enabled = true bones/144/position = Vector3(7.81739e-10, 0.0359999, -1.39326e-07) -bones/144/rotation = Quaternion(5.1957e-06, 1.9564e-09, 0.000210773, 1) +bones/144/rotation = Quaternion(-0.336419, -0.00302139, -0.0545233, 0.940128) bones/144/scale = Vector3(1, 1, 1) bones/145/name = "DEF-f_pinky.03.L" bones/145/parent = 144 bones/145/rest = Transform3D(1, -0.000133068, -1.31972e-12, 0.000133068, 1, 1.70298e-05, -2.2648e-09, -1.70298e-05, 1, -2.09737e-09, 0.0210001, 5.96496e-08) bones/145/enabled = true bones/145/position = Vector3(-2.09737e-09, 0.0210001, 5.96496e-08) -bones/145/rotation = Quaternion(-8.5149e-06, 5.6587e-10, 6.6534e-05, 1) -bones/145/scale = Vector3(1, 1, 1) +bones/145/rotation = Quaternion(-7.65809e-06, 2.29663e-08, 6.55561e-05, 1) +bones/145/scale = Vector3(1, 0.999999, 1) bones/146/name = "DEF-palm.04.L" bones/146/parent = 127 bones/146/rest = Transform3D(7.7486e-07, -0.101916, 0.994793, 0.342174, 0.934744, 0.0957637, -0.939636, 0.340393, 0.0348737, 0.000182873, 0.0344465, 0.0211908) @@ -1116,85 +1116,85 @@ bones/147/name = "DEF-shoulder.R" bones/147/parent = 2 bones/147/rest = Transform3D(0.2062, -0.977363, -0.0473652, 0, -0.0484054, 0.998828, -0.97851, -0.205959, -0.00998122, -0.0457043, 1.44586, -0.0331638) bones/147/enabled = true -bones/147/position = Vector3(-0.0457043, 1.44586, -0.0331638) -bones/147/rotation = Quaternion(-0.562269, 0.434562, 0.456132, 0.53568) +bones/147/position = Vector3(-0.0410376, 1.37119, 0.0141508) +bones/147/rotation = Quaternion(-0.532479, 0.186956, 0.538651, 0.625595) bones/147/scale = Vector3(1, 1, 1) bones/148/name = "DEF-upper_arm.R" bones/148/parent = 2 bones/148/rest = Transform3D(0, -1, -7.21862e-07, -1, -2.88096e-13, 3.99101e-07, -3.99101e-07, 7.21862e-07, -1, -0.151628, 1.44061, -0.0554851) bones/148/enabled = true -bones/148/position = Vector3(-0.151628, 1.44061, -0.0554851) -bones/148/rotation = Quaternion(0.707107, -0.707107, -3.9632e-07, 1.14113e-07) -bones/148/scale = Vector3(1, 1, 1) +bones/148/position = Vector3(-0.135646, 1.35527, -0.0362822) +bones/148/rotation = Quaternion(0.957624, -0.12318, 0.0645051, -0.252234) +bones/148/scale = Vector3(1.02786, 0.946531, 1.02786) bones/149/name = "DEF-upper_arm.R.001" bones/149/parent = 148 bones/149/rest = Transform3D(1, 1.11759e-08, -1.11819e-07, -1.11759e-08, 1, 2.99238e-08, 1.11819e-07, -2.99238e-08, 1, 2.10781e-08, 0.139208, 1.40111e-09) bones/149/enabled = true bones/149/position = Vector3(2.10781e-08, 0.139208, 1.40111e-09) -bones/149/rotation = Quaternion(-1.49619e-08, -5.59095e-08, -5.58795e-09, 1) +bones/149/rotation = Quaternion(-1.8751e-08, 0.0809655, -2.00357e-08, 0.996717) bones/149/scale = Vector3(1, 1, 1) bones/150/name = "DEF-forearm.R" bones/150/parent = 149 bones/150/rest = Transform3D(1, 2.52483e-06, 1.21353e-06, -2.52483e-06, 1, -9.3173e-08, -1.21353e-06, 9.31699e-08, 1, 2.40321e-08, 0.139208, 3.55439e-09) bones/150/enabled = true bones/150/position = Vector3(2.40321e-08, 0.139208, 3.55439e-09) -bones/150/rotation = Quaternion(4.65857e-08, 6.06765e-07, -1.26242e-06, 1) -bones/150/scale = Vector3(1, 1, 1) +bones/150/rotation = Quaternion(-0.201689, 0.0818829, 0.0158416, 0.975892) +bones/150/scale = Vector3(0.999856, 0.988082, 1.01406) bones/151/name = "DEF-forearm.R.001" bones/151/parent = 150 bones/151/rest = Transform3D(1, -8.4161e-07, -8.41611e-07, 8.4161e-07, 1, 2.31198e-13, 8.41611e-07, -9.39507e-13, 1, -5.62047e-08, 0.141644, 3.39512e-09) bones/151/enabled = true bones/151/position = Vector3(-5.62047e-08, 0.141644, 3.39512e-09) -bones/151/rotation = Quaternion(-2.92676e-13, -4.20805e-07, 4.20805e-07, 1) +bones/151/rotation = Quaternion(-5.30251e-09, -0.00865028, 1.67535e-08, 0.999963) bones/151/scale = Vector3(1, 1, 1) bones/152/name = "DEF-hand.R" bones/152/parent = 151 bones/152/rest = Transform3D(1, -2.34376e-07, 4.04324e-09, 2.34376e-07, 1, -3.74198e-07, -4.04315e-09, 3.74198e-07, 1, -5.20694e-09, 0.141644, 5.11267e-09) bones/152/enabled = true bones/152/position = Vector3(-5.20694e-09, 0.141644, 5.11267e-09) -bones/152/rotation = Quaternion(1.87099e-07, 2.0216e-09, 1.17188e-07, 1) -bones/152/scale = Vector3(1, 1, 1) +bones/152/rotation = Quaternion(-0.142177, -0.0083609, -0.103375, 0.984393) +bones/152/scale = Vector3(0.97718, 1.04632, 0.979585) bones/153/name = "DEF-f_index.01.R" bones/153/parent = 152 bones/153/rest = Transform3D(1.78814e-07, 1.76032e-06, -1, -8.7666e-05, 1, 1.7603e-06, 1, 8.76661e-05, 1.78968e-07, 0.00518027, 0.0910931, -0.0225986) bones/153/enabled = true bones/153/position = Vector3(0.00518027, 0.0910931, -0.0225986) -bones/153/rotation = Quaternion(3.03722e-05, -0.707107, -3.1617e-05, 0.707107) +bones/153/rotation = Quaternion(-0.0224918, -0.706487, -0.0352529, 0.70649) bones/153/scale = Vector3(1, 1, 1) bones/154/name = "DEF-f_index.02.R" bones/154/parent = 153 bones/154/rest = Transform3D(1, -0.000210295, -3.66501e-10, 0.000210295, 1, 9.79046e-07, 1.60613e-10, -9.79046e-07, 1, 3.42759e-10, 0.037, 7.57774e-08) bones/154/enabled = true bones/154/position = Vector3(3.42759e-10, 0.037, 7.57774e-08) -bones/154/rotation = Quaternion(-4.89523e-07, -1.31779e-10, 0.000105147, 1) +bones/154/rotation = Quaternion(-0.147111, 0.0101904, -0.00825044, 0.989033) bones/154/scale = Vector3(1, 1, 1) bones/155/name = "DEF-f_index.03.R" bones/155/parent = 154 bones/155/rest = Transform3D(1, 0.000132666, 1.13988e-09, -0.000132666, 1, 4.40931e-06, -5.5492e-10, -4.40931e-06, 1, -8.52173e-10, 0.0285, -5.41123e-08) bones/155/enabled = true bones/155/position = Vector3(-8.52173e-10, 0.0285, -5.41123e-08) -bones/155/rotation = Quaternion(-2.20465e-06, 4.23701e-10, -6.6333e-05, 1) +bones/155/rotation = Quaternion(8.39836e-07, -2.08393e-07, -6.54599e-05, 1) bones/155/scale = Vector3(1, 1, 1) bones/156/name = "DEF-thumb.01.R" bones/156/parent = 152 bones/156/rest = Transform3D(0.894418, 0.447099, 0.0109382, -0.390358, 0.768506, 0.506971, 0.21826, -0.457713, 0.861894, 0.0157619, 0.0246615, -0.0268173) bones/156/enabled = true bones/156/position = Vector3(0.0157619, 0.0246615, -0.0268173) -bones/156/rotation = Quaternion(-0.256913, -0.0552138, -0.22303, 0.938725) +bones/156/rotation = Quaternion(-0.246803, -0.0477934, -0.184696, 0.950101) bones/156/scale = Vector3(1, 1, 1) bones/157/name = "DEF-thumb.02.R" bones/157/parent = 156 bones/157/rest = Transform3D(1, 1.06068e-05, 1.90166e-08, -1.0605e-05, 0.999856, -0.0169387, -1.9868e-07, 0.0169387, 0.999857, 5.3551e-08, 0.041871, 4.37722e-08) bones/157/enabled = true bones/157/position = Vector3(5.3551e-08, 0.041871, 4.37722e-08) -bones/157/rotation = Quaternion(0.00846966, 5.44261e-08, -5.30315e-06, 0.999964) +bones/157/rotation = Quaternion(0.19111, 0.0813779, -0.0206516, 0.977971) bones/157/scale = Vector3(1, 0.999999, 1) bones/158/name = "DEF-thumb.03.R" bones/158/parent = 157 bones/158/rest = Transform3D(1, -2.46799e-05, 1.74261e-07, 2.46802e-05, 0.999921, -0.0125268, 1.34913e-07, 0.0125268, 0.999922, -1.00699e-07, 0.0341839, -4.65661e-10) bones/158/enabled = true bones/158/position = Vector3(-1.00699e-07, 0.0341839, -4.65661e-10) -bones/158/rotation = Quaternion(0.00626353, 9.83737e-09, 1.23403e-05, 0.99998) +bones/158/rotation = Quaternion(0.00626376, -7.70711e-08, 1.34285e-05, 0.99998) bones/158/scale = Vector3(1, 0.999999, 1) bones/159/name = "DEF-palm.01.R" bones/159/parent = 152 @@ -1208,21 +1208,21 @@ bones/160/parent = 152 bones/160/rest = Transform3D(1.78814e-07, -1.42897e-06, -1, -6.28654e-05, 1, -1.42898e-06, 1, 6.28654e-05, 1.78724e-07, -4.53205e-07, 0.095334, -3.63493e-07) bones/160/enabled = true bones/160/position = Vector3(-4.53205e-07, 0.095334, -3.63493e-07) -bones/160/rotation = Quaternion(2.27315e-05, -0.707107, -2.17211e-05, 0.707107) +bones/160/rotation = Quaternion(-0.0620709, -0.702498, -0.0955729, 0.702503) bones/160/scale = Vector3(1, 1, 1) bones/161/name = "DEF-f_middle.02.R" bones/161/parent = 160 bones/161/rest = Transform3D(1, -4.26758e-05, -8.10446e-10, 4.26758e-05, 1, 8.08573e-06, 4.65381e-10, -8.08573e-06, 1, -1.98941e-09, 0.0370001, 1.26371e-09) bones/161/enabled = true bones/161/position = Vector3(-1.98941e-09, 0.0370001, 1.26371e-09) -bones/161/rotation = Quaternion(-4.04286e-06, -3.18957e-10, 2.13379e-05, 1) +bones/161/rotation = Quaternion(-0.262948, 0.00972539, 0.0189828, 0.964574) bones/161/scale = Vector3(1, 1, 1) bones/162/name = "DEF-f_middle.03.R" bones/162/parent = 161 bones/162/rest = Transform3D(1, -4.10208e-05, -9.04082e-13, 4.10208e-05, 1, -8.08199e-06, 3.32434e-10, 8.08199e-06, 1, -2.49724e-09, 0.0295, 4.41395e-08) bones/162/enabled = true bones/162/position = Vector3(-2.49724e-09, 0.0295, 4.41395e-08) -bones/162/rotation = Quaternion(4.041e-06, -8.33346e-11, 2.05104e-05, 1) +bones/162/rotation = Quaternion(6.46779e-06, 1.28029e-07, 1.90929e-05, 1) bones/162/scale = Vector3(1, 1, 1) bones/163/name = "DEF-palm.02.R" bones/163/parent = 152 @@ -1236,21 +1236,21 @@ bones/164/parent = 152 bones/164/rest = Transform3D(1.78814e-07, -1.44773e-06, -1, 1.29242e-05, 1, -1.44773e-06, 1, -1.29242e-05, 1.78833e-07, 0.000430138, 0.0910453, 0.0186508) bones/164/enabled = true bones/164/position = Vector3(0.000430138, 0.0910453, 0.0186508) -bones/164/rotation = Quaternion(-4.05754e-06, -0.707107, 5.08124e-06, 0.707107) +bones/164/rotation = Quaternion(-0.0825797, -0.693053, -0.180383, 0.693051) bones/164/scale = Vector3(1, 1, 1) bones/165/name = "DEF-f_ring.02.R" bones/165/parent = 164 bones/165/rest = Transform3D(1, -3.84425e-07, -3.44047e-12, 3.84425e-07, 1, 8.08574e-06, 3.32112e-13, -8.08574e-06, 1, -3.16306e-10, 0.0315001, 3.10097e-09) bones/165/enabled = true bones/165/position = Vector3(-3.16306e-10, 0.0315001, 3.10097e-09) -bones/165/rotation = Quaternion(-4.04287e-06, -9.43146e-13, 1.92212e-07, 1) +bones/165/rotation = Quaternion(-0.320011, -0.0106108, 0.0310388, 0.946846) bones/165/scale = Vector3(1, 1, 1) bones/166/name = "DEF-f_ring.03.R" bones/166/parent = 165 bones/166/rest = Transform3D(1, -2.98533e-06, -3.00618e-13, 2.98533e-06, 1, -8.08202e-06, 2.44281e-11, 8.08202e-06, 1, 6.40939e-10, 0.0294999, -3.3149e-08) bones/166/enabled = true bones/166/position = Vector3(6.40939e-10, 0.0294999, -3.3149e-08) -bones/166/rotation = Quaternion(4.04101e-06, -6.18218e-12, 1.49266e-06, 1) +bones/166/rotation = Quaternion(4.68059e-06, -2.29112e-07, 1.73853e-06, 1) bones/166/scale = Vector3(1, 1, 1) bones/167/name = "DEF-palm.03.R" bones/167/parent = 152 @@ -1264,21 +1264,21 @@ bones/168/parent = 152 bones/168/rest = Transform3D(5.96046e-08, -8.16863e-06, -1, 0.00409005, 0.999992, -8.16832e-06, 0.999992, -0.00409005, 9.30142e-08, 0.00486867, 0.0807779, 0.0380627) bones/168/enabled = true bones/168/position = Vector3(0.00486867, 0.0807779, 0.0380627) -bones/168/rotation = Quaternion(-0.00144317, -0.707105, 0.00144894, 0.707105) +bones/168/rotation = Quaternion(-0.0801862, -0.689149, -0.211035, 0.688555) bones/168/scale = Vector3(1, 1, 1) bones/169/name = "DEF-f_pinky.02.R" bones/169/parent = 168 bones/169/rest = Transform3D(1, 0.000421521, -9.66401e-09, -0.000421521, 1, -1.03914e-05, 5.28382e-09, 1.03914e-05, 1, -4.00532e-09, 0.0359999, -1.47067e-08) bones/169/enabled = true bones/169/position = Vector3(-4.00532e-09, 0.0359999, -1.47067e-08) -bones/169/rotation = Quaternion(5.1957e-06, -3.73696e-09, -0.00021076, 1) +bones/169/rotation = Quaternion(-0.349754, -0.0195519, 0.0648944, 0.934387) bones/169/scale = Vector3(1, 1, 1) bones/170/name = "DEF-f_pinky.03.R" bones/170/parent = 169 bones/170/rest = Transform3D(1, 0.000133068, -4.6495e-12, -0.000133068, 1, 1.70298e-05, 2.27078e-09, -1.70298e-05, 1, 9.78077e-09, 0.0210001, 6.46994e-08) bones/170/enabled = true bones/170/position = Vector3(9.78077e-09, 0.0210001, 6.46994e-08) -bones/170/rotation = Quaternion(-8.5149e-06, -5.6886e-10, -6.6534e-05, 1) +bones/170/rotation = Quaternion(-9.53796e-06, -2.47026e-08, -6.50589e-05, 1) bones/170/scale = Vector3(1, 1, 1) bones/171/name = "DEF-palm.04.R" bones/171/parent = 152 @@ -1291,21 +1291,22 @@ bones/172/name = "DEF-breast.L" bones/172/parent = 2 bones/172/rest = Transform3D(-1, -4.74001e-15, -9.3222e-15, -9.3222e-15, 0, 1, -4.74001e-15, 1, -4.41873e-29, 0.0868744, 1.35063, 0.0380751) bones/172/enabled = true -bones/172/position = Vector3(0.0868744, 1.35063, 0.0380751) -bones/172/rotation = Quaternion(-4.97174e-15, 0.707107, 0.707107, -1.62005e-15) +bones/172/position = Vector3(0.0734546, 1.2528, 0.0819791) +bones/172/rotation = Quaternion(-0.143579, 0.527646, 0.831248, 0.100008) bones/172/scale = Vector3(1, 1, 1) bones/173/name = "DEF-breast.R" bones/173/parent = 2 bones/173/rest = Transform3D(-1, 1.32465e-14, 1.16188e-14, 1.16188e-14, 0, 1, 1.32465e-14, 1, -1.53909e-28, -0.0868744, 1.35063, 0.0380751) bones/173/enabled = true -bones/173/position = Vector3(-0.0868744, 1.35063, 0.0380751) -bones/173/rotation = Quaternion(8.79121e-15, 0.707107, 0.707107, -5.75479e-16) +bones/173/position = Vector3(-0.0897715, 1.25563, 0.0224273) +bones/173/rotation = Quaternion(-0.143579, 0.527646, 0.831248, 0.100008) bones/173/scale = Vector3(1, 1, 1) script = ExtResource("2_2jlbv") +queue_next_state = true transition_to_queued_state = true [node name="RightHand" type="BoneAttachment3D" parent="."] -transform = Transform3D(1, 5.72969e-08, -6.49499e-07, -6.49499e-07, 0, -1, -5.72969e-08, 1, 0, -0.778152, 1.42065, -0.0554846) +transform = Transform3D(0.280912, -0.245265, 0.927865, 0.940445, 0.2632, -0.215148, -0.191445, 0.933044, 0.304594, -0.291032, 0.823065, -0.187203) bone_name = "weapon.R" bone_idx = 1 use_external_skeleton = true @@ -1317,7 +1318,7 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, [node name="Sword" parent="RightHand/hand_socket_R" instance=ExtResource("4_qvp1s")] [node name="LeftHand" type="BoneAttachment3D" parent="."] -transform = Transform3D(1, -2.81782e-08, -3.38389e-07, -3.38389e-07, 0, -1, 2.81782e-08, 1, 0, 0.778152, 1.42065, -0.0554846) +transform = Transform3D(0.235421, -0.773411, -0.588568, -0.596633, 0.363041, -0.715703, 0.767207, 0.519651, -0.375975, 0.258624, 0.8283, 0.25055) bone_name = "weapon.L" bone_idx = 0 use_external_skeleton = true @@ -1329,7 +1330,7 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, [node name="Gun" parent="LeftHand/hand_socket_L" instance=ExtResource("3_qq571")] [node name="Root" type="BoneAttachment3D" parent="."] -transform = Transform3D(1, -5.01023e-07, 7.45956e-07, 5.10616e-07, 0.999917, -0.0129167, -7.39422e-07, 0.0129167, 0.999917, -7.72729e-08, 1.04275, 0.0155431) +transform = Transform3D(0.779329, -0.0104156, -0.626528, -0.0171014, 0.999136, -0.0378821, 0.626381, 0.0402371, 0.778477, 0.00289882, 0.96773, 0.000111626) bone_name = "DEF-spine" bone_idx = 3 use_external_skeleton = true @@ -1338,7 +1339,7 @@ external_skeleton = NodePath("../Skeleton3D") [node name="Hitbox" type="Area3D" parent="Root"] collision_layer = 2 collision_mask = 5 -script = ExtResource("5_2jlbv") +script = ExtResource("5_ykn0j") [node name="CollisionShape3D" type="CollisionShape3D" parent="Root/Hitbox"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.14, 0) @@ -1369,8 +1370,7 @@ script = ExtResource("9_f7muk") animation_name = "idle/default" [node name="Walk" type="Node" parent="States"] -script = ExtResource("10_slqck") -movement_speed = 5.0 +script = ExtResource("16_ykn0j") state_priority = 1 animation_name = "move/walk" animation_speed_scale = 0.8 @@ -1469,6 +1469,7 @@ dash_length = 6.0 dash_time = 0.2 state_priority = 50 animation_name = "move/dash" +stamina_toll = 10.0 [node name="Fall" type="Node" parent="States"] script = ExtResource("15_wgnsq") @@ -1506,9 +1507,18 @@ animation_name = "hit/3" animation_speed_scale = 0.5 metadata/_custom_type_script = "uid://c886t1c86q0m6" +[node name="HitEscapeTimer" type="Timer" parent="States/Hit"] +one_shot = true + [node name="Hit2" type="Node" parent="States"] script = ExtResource("22_l1ukb") state_priority = 200 animation_name = "hit/2" animation_speed_scale = 0.5 metadata/_custom_type_script = "uid://c886t1c86q0m6" + +[node name="HitEscapeTimer" type="Timer" parent="States/Hit2"] +one_shot = true + +[connection signal="timeout" from="States/Hit/HitEscapeTimer" to="States/Hit" method="_on_hit_escape_timer_timeout"] +[connection signal="timeout" from="States/Hit2/HitEscapeTimer" to="States/Hit" method="_on_hit_escape_timer_timeout"] diff --git a/asset/character/robot/robot.tscn b/asset/character/robot/robot.tscn index 9ce0a0b..e0860b3 100644 --- a/asset/character/robot/robot.tscn +++ b/asset/character/robot/robot.tscn @@ -11,6 +11,9 @@ collision_layer = 4 collision_mask = 3 script = ExtResource("1_r8y1s") +max_hit_points = 40.0 +hit_escape_window = 0.0 +hit_points = 40.0 [node name="Collision" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) diff --git a/asset/map/test.tscn b/asset/map/test.tscn index 8c45a22..798f231 100644 --- a/asset/map/test.tscn +++ b/asset/map/test.tscn @@ -64,39 +64,41 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.92252, 0.5, 9.21799) [node name="Player" parent="." instance=ExtResource("1_37kl0")] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) -input_is_relative_to_camera = true energy_points = 10.0 [node name="Robot" parent="." instance=ExtResource("8_415ew")] transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, -4.55426, 9.53674e-07, 3.62123) +walk_speed = 4.0 [node name="Input" type="Node" parent="Robot" node_paths=PackedStringArray("target")] script = ExtResource("7_y18ei") target = NodePath("../../Player") +time_walking = 2.0 +time_walking_paused = 0.5 metadata/_custom_type_script = "uid://b6bncm81voh5s" [node name="Robot2" parent="." instance=ExtResource("8_415ew")] -transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, 12.3299, 9.53674e-07, -3.35943) +transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, -4.55426, 9.53674e-07, -6.22435) +walk_speed = 4.0 [node name="Input" type="Node" parent="Robot2" node_paths=PackedStringArray("target")] script = ExtResource("7_y18ei") target = NodePath("../../Player") +time_walking = 1.0 +time_walking_paused = 0.5 metadata/_custom_type_script = "uid://b6bncm81voh5s" -[node name="Robot3" parent="." instance=ExtResource("8_415ew")] -transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, 12.3299, 9.53674e-07, 10.0307) - -[node name="Input" type="Node" parent="Robot3" node_paths=PackedStringArray("target")] -script = ExtResource("7_y18ei") -target = NodePath("../../Player") -metadata/_custom_type_script = "uid://b6bncm81voh5s" - -[node name="Robot4" parent="." instance=ExtResource("8_415ew")] -transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, 12.3299, 9.53674e-07, 18.3525) +[node name="RobotShooter" parent="." instance=ExtResource("8_415ew")] +transform = Transform3D(-0.709448, 0, 0.704758, 0, 1, 0, -0.704758, 0, -0.709448, 12.3299, 9.53674e-07, -3.35943) +walk_speed = 2.0 +energy_points = 333.0 -[node name="Input" type="Node" parent="Robot4" node_paths=PackedStringArray("target")] +[node name="Input" type="Node" parent="RobotShooter" node_paths=PackedStringArray("target")] script = ExtResource("7_y18ei") target = NodePath("../../Player") +time_walking = 0.2 +time_walking_paused = 10.0 +time_between_shots = 2.0 metadata/_custom_type_script = "uid://b6bncm81voh5s" [node name="CameraHandler" parent="." node_paths=PackedStringArray("tracking_node") instance=ExtResource("4_f4bcd")] diff --git a/asset/projectile/projectile.gd b/asset/projectile/projectile.gd index 7727320..b1c4874 100644 --- a/asset/projectile/projectile.gd +++ b/asset/projectile/projectile.gd @@ -2,42 +2,40 @@ extends Node3D class_name Projectile -@export var speed := 20.0 +## Linear speed of the projectile +@export var speed := 10.0 + +## Direction the projectile will travel in +@export var direction: Vector3: + set(v): + model.last_movement_vector = v + get: + return model.last_movement_vector + +## Maximum distance from the origin point that the projectile will travel @export var max_range := 30.0 -var last_movement_direction: Vector3 +## Weapon which emitted the projectile var weapon: Weapon -var collision_layer: int = 1 -var collision_mask: int = 1 -var _origin: Vector3 +## Collision layer for projectile +var collision_layer: int: + set(c): + model.collision_layer = c + get: + return model.collision_layer + -@onready var hurtbox: Hurtbox = $Model/Hurtbox +## Collision mask for projectile +var collision_mask: int: + set(c): + model.collision_mask = c + get: + return model.collision_mask -func _ready() -> void: - if last_movement_direction: - last_movement_direction = last_movement_direction.normalized() - else: - last_movement_direction = Vector3.BACK.rotated(Vector3.UP, global_rotation.y) - - hurtbox.weapon = weapon - hurtbox.is_attacking = true - hurtbox.set_collision_layer(collision_layer) - hurtbox.set_collision_mask(collision_mask) - _origin = global_position - - # TODO: if projectile gets reflected, this must be recalculated! - var target_angle := Vector3.BACK.signed_angle_to(last_movement_direction, Vector3.UP) - global_rotate(Vector3.UP, target_angle) +@onready var model: ProjectileModel = $Model func _process(delta: float) -> void: - if (global_position - _origin).length() > max_range: - queue_free() - else: - global_position = lerp( - global_position, - global_position + speed * last_movement_direction, - delta - ) + model.update(delta) diff --git a/asset/projectile/projectile.tscn b/asset/projectile/projectile.tscn index 94df554..878952c 100644 --- a/asset/projectile/projectile.tscn +++ b/asset/projectile/projectile.tscn @@ -1,101 +1,22 @@ -[gd_scene load_steps=22 format=3 uid="uid://dxmuwbdsw1cux"] +[gd_scene load_steps=9 format=3 uid="uid://dxmuwbdsw1cux"] [ext_resource type="Script" uid="uid://dhljelflbvhq0" path="res://asset/projectile/projectile.gd" id="1_a85iw"] +[ext_resource type="Script" uid="uid://cgj2olkiyt66o" path="res://asset/projectile/projectile_model.gd" id="2_ia5gd"] [ext_resource type="Script" uid="uid://bfwn8qkon3k0y" path="res://asset/character/model/hurtbox.gd" id="2_qxf0c"] -[ext_resource type="Shader" uid="uid://cb1uqpepu0fu8" path="res://asset/projectile/projectile_outer_shader.tres" id="3_eos0u"] -[ext_resource type="Shader" uid="uid://bl8vglcme53cn" path="res://asset/projectile/projectile_inner_shader.tres" id="4_k4v71"] -[ext_resource type="Shader" uid="uid://w1pxn1nolx5n" path="res://asset/projectile/projectile_trail_shader.tres" id="5_4ycb3"] +[ext_resource type="Script" uid="uid://cy7gp78g4xag4" path="res://asset/projectile/projectile_hitbox.gd" id="3_e5gjc"] +[ext_resource type="PackedScene" uid="uid://c7wv7pk6df1wi" path="res://asset/effect/hit_effect.tscn" id="4_ia5gd"] +[ext_resource type="PackedScene" uid="uid://eoglfqffybu2" path="res://asset/projectile/projectile_visual.tscn" id="6_xofgy"] [sub_resource type="SphereShape3D" id="SphereShape3D_a85iw"] radius = 0.3 -[sub_resource type="ShaderMaterial" id="ShaderMaterial_eos0u"] -render_priority = 0 -shader = ExtResource("3_eos0u") -shader_parameter/base_color = Color(2, 0.134, 0.709, 1) -shader_parameter/rotation_speed = 0.83 -shader_parameter/speed = 1.4 - -[sub_resource type="CylinderMesh" id="CylinderMesh_eos0u"] -top_radius = 0.0 -height = 1.0 -cap_top = false -cap_bottom = false - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_4ycb3"] -render_priority = 1 -shader = ExtResource("4_k4v71") -shader_parameter/base_color = Color(4, 0.397, 2, 1) -shader_parameter/fresnel_power = 4.0 - -[sub_resource type="SphereMesh" id="SphereMesh_eos0u"] - -[sub_resource type="Gradient" id="Gradient_4ycb3"] -offsets = PackedFloat32Array(0.4, 0.5, 0.6) -colors = PackedColorArray(0.416952, 0.00912567, 0.0775737, 1, 3, 0, 2, 1, 0.416952, 0.00912567, 0.0775737, 1) -metadata/_snap_enabled = true - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_xofgy"] -gradient = SubResource("Gradient_4ycb3") - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_xofgy"] -render_priority = 0 -shader = ExtResource("5_4ycb3") -shader_parameter/colors = SubResource("GradientTexture1D_xofgy") -shader_parameter/speed = 1.0 - -[sub_resource type="PlaneMesh" id="PlaneMesh_k4v71"] -size = Vector2(0.77, 3) -center_offset = Vector3(0, 0, -1.5) - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4ycb3"] -blend_mode = 1 -cull_mode = 2 -shading_mode = 0 -disable_ambient_light = true -disable_fog = true -vertex_color_use_as_albedo = true -vertex_color_is_srgb = true - -[sub_resource type="Gradient" id="Gradient_xofgy"] -colors = PackedColorArray(4, 1, 2, 1, 0.646777, 0, 0.300858, 1) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_e5gjc"] -gradient = SubResource("Gradient_xofgy") -use_hdr = true - -[sub_resource type="Curve" id="Curve_4ycb3"] -_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] -point_count = 2 - -[sub_resource type="CurveTexture" id="CurveTexture_xofgy"] -curve = SubResource("Curve_4ycb3") - -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_4ycb3"] -lifetime_randomness = 0.46 -particle_flag_align_y = true -emission_shape = 1 -emission_sphere_radius = 0.2 -direction = Vector3(0, 0, -2) -spread = 34.315 -initial_velocity_min = 2.0 -initial_velocity_max = 10.0 -angular_velocity_min = -4.18002 -angular_velocity_max = 79.79 -gravity = Vector3(0, 0, 0) -scale_curve = SubResource("CurveTexture_xofgy") -color_ramp = SubResource("GradientTexture1D_e5gjc") -hue_variation_min = -0.1 -hue_variation_max = 0.07 - -[sub_resource type="QuadMesh" id="QuadMesh_xofgy"] -size = Vector2(0.02, 0.06) -orientation = 0 +[sub_resource type="SphereShape3D" id="SphereShape3D_e5gjc"] [node name="Projectile" type="Node3D"] script = ExtResource("1_a85iw") [node name="Model" type="Node3D" parent="."] +script = ExtResource("2_ia5gd") [node name="Hurtbox" type="Area3D" parent="Model"] script = ExtResource("2_qxf0c") @@ -105,30 +26,13 @@ metadata/_custom_type_script = "uid://bfwn8qkon3k0y" shape = SubResource("SphereShape3D_a85iw") debug_color = Color(1, 0.6, 0.701961, 0.419608) -[node name="Visual" type="Node3D" parent="."] -transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0, 0, 0) - -[node name="OuterFlame" type="MeshInstance3D" parent="Visual"] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, -0.0675984) -material_override = SubResource("ShaderMaterial_eos0u") -cast_shadow = 0 -mesh = SubResource("CylinderMesh_eos0u") +[node name="Hitbox" type="Area3D" parent="Model"] +script = ExtResource("3_e5gjc") -[node name="InnerBall" type="MeshInstance3D" parent="Visual"] -transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 0.00562227, -0.000371352, 0.000506699) -material_override = SubResource("ShaderMaterial_4ycb3") -cast_shadow = 0 -mesh = SubResource("SphereMesh_eos0u") +[node name="CollisionShape3D" type="CollisionShape3D" parent="Model/Hitbox"] +shape = SubResource("SphereShape3D_e5gjc") +debug_color = Color(1.03962e-05, 0.819041, 0.983756, 0.419608) -[node name="Trail" type="MeshInstance3D" parent="Visual"] -material_override = SubResource("ShaderMaterial_xofgy") -cast_shadow = 0 -mesh = SubResource("PlaneMesh_k4v71") +[node name="HitEffect" parent="Model/Hitbox" instance=ExtResource("4_ia5gd")] -[node name="Sparks" type="GPUParticles3D" parent="Visual"] -material_override = SubResource("StandardMaterial3D_4ycb3") -cast_shadow = 0 -lifetime = 0.28 -explosiveness = 0.15 -process_material = SubResource("ParticleProcessMaterial_4ycb3") -draw_pass_1 = SubResource("QuadMesh_xofgy") +[node name="Visual" parent="Model" instance=ExtResource("6_xofgy")] diff --git a/asset/projectile/projectile_hitbox.gd b/asset/projectile/projectile_hitbox.gd new file mode 100644 index 0000000..6113c6d --- /dev/null +++ b/asset/projectile/projectile_hitbox.gd @@ -0,0 +1,12 @@ +extends Hitbox + + +@onready var projectile: Projectile = $"../.." + + +## On a successful hit, reflect the projectile backward! +func on_successful_hit(area: Hurtbox): + projectile.direction = projectile.direction.bounce(projectile.direction) + projectile.speed *= 1.5 + projectile.collision_layer = area.collision_layer + projectile.collision_mask = area.collision_mask diff --git a/asset/projectile/projectile_hitbox.gd.uid b/asset/projectile/projectile_hitbox.gd.uid new file mode 100644 index 0000000..4e04b96 --- /dev/null +++ b/asset/projectile/projectile_hitbox.gd.uid @@ -0,0 +1 @@ +uid://cy7gp78g4xag4 diff --git a/asset/projectile/projectile_inner_shader.tres b/asset/projectile/projectile_inner_shader.tres index 4c61167..b6d7e16 100644 --- a/asset/projectile/projectile_inner_shader.tres +++ b/asset/projectile/projectile_inner_shader.tres @@ -42,7 +42,6 @@ void fragment() { } " -graph_offset = Vector2(-597.218, -20.1925) flags/unshaded = true flags/shadows_disabled = true flags/ambient_light_disabled = true diff --git a/asset/projectile/projectile_model.gd b/asset/projectile/projectile_model.gd new file mode 100644 index 0000000..e86110b --- /dev/null +++ b/asset/projectile/projectile_model.gd @@ -0,0 +1,59 @@ +extends Node3D +class_name ProjectileModel +## Base class for all projectile models +## +## A projectile moves, can do damage, and can be hit. This model handles the movement, +## collision layering and masking, hitboxes and hurtboxes + +@onready var projectile: Projectile = $".." +@onready var hurtbox: Hurtbox = $Hurtbox +@onready var hitbox: Hitbox = $Hitbox + + +var last_movement_vector: Vector3: + set(v): + last_movement_vector = v.normalized() + rotate_toward_last_movement_vector() + get: + return last_movement_vector + +var collision_layer: int = 1: + set(c): + collision_layer = c + hitbox.set_collision_layer(collision_layer) + hurtbox.set_collision_layer(collision_layer) + get: + return collision_layer + +var collision_mask: int = 1: + set(c): + collision_mask = c + hitbox.set_collision_mask(collision_mask) + hurtbox.set_collision_mask(collision_mask) + get: + return collision_mask + + +func _ready() -> void: + hurtbox.weapon = projectile.weapon + hurtbox.is_attacking = true + + # manually set this to be the direction projectile is facing + if not last_movement_vector: + last_movement_vector = Vector3.BACK.rotated(Vector3.UP, projectile.global_rotation.y) + + +func rotate_toward_last_movement_vector(): + var target_angle := Vector3.BACK.signed_angle_to(last_movement_vector, Vector3.UP) + global_rotation.y = target_angle + + +func update(delta: float) -> void: + if (global_position - projectile.global_position).length() > projectile.max_range: + projectile.queue_free() + else: + global_position = lerp( + global_position, + global_position + projectile.speed * last_movement_vector, + delta + ) diff --git a/asset/projectile/projectile_model.gd.uid b/asset/projectile/projectile_model.gd.uid new file mode 100644 index 0000000..28e14c5 --- /dev/null +++ b/asset/projectile/projectile_model.gd.uid @@ -0,0 +1 @@ +uid://cgj2olkiyt66o diff --git a/asset/projectile/projectile_outer_shader.tres b/asset/projectile/projectile_outer_shader.tres index b297036..9503981 100644 --- a/asset/projectile/projectile_outer_shader.tres +++ b/asset/projectile/projectile_outer_shader.tres @@ -138,7 +138,6 @@ void fragment() { } " -graph_offset = Vector2(-646.088, -139.978) modes/cull = 2 flags/unshaded = true flags/shadows_disabled = true diff --git a/asset/projectile/projectile_trail_shader.tres b/asset/projectile/projectile_trail_shader.tres index 27b93cc..6dc1297 100644 --- a/asset/projectile/projectile_trail_shader.tres +++ b/asset/projectile/projectile_trail_shader.tres @@ -164,7 +164,6 @@ void fragment() { } " -graph_offset = Vector2(-285.482, -150.426) modes/cull = 2 nodes/fragment/0/position = Vector2(2860, 360) nodes/fragment/3/node = SubResource("VisualShaderNodeTexture_luuak") diff --git a/asset/projectile/projectile_visual.tscn b/asset/projectile/projectile_visual.tscn new file mode 100644 index 0000000..7b664d9 --- /dev/null +++ b/asset/projectile/projectile_visual.tscn @@ -0,0 +1,116 @@ +[gd_scene load_steps=19 format=3 uid="uid://eoglfqffybu2"] + +[ext_resource type="Shader" uid="uid://cb1uqpepu0fu8" path="res://asset/projectile/projectile_outer_shader.tres" id="1_xnkfb"] +[ext_resource type="Shader" uid="uid://bl8vglcme53cn" path="res://asset/projectile/projectile_inner_shader.tres" id="2_yml7r"] +[ext_resource type="Shader" uid="uid://w1pxn1nolx5n" path="res://asset/projectile/projectile_trail_shader.tres" id="3_hgxif"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_eos0u"] +render_priority = 0 +shader = ExtResource("1_xnkfb") +shader_parameter/base_color = Color(2, 0.134, 0.709, 1) +shader_parameter/rotation_speed = 0.83 +shader_parameter/speed = 1.4 + +[sub_resource type="CylinderMesh" id="CylinderMesh_eos0u"] +top_radius = 0.0 +height = 1.0 +cap_top = false +cap_bottom = false + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_4ycb3"] +render_priority = 1 +shader = ExtResource("2_yml7r") +shader_parameter/base_color = Color(4, 0.397, 2, 1) +shader_parameter/fresnel_power = 4.0 + +[sub_resource type="SphereMesh" id="SphereMesh_eos0u"] + +[sub_resource type="Gradient" id="Gradient_4ycb3"] +offsets = PackedFloat32Array(0.4, 0.5, 0.6) +colors = PackedColorArray(0.416952, 0.00912567, 0.0775737, 1, 3, 0, 2, 1, 0.416952, 0.00912567, 0.0775737, 1) +metadata/_snap_enabled = true + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_xofgy"] +gradient = SubResource("Gradient_4ycb3") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_xofgy"] +render_priority = 0 +shader = ExtResource("3_hgxif") +shader_parameter/colors = SubResource("GradientTexture1D_xofgy") +shader_parameter/speed = 1.0 + +[sub_resource type="PlaneMesh" id="PlaneMesh_k4v71"] +size = Vector2(0.77, 3) +center_offset = Vector3(0, 0, -1.5) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4ycb3"] +blend_mode = 1 +cull_mode = 2 +shading_mode = 0 +disable_ambient_light = true +disable_fog = true +vertex_color_use_as_albedo = true +vertex_color_is_srgb = true + +[sub_resource type="Gradient" id="Gradient_xofgy"] +colors = PackedColorArray(4, 1, 2, 1, 0.646777, 0, 0.300858, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_e5gjc"] +gradient = SubResource("Gradient_xofgy") +use_hdr = true + +[sub_resource type="Curve" id="Curve_4ycb3"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_xofgy"] +curve = SubResource("Curve_4ycb3") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_4ycb3"] +lifetime_randomness = 0.46 +particle_flag_align_y = true +emission_shape = 1 +emission_sphere_radius = 0.2 +direction = Vector3(0, 0, -2) +spread = 34.315 +initial_velocity_min = 2.0 +initial_velocity_max = 10.0 +angular_velocity_min = -4.18002 +angular_velocity_max = 79.79 +gravity = Vector3(0, 0, 0) +scale_curve = SubResource("CurveTexture_xofgy") +color_ramp = SubResource("GradientTexture1D_e5gjc") +hue_variation_min = -0.1 +hue_variation_max = 0.07 + +[sub_resource type="QuadMesh" id="QuadMesh_xofgy"] +size = Vector2(0.02, 0.06) +orientation = 0 + +[node name="Visual" type="Node3D"] +transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0, 0, 0) + +[node name="OuterFlame" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, -0.0675984) +material_override = SubResource("ShaderMaterial_eos0u") +cast_shadow = 0 +mesh = SubResource("CylinderMesh_eos0u") + +[node name="InnerBall" type="MeshInstance3D" parent="."] +transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 0.00562227, -0.000371352, 0.000506699) +material_override = SubResource("ShaderMaterial_4ycb3") +cast_shadow = 0 +mesh = SubResource("SphereMesh_eos0u") + +[node name="Trail" type="MeshInstance3D" parent="."] +material_override = SubResource("ShaderMaterial_xofgy") +cast_shadow = 0 +mesh = SubResource("PlaneMesh_k4v71") + +[node name="Sparks" type="GPUParticles3D" parent="."] +material_override = SubResource("StandardMaterial3D_4ycb3") +cast_shadow = 0 +lifetime = 0.28 +explosiveness = 0.15 +process_material = SubResource("ParticleProcessMaterial_4ycb3") +draw_pass_1 = SubResource("QuadMesh_xofgy") diff --git a/asset/weapon/gun.tscn b/asset/weapon/gun.tscn index 5e02469..132b972 100644 --- a/asset/weapon/gun.tscn +++ b/asset/weapon/gun.tscn @@ -10,7 +10,7 @@ weapon_name = "pistol" input_to_state = { "shoot": "GunRaise" } -base_damage = 20 +base_damage = 10 is_parryable = true [node name="Visual" parent="." instance=ExtResource("2_7aqci")] diff --git a/global/player_variables.gd b/global/player_variables.gd deleted file mode 100644 index 6fa218b..0000000 --- a/global/player_variables.gd +++ /dev/null @@ -1,13 +0,0 @@ -extends Node - -@export_group("Movement") -@export var walk_speed := 5.0 -@export var dash_length := 6.0 -@export var acceleration := 20.0 -@export var rotation_speed := 10.0 -@export var idle_timeout := 5.0 -@export var fall_landing_limit := 3.0 -@export var fall_roll_limit := 6.0 - -@export_group("Camera") -@export_range(1.0, 10.0) var camera_distance := 4.0 diff --git a/global/player_variables.gd.uid b/global/player_variables.gd.uid deleted file mode 100644 index a2faa30..0000000 --- a/global/player_variables.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://6t24p8piqwlp diff --git a/project.godot b/project.godot index 48d999f..df6bf62 100644 --- a/project.godot +++ b/project.godot @@ -19,7 +19,6 @@ config/icon="res://asset/map/texture/icon.svg" [autoload] CameraInput="*res://global/camera_input.gd" -PlayerVariables="*res://global/player_variables.gd" [display]