Audio system

This commit is contained in:
Rendo 2025-11-30 16:22:11 +05:00
commit de2736c701
38 changed files with 2538 additions and 78 deletions

Binary file not shown.

BIN
audio/bomb_beep.ogg Normal file

Binary file not shown.

View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://blqgr0uweyg38"
path="res://.godot/imported/bomb_beep.ogg-dcfcda570896bd2258dcbcb5d1a3e727.oggvorbisstr"
[deps]
source_file="res://audio/bomb_beep.ogg"
dest_files=["res://.godot/imported/bomb_beep.ogg-dcfcda570896bd2258dcbcb5d1a3e727.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
audio/defuse.ogg Normal file

Binary file not shown.

19
audio/defuse.ogg.import Normal file
View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dlvwyj5erlhss"
path="res://.godot/imported/defuse.ogg-3bd3befd3ea8e0d2da41a2b704b6e6b3.oggvorbisstr"
[deps]
source_file="res://audio/defuse.ogg"
dest_files=["res://.godot/imported/defuse.ogg-3bd3befd3ea8e0d2da41a2b704b6e6b3.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
audio/explosion.ogg Normal file

Binary file not shown.

View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://lmmqcovqat1u"
path="res://.godot/imported/explosion.ogg-ae4c6e66c6129f9c963089c3e18dc2ea.oggvorbisstr"
[deps]
source_file="res://audio/explosion.ogg"
dest_files=["res://.godot/imported/explosion.ogg-ae4c6e66c6129f9c963089c3e18dc2ea.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
audio/land_wood.ogg Normal file

Binary file not shown.

View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://cdf76gyi58rrd"
path="res://.godot/imported/land_wood.ogg-712c3affe2ebc06e843107780d906f1c.oggvorbisstr"
[deps]
source_file="res://audio/land_wood.ogg"
dest_files=["res://.godot/imported/land_wood.ogg-712c3affe2ebc06e843107780d906f1c.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
audio/plant.ogg Normal file

Binary file not shown.

19
audio/plant.ogg.import Normal file
View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://cc2mp4y3bkpgp"
path="res://.godot/imported/plant.ogg-ffcb264f94f1adeb072b8034766956ec.oggvorbisstr"
[deps]
source_file="res://audio/plant.ogg"
dest_files=["res://.godot/imported/plant.ogg-ffcb264f94f1adeb072b8034766956ec.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
audio/shoot.ogg Normal file

Binary file not shown.

19
audio/shoot.ogg.import Normal file
View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://c2y8wd427mmdw"
path="res://.godot/imported/shoot.ogg-7176e90881fc6ab4e6310d3d4c259795.oggvorbisstr"
[deps]
source_file="res://audio/shoot.ogg"
dest_files=["res://.godot/imported/shoot.ogg-7176e90881fc6ab4e6310d3d4c259795.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
audio/step_wood.ogg Normal file

Binary file not shown.

View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bd4iofirvmiu6"
path="res://.godot/imported/step_wood.ogg-fde94da4077aaf4e5d99fac0ab98b2f0.oggvorbisstr"
[deps]
source_file="res://audio/step_wood.ogg"
dest_files=["res://.godot/imported/step_wood.ogg-fde94da4077aaf4e5d99fac0ab98b2f0.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

15
default_bus_layout.tres Normal file
View file

@ -0,0 +1,15 @@
[gd_resource type="AudioBusLayout" format=3 uid="uid://3dy3a5ai2baq"]
[resource]
bus/1/name = &"GameplayMain"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
bus/1/volume_db = 0.0
bus/1/send = &"Master"
bus/2/name = &"GameplayMisc"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
bus/2/volume_db = 0.0
bus/2/send = &"Master"

View file

@ -40,3 +40,71 @@ unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
[preset.1]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="exports/Chelimbalo.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.1.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=true
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
application/export_d3d12=0
application/d3d12_agility_sdk_multiarch=true
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"

Binary file not shown.

BIN
exports/Chelimbalo.exe Normal file

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

View file

@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c81mv6bw6gr6t"
path.s3tc="res://.godot/imported/molikman_hands_tex_Molikman.png-309150e72c75bcb8d14d5eaef94f2a57.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "adf17223cdac27afac207ae40df37427"
}
[deps]
source_file="res://models/characters/viewmodels/molikman_hands_tex_Molikman.png"
dest_files=["res://.godot/imported/molikman_hands_tex_Molikman.png-309150e72c75bcb8d14d5eaef94f2a57.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View file

@ -20,6 +20,7 @@ config/icon="res://icon.svg"
PlayerGlobal="*res://scripts/player/player_global.gd"
Lobby="*res://scripts/multiplayer/lobby.gd"
Session="*res://scripts/multiplayer/session.gd"
ClientSettings="*res://scripts/client_settings.gd"
[display]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=65 format=4 uid="uid://dpsr6ug3pkb40"]
[gd_scene load_steps=71 format=4 uid="uid://dpsr6ug3pkb40"]
[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://scripts/player/player.gd" id="1_g2els"]
[ext_resource type="Script" uid="uid://dalwlndejfdhm" path="res://scripts/player/crosshair.gd" id="3_dqkch"]
@ -21,10 +21,15 @@
[ext_resource type="Script" uid="uid://gan0amqbhi4i" path="res://scripts/gui/hud/player_ammo_display.gd" id="12_iortg"]
[ext_resource type="Script" uid="uid://bala54fa32e35" path="res://scripts/gui/hud/player_round_display.gd" id="13_x73hv"]
[ext_resource type="Script" uid="uid://bos7nftlx8tv3" path="res://scripts/gui/hud/player_round_time.gd" id="13_xar7t"]
[ext_resource type="AudioStream" uid="uid://bd4iofirvmiu6" path="res://audio/step_wood.ogg" id="16_fbysy"]
[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://scripts/audio_system/multiplayer_audio_3d.gd" id="17_0cqlf"]
[ext_resource type="Script" uid="uid://xsgfbuyje35p" path="res://scripts/player/player_pickup.gd" id="17_fjvrb"]
[ext_resource type="Script" uid="uid://doevvmbvhlig8" path="res://scripts/weapon_system/starting_weapon_spawner.gd" id="17_ownlk"]
[ext_resource type="AudioStream" uid="uid://cdf76gyi58rrd" path="res://audio/land_wood.ogg" id="18_0cqlf"]
[ext_resource type="Script" uid="uid://bs4y647h5rdfr" path="res://scripts/player/player_movement.gd" id="19_70eug"]
[ext_resource type="AudioStream" uid="uid://cc2mp4y3bkpgp" path="res://audio/plant.ogg" id="19_nquoi"]
[ext_resource type="Script" uid="uid://tb140f8fweug" path="res://scripts/player/states/death.gd" id="19_rwwcc"]
[ext_resource type="AudioStream" uid="uid://c2y8wd427mmdw" path="res://audio/shoot.ogg" id="20_moxwy"]
[ext_resource type="Script" uid="uid://b2djbdh05pbcn" path="res://scripts/player/team_color_switcher.gd" id="25_1mtds"]
[ext_resource type="Material" uid="uid://cjb0h3of85nc2" path="res://materials/players/molikman/mat_Molikman.tres" id="26_r2jxp"]
[ext_resource type="Texture2D" uid="uid://15mf4452fse0" path="res://textures/players/molikman/molikman_ingame_Molikman_blue.png" id="27_j3w78"]
@ -5622,6 +5627,10 @@ properties/4/path = NodePath(".:team")
properties/4/spawn = true
properties/4/replication_mode = 2
[sub_resource type="Curve" id="Curve_fbysy"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(1, 1), 2.5229826, 0.0, 0, 0]
point_count = 2
[sub_resource type="Animation" id="Animation_a8ls1"]
length = 0.001
tracks/0/type = "value"
@ -6313,350 +6322,350 @@ bones/1/name = "Arm.L"
bones/1/parent = 0
bones/1/rest = Transform3D(-0.967654, 0.25016752, 0.0325744, -0.25158498, -0.96648616, -0.05108291, 0.018703416, -0.057625845, 0.998163, 0.26421797, 0.773799, 4.559311e-08)
bones/1/enabled = true
bones/1/position = Vector3(0.26421797, 0.773799, 4.559311e-08)
bones/1/rotation = Quaternion(0.012929333, -0.027410127, 0.99150187, -0.12651329)
bones/1/position = Vector3(0.264218, 0.773799, 7.5726156e-08)
bones/1/rotation = Quaternion(0.44040322, 0.57250756, 0.25571382, -0.6425656)
bones/1/scale = Vector3(0.9999995, 1, 0.99999994)
bones/2/name = "Forearm.L"
bones/2/parent = 1
bones/2/rest = Transform3D(0.9995757, 0.013401157, 0.025863314, -0.011816048, 0.9980985, -0.060496498, -0.026624857, 0.060165223, 0.9978333, -1.3533281e-08, 0.4103367, 9.313226e-10)
bones/2/enabled = true
bones/2/position = Vector3(-1.3533281e-08, 0.4103367, 9.313226e-10)
bones/2/rotation = Quaternion(0.030182386, 0.013129418, -0.006307845, 0.9994383)
bones/2/rotation = Quaternion(0.8033249, 0.0075056925, -0.16788751, 0.57133764)
bones/2/scale = Vector3(1, 1, 1)
bones/3/name = "Wrist.L"
bones/3/parent = 2
bones/3/rest = Transform3D(-0.9710889, 0.23862918, 0.0065318705, 0.2375265, 0.96860886, -0.07333562, -0.023826849, -0.069663905, -0.9972859, 1.2121745e-08, 0.40612826, -7.421477e-10)
bones/3/enabled = true
bones/3/position = Vector3(1.2121745e-08, 0.40612826, -7.421477e-10)
bones/3/rotation = Quaternion(0.11998783, 0.99209166, -0.036034856, 0.0076501803)
bones/3/rotation = Quaternion(0.3367362, 0.39088947, -0.5898893, 0.6211642)
bones/3/scale = Vector3(1, 1, 1)
bones/4/name = "ThumbU.L"
bones/4/parent = 3
bones/4/rest = Transform3D(0.9771098, -0.21273556, 7.7299774e-08, 0.2122333, 0.97480285, 0.068675034, -0.014609697, -0.06710303, 0.99763906, -0.0045400136, 0.06477452, -0.046769787)
bones/4/enabled = true
bones/4/position = Vector3(-0.0045400136, 0.06477452, -0.046769787)
bones/4/rotation = Quaternion(-0.03416062, 0.0036756964, 0.1069186, 0.9936739)
bones/4/rotation = Quaternion(-0.03416062, 0.0036757078, 0.10691858, 0.993674)
bones/4/scale = Vector3(1, 0.99999994, 1)
bones/5/name = "ThumbM.L"
bones/5/parent = 4
bones/5/rest = Transform3D(0.96273476, -0.2702871, -0.009302501, 0.270358, 0.96273106, 0.0074529527, 0.0069413693, -0.009690224, 0.9999289, -9.109499e-09, 0.050440647, -1.0863523e-09)
bones/5/enabled = true
bones/5/position = Vector3(-9.109499e-09, 0.050440647, -1.0863523e-09)
bones/5/rotation = Quaternion(-0.0043263296, -0.0040993765, 0.13643965, 0.9906305)
bones/5/rotation = Quaternion(-0.0043263296, -0.004099375, 0.13643971, 0.9906305)
bones/5/scale = Vector3(0.9999999, 1, 0.99999994)
bones/6/name = "ThumbD.L"
bones/6/parent = 5
bones/6/rest = Transform3D(0.9935268, -0.11359587, 0.00059893046, 0.11359593, 0.99347246, -0.01041187, 0.0005877246, 0.010412509, 0.9999456, -7.9744495e-09, 0.031673077, -2.8667273e-09)
bones/6/enabled = true
bones/6/position = Vector3(-7.9744495e-09, 0.031673077, -2.8667273e-09)
bones/6/rotation = Quaternion(0.0052146115, 2.8060595e-06, 0.056890868, 0.9983668)
bones/6/rotation = Quaternion(0.0052146176, 2.7984563e-06, 0.05689087, 0.9983668)
bones/6/scale = Vector3(0.99999994, 1, 0.99999994)
bones/7/name = "IndexU.L"
bones/7/parent = 3
bones/7/rest = Transform3D(0.9800801, -0.19626929, -0.030354138, 0.19836761, 0.95998544, 0.19768214, -0.009659407, -0.19976562, 0.97979605, 0.04529645, 0.07181831, -0.03615555)
bones/7/enabled = true
bones/7/position = Vector3(0.04529645, 0.07181831, -0.03615555)
bones/7/rotation = Quaternion(-0.100372486, -0.0052263015, 0.099662624, 0.98993206)
bones/7/rotation = Quaternion(-0.10045515, 0.0032738843, 0.1829555, 0.97797)
bones/7/scale = Vector3(1, 1, 0.99999994)
bones/8/name = "IndexM.L"
bones/8/parent = 7
bones/8/rest = Transform3D(0.9323135, -0.3615566, -0.008257606, 0.36068276, 0.9312451, -0.05187074, 0.026444064, 0.045381427, 0.99861956, 2.4359906e-08, 0.078790486, 4.656613e-10)
bones/8/enabled = true
bones/8/position = Vector3(2.4359906e-08, 0.078790486, 4.656613e-10)
bones/8/rotation = Quaternion(0.024743047, -0.008828853, 0.18375325, 0.98262125)
bones/8/rotation = Quaternion(0.022902953, -0.012869429, 0.34659836, 0.93764573)
bones/8/scale = Vector3(0.9999999, 1, 0.9999999)
bones/9/name = "IndexD.L"
bones/9/parent = 8
bones/9/rest = Transform3D(0.99988145, 0.015218651, -0.0023559656, -0.015326478, 0.99832255, -0.055830937, 0.001502342, 0.055860423, 0.99843746, -1.967419e-08, 0.060257126, -9.313226e-10)
bones/9/enabled = true
bones/9/position = Vector3(-1.967419e-08, 0.060257126, -9.313226e-10)
bones/9/rotation = Quaternion(0.027934572, -0.0009649821, -0.0076394905, 0.9995801)
bones/9/rotation = Quaternion(0.026797349, -0.007948077, 0.24358648, 0.96947634)
bones/9/scale = Vector3(1, 0.99999994, 1)
bones/10/name = "MiddleU.L"
bones/10/parent = 3
bones/10/rest = Transform3D(0.995789, -0.058257025, -0.070783034, 0.065396525, 0.9925152, 0.10313419, 0.064244956, -0.10732886, 0.99214566, 0.0423781, 0.07765784, -0.01126304)
bones/10/enabled = true
bones/10/position = Vector3(0.0423781, 0.07765784, -0.01126304)
bones/10/rotation = Quaternion(-0.05274482, -0.0338398, 0.030989217, 0.9975533)
bones/10/rotation = Quaternion(-0.05274483, -0.03383979, 0.030989202, 0.9975533)
bones/10/scale = Vector3(0.99999994, 0.9999999, 0.99999994)
bones/11/name = "MiddleM.L"
bones/11/parent = 10
bones/11/rest = Transform3D(0.86401427, -0.5034334, 0.005847616, 0.50168175, 0.85991454, -0.09414042, 0.042364985, 0.0842723, 0.99554175, -6.426126e-08, 0.07325909, 8.731149e-10)
bones/11/enabled = true
bones/11/position = Vector3(-6.426126e-08, 0.07325909, 8.731149e-10)
bones/11/rotation = Quaternion(0.04625464, -0.009467362, 0.2605825, 0.96429646)
bones/11/rotation = Quaternion(0.045026194, -0.014204301, 0.35899645, 0.93214405)
bones/11/scale = Vector3(1, 1, 0.99999994)
bones/12/name = "MiddleD.L"
bones/12/parent = 11
bones/12/rest = Transform3D(0.9998987, -0.014212552, -0.00084086665, 0.014225133, 0.99974453, 0.017563164, 0.0005910344, -0.017573344, 0.99984545, -3.655441e-08, 0.064242914, -3.259629e-09)
bones/12/enabled = true
bones/12/position = Vector3(-3.655441e-08, 0.064242914, -3.259629e-09)
bones/12/rotation = Quaternion(-0.008784689, -0.00035799813, 0.007109876, 0.9999361)
bones/12/rotation = Quaternion(-0.008670173, 0.0014585109, 0.21285099, 0.9770451)
bones/12/scale = Vector3(1, 0.99999994, 1)
bones/13/name = "RingU.L"
bones/13/parent = 3
bones/13/rest = Transform3D(0.9704054, 0.03888444, -0.23833017, -0.02366867, 0.9975139, 0.06637663, 0.2403187, -0.05877129, 0.9689131, 0.033461113, 0.07149333, 0.017992377)
bones/13/enabled = true
bones/13/position = Vector3(0.033461113, 0.07149333, 0.017992377)
bones/13/rotation = Quaternion(-0.03153699, -0.12061842, -0.015763238, 0.99207264)
bones/13/rotation = Quaternion(-0.03153699, -0.12061846, -0.015763236, 0.9920727)
bones/13/scale = Vector3(0.99999994, 1, 0.9999998)
bones/14/name = "RingM.L"
bones/14/parent = 13
bones/14/rest = Transform3D(0.8251062, -0.5639382, -0.034260202, 0.5524452, 0.81802005, -0.16014954, 0.11833996, 0.11321349, 0.9864982, 1.6880222e-08, 0.07553467, 6.165976e-09)
bones/14/enabled = true
bones/14/position = Vector3(1.6880222e-08, 0.07553467, 6.165976e-09)
bones/14/rotation = Quaternion(0.0717429, -0.04004923, 0.29298982, 0.9525786)
bones/14/rotation = Quaternion(0.07174289, -0.04004922, 0.29298976, 0.9525786)
bones/14/scale = Vector3(1.0000001, 1.0000001, 1.0000001)
bones/15/name = "RingD.L"
bones/15/parent = 14
bones/15/rest = Transform3D(0.99991727, -0.012864361, 0.00015441107, 0.012864626, 0.999672, -0.022144126, 0.00013050961, 0.022144279, 0.9997547, 1.8626451e-08, 0.064691424, -4.656613e-09)
bones/15/enabled = true
bones/15/position = Vector3(1.8626451e-08, 0.064691424, -4.656613e-09)
bones/15/rotation = Quaternion(0.01107301, 5.9758595e-06, 0.0064327745, 0.999918)
bones/15/rotation = Quaternion(0.010834987, -0.0022837173, 0.21304047, 0.9769806)
bones/15/scale = Vector3(1, 0.99999994, 0.99999994)
bones/16/name = "LittleU.L"
bones/16/parent = 3
bones/16/rest = Transform3D(0.9178412, -0.18039086, -0.35359105, 0.15868124, 0.98324484, -0.089720085, 0.3638513, 0.026240522, 0.93108726, 0.03628368, 0.082845636, 0.04032454)
bones/16/enabled = true
bones/16/position = Vector3(0.03628368, 0.082845636, 0.04032454)
bones/16/rotation = Quaternion(0.029618148, -0.18324597, 0.08660431, 0.9787969)
bones/16/rotation = Quaternion(0.029618163, -0.183246, 0.08660431, 0.9787969)
bones/16/scale = Vector3(0.99999994, 0.9999999, 0.9999999)
bones/17/name = "LittleM.L"
bones/17/parent = 16
bones/17/rest = Transform3D(0.92672586, -0.36745474, -0.07846127, 0.35205162, 0.9221317, -0.16041435, 0.13129665, 0.12103772, 0.9839263, -2.0954758e-09, 0.061574344, -4.1909516e-09)
bones/17/enabled = true
bones/17/position = Vector3(-2.0954758e-09, 0.061574344, -4.1909516e-09)
bones/17/rotation = Quaternion(0.07188153, -0.053571183, 0.18375853, 0.97887486)
bones/17/rotation = Quaternion(0.07188155, -0.053571183, 0.18375851, 0.9788749)
bones/17/scale = Vector3(1, 1, 0.99999994)
bones/18/name = "LittleD.L"
bones/18/parent = 17
bones/18/rest = Transform3D(0.9951905, -0.09795637, -0.0007189751, 0.09795622, 0.99507964, 0.014866696, -0.00074085005, -0.014865619, 0.9998894, 1.4901161e-08, 0.035935525, -1.7695129e-08)
bones/18/enabled = true
bones/18/position = Vector3(1.4901161e-08, 0.035935525, -1.7695129e-08)
bones/18/rotation = Quaternion(-0.0074422387, 5.4755096e-06, 0.04903851, 0.99876916)
bones/18/rotation = Quaternion(-0.007442227, 5.4686184e-06, 0.049038507, 0.9987692)
bones/18/scale = Vector3(1, 0.99999994, 1.0000001)
bones/19/name = "ThumbCtrl.L"
bones/19/parent = 3
bones/19/rest = Transform3D(0.9771098, -0.21273556, 9.247858e-08, 0.2122333, 0.97480285, 0.06867504, -0.014609714, -0.06710303, 0.99763906, -0.0045400136, 0.06477452, -0.046769787)
bones/19/enabled = true
bones/19/position = Vector3(-0.0045400136, 0.06477452, -0.046769787)
bones/19/rotation = Quaternion(-0.03416062, 0.0036757044, 0.1069186, 0.9936739)
bones/19/rotation = Quaternion(-0.034160614, 0.0036757009, 0.10691858, 0.993674)
bones/19/scale = Vector3(1, 0.99999994, 1)
bones/20/name = "IndexCtrl.L"
bones/20/parent = 3
bones/20/rest = Transform3D(0.9800801, -0.19626929, -0.030354116, 0.19836757, 0.9599856, 0.19768208, -0.009659403, -0.19976556, 0.9797962, 0.04529645, 0.07181834, -0.036155563)
bones/20/enabled = true
bones/20/position = Vector3(0.04529645, 0.07181834, -0.036155563)
bones/20/rotation = Quaternion(-0.10037245, -0.0052262964, 0.0996626, 0.98993206)
bones/20/rotation = Quaternion(-0.10045512, 0.003273889, 0.1829555, 0.97797006)
bones/20/scale = Vector3(1, 1.0000001, 1)
bones/21/name = "MiddleCtrl.L"
bones/21/parent = 3
bones/21/rest = Transform3D(0.995789, -0.058257017, -0.07078303, 0.06539652, 0.9925152, 0.1031342, 0.06424495, -0.10732886, 0.99214566, 0.0423781, 0.07765784, -0.011263036)
bones/21/enabled = true
bones/21/position = Vector3(0.0423781, 0.07765784, -0.011263036)
bones/21/rotation = Quaternion(-0.05274482, -0.033839796, 0.030989213, 0.9975533)
bones/21/rotation = Quaternion(-0.05274483, -0.033839792, 0.030989198, 0.9975533)
bones/21/scale = Vector3(0.99999994, 0.9999999, 0.99999994)
bones/22/name = "RingCtrl.L"
bones/22/parent = 3
bones/22/rest = Transform3D(0.9704054, 0.03888438, -0.23833017, -0.023668619, 0.9975138, 0.0663766, 0.2403187, -0.05877127, 0.9689131, 0.033461053, 0.07149334, 0.017992355)
bones/22/enabled = true
bones/22/position = Vector3(0.033461053, 0.07149334, 0.017992355)
bones/22/rotation = Quaternion(-0.031536978, -0.12061842, -0.015763212, 0.99207264)
bones/22/rotation = Quaternion(-0.03153698, -0.12061845, -0.015763216, 0.9920727)
bones/22/scale = Vector3(0.99999994, 0.9999999, 0.9999998)
bones/23/name = "LittleCtrl.L"
bones/23/parent = 3
bones/23/rest = Transform3D(0.91784114, -0.18039091, -0.35359108, 0.15868126, 0.9832449, -0.08972012, 0.3638513, 0.026240537, 0.9310873, 0.03628368, 0.08284565, 0.04032453)
bones/23/enabled = true
bones/23/position = Vector3(0.03628368, 0.08284565, 0.04032453)
bones/23/rotation = Quaternion(0.02961816, -0.18324599, 0.08660432, 0.9787969)
bones/23/rotation = Quaternion(0.02961817, -0.18324602, 0.08660434, 0.9787969)
bones/23/scale = Vector3(0.99999994, 0.99999994, 0.99999994)
bones/24/name = "ArmPole.L"
bones/24/parent = 0
bones/24/rest = Transform3D(-1, 0, 1.509958e-07, 0, 1, 0, -1.509958e-07, 0, -1, 0.35926056, 0.3746208, -0.29998538)
bones/24/enabled = true
bones/24/position = Vector3(0.35926056, 0.3746208, -0.29998538)
bones/24/position = Vector3(0.5762918, -0.047787875, -0.025643528)
bones/24/rotation = Quaternion(0, 1, 0, 7.54979e-08)
bones/24/scale = Vector3(1, 1, 1)
bones/25/name = "ArmCtrl.L"
bones/25/parent = 0
bones/25/rest = Transform3D(0.94635725, 0.23162141, 0.22532214, 0.22532395, -0.97280645, 0.0536483, 0.23162217, 1.747915e-08, -0.9728062, 0.26421803, 0.77379894, 5.6864977e-08)
bones/25/enabled = true
bones/25/position = Vector3(0.26421803, 0.77379894, 5.6864977e-08)
bones/25/rotation = Quaternion(0.98640305, 0.115810655, 0.11581042, -0.013596951)
bones/25/position = Vector3(0.26421806, 0.773799, 8.248862e-08)
bones/25/rotation = Quaternion(0.98640305, 0.115810655, 0.1158104, -0.013596949)
bones/25/scale = Vector3(1.0000058, 1.0000005, 1)
bones/26/name = "WristCtrl.L"
bones/26/parent = 0
bones/26/rest = Transform3D(0.99986863, 1.6880067e-09, -0.016210483, 0.0011133, -0.9976389, 0.06866942, -0.016172118, -0.06867806, -0.9975134, 0.4638072, -0.017174125, -0.022513157)
bones/26/enabled = true
bones/26/position = Vector3(0.4638072, -0.017174125, -0.022513157)
bones/26/rotation = Quaternion(0.9993767, 0.000278499, -0.008100677, -0.034358192)
bones/26/position = Vector3(0.31650528, 1.2372452, -0.010168988)
bones/26/rotation = Quaternion(0.7306764, 0.1751109, 0.067727506, 0.65640014)
bones/26/scale = Vector3(1, 1, 1.0000056)
bones/27/name = "Arm.R"
bones/27/parent = 0
bones/27/rest = Transform3D(-0.9676544, -0.25016746, -0.032574747, 0.25158504, -0.96648616, -0.051082943, -0.018703751, -0.057625957, 0.99816304, -0.26421797, 0.773799, -8.039582e-08)
bones/27/enabled = true
bones/27/position = Vector3(-0.26421797, 0.773799, -8.039582e-08)
bones/27/rotation = Quaternion(-0.012929503, -0.027410163, 0.99150187, 0.12651326)
bones/27/rotation = Quaternion(-0.031915218, 0.07169481, 0.97062564, 0.22743632)
bones/27/scale = Vector3(0.99999994, 1, 1)
bones/28/name = "Forearm.R"
bones/28/parent = 27
bones/28/rest = Transform3D(0.99957556, -0.013401167, -0.025863245, 0.011816061, 0.9980984, -0.060496498, 0.026624788, 0.060165223, 0.99783325, 1.17579475e-08, 0.4103366, 3.7252903e-09)
bones/28/enabled = true
bones/28/position = Vector3(1.17579475e-08, 0.4103366, 3.7252903e-09)
bones/28/rotation = Quaternion(0.03018239, -0.013129384, 0.0063078515, 0.9994383)
bones/28/rotation = Quaternion(0.60048085, -0.010373613, 0.12549506, 0.78966206)
bones/28/scale = Vector3(0.9999999, 0.9999999, 0.99999994)
bones/29/name = "Wrist.R"
bones/29/parent = 28
bones/29/rest = Transform3D(-0.9710889, -0.23862909, -0.0065321154, -0.23752637, 0.968609, -0.073335625, 0.02382708, -0.06966387, -0.9972859, -2.158049e-08, 0.4061282, -2.1100277e-09)
bones/29/enabled = true
bones/29/position = Vector3(-2.158049e-08, 0.4061282, -2.1100277e-09)
bones/29/rotation = Quaternion(-0.11998776, 0.99209166, -0.03603485, -0.007650301)
bones/29/rotation = Quaternion(0.07167426, 0.8419875, 0.4864333, 0.22204147)
bones/29/scale = Vector3(1, 1.0000001, 1)
bones/30/name = "ThumbU.R"
bones/30/parent = 29
bones/30/rest = Transform3D(0.97710997, 0.21273556, -2.9711325e-07, -0.21223329, 0.9748031, 0.06867511, 0.014609926, -0.067103066, 0.9976392, 0.0045400467, 0.06477455, -0.046769787)
bones/30/enabled = true
bones/30/position = Vector3(0.0045400467, 0.06477455, -0.046769787)
bones/30/rotation = Quaternion(-0.03416064, -0.0036758084, -0.10691856, 0.993674)
bones/30/rotation = Quaternion(-0.11007893, 0.004514502, -0.106886454, 0.9881486)
bones/30/scale = Vector3(1.0000001, 1.0000001, 1.0000001)
bones/31/name = "ThumbM.R"
bones/31/parent = 30
bones/31/rest = Transform3D(0.9627348, 0.270287, 0.009302534, -0.27035788, 0.9627312, 0.0074529545, -0.006941402, -0.009690234, 0.99992895, 1.0739313e-08, 0.05044063, 6.8161654e-10)
bones/31/enabled = true
bones/31/position = Vector3(1.0739313e-08, 0.05044063, 6.8161654e-10)
bones/31/rotation = Quaternion(-0.0043263324, 0.0040993933, -0.13643959, 0.9906305)
bones/31/rotation = Quaternion(-0.0043263347, 0.0040993956, -0.13643965, 0.9906305)
bones/31/scale = Vector3(0.99999994, 1.0000001, 1)
bones/32/name = "ThumbD.R"
bones/32/parent = 31
bones/32/rest = Transform3D(0.99352676, 0.113595836, -0.0005989222, -0.113595866, 0.99347264, -0.010411862, -0.00058773125, 0.010412501, 0.99994564, 1.717126e-08, 0.031673037, 2.6193447e-09)
bones/32/enabled = true
bones/32/position = Vector3(1.717126e-08, 0.031673037, 2.6193447e-09)
bones/32/rotation = Quaternion(0.0052146064, -2.8022987e-06, -0.056890834, 0.99836683)
bones/32/rotation = Quaternion(0.0052146167, -2.8286527e-06, -0.056890868, 0.99836683)
bones/32/scale = Vector3(0.9999999, 1.0000001, 1)
bones/33/name = "IndexU.R"
bones/33/parent = 29
bones/33/rest = Transform3D(0.9800801, 0.19626924, 0.030353922, -0.1983675, 0.95998544, 0.19768226, 0.00965963, -0.19976568, 0.97979605, -0.04529639, 0.07181834, -0.03615556)
bones/33/enabled = true
bones/33/position = Vector3(-0.04529639, 0.07181834, -0.03615556)
bones/33/rotation = Quaternion(-0.10037254, 0.0052261883, -0.09966259, 0.98993206)
bones/33/rotation = Quaternion(-0.11027914, -0.04456165, -0.42636722, 0.8966961)
bones/33/scale = Vector3(1, 0.99999994, 0.99999994)
bones/34/name = "IndexM.R"
bones/34/parent = 33
bones/34/rest = Transform3D(0.9323134, 0.3615565, 0.008257622, -0.3606826, 0.9312451, -0.051870808, -0.026444094, 0.04538148, 0.9986197, 1.2980308e-08, 0.07879048, -2.3283064e-09)
bones/34/enabled = true
bones/34/position = Vector3(1.2980308e-08, 0.07879048, -2.3283064e-09)
bones/34/rotation = Quaternion(0.024743076, 0.008828865, -0.18375322, 0.98262125)
bones/34/rotation = Quaternion(0.0134712765, 0.022554262, -0.76696104, 0.6411558)
bones/34/scale = Vector3(0.9999997, 1, 1)
bones/35/name = "IndexD.R"
bones/35/parent = 34
bones/35/rest = Transform3D(0.99988145, -0.015218617, 0.0023559635, 0.015326444, 0.99832255, -0.05583094, -0.0015023419, 0.05586043, 0.9984374, -9.895302e-09, 0.060257077, 1.3969839e-09)
bones/35/enabled = true
bones/35/position = Vector3(-9.895302e-09, 0.060257077, 1.3969839e-09)
bones/35/rotation = Quaternion(0.027934575, 0.0009649817, 0.007639474, 0.9995801)
bones/35/rotation = Quaternion(0.008675825, 0.026570693, -0.93631035, 0.35005954)
bones/35/scale = Vector3(1, 0.99999994, 0.99999994)
bones/36/name = "MiddleU.R"
bones/36/parent = 29
bones/36/rest = Transform3D(0.9957891, 0.05825713, 0.07078279, -0.06539661, 0.9925152, 0.103134215, -0.064244695, -0.10732887, 0.9921457, -0.04237805, 0.07765788, -0.011263045)
bones/36/enabled = true
bones/36/position = Vector3(-0.04237805, 0.07765788, -0.011263045)
bones/36/rotation = Quaternion(-0.05274483, 0.03383967, -0.030989258, 0.9975533)
bones/36/rotation = Quaternion(-0.060813747, 0.015127033, -0.34942102, 0.93486786)
bones/36/scale = Vector3(1, 0.9999999, 1)
bones/37/name = "MiddleM.R"
bones/37/parent = 36
bones/37/rest = Transform3D(0.8640145, 0.50343317, -0.0058475533, -0.5016816, 0.8599146, -0.09414036, -0.04236499, 0.08427222, 0.99554175, 3.4226105e-08, 0.073259085, -2.910383e-10)
bones/37/enabled = true
bones/37/position = Vector3(3.4226105e-08, 0.073259085, -2.910383e-10)
bones/37/rotation = Quaternion(0.046254598, 0.009467376, -0.26058242, 0.9642965)
bones/37/rotation = Quaternion(0.025758395, 0.039567936, -0.86930394, 0.49201787)
bones/37/scale = Vector3(1.0000001, 0.99999994, 0.99999994)
bones/38/name = "MiddleD.R"
bones/38/parent = 37
bones/38/rest = Transform3D(0.9998987, 0.01421252, 0.00084087194, -0.014225099, 0.9997446, 0.017563174, -0.0005910403, -0.017573357, 0.9998453, 6.9849193e-09, 0.06424289, 3.259629e-09)
bones/38/enabled = true
bones/38/position = Vector3(6.9849193e-09, 0.06424289, 3.259629e-09)
bones/38/rotation = Quaternion(-0.008784695, 0.00035800098, -0.007109859, 0.9999361)
bones/38/rotation = Quaternion(-0.000743639, 0.008760481, 0.99119323, 0.13213131)
bones/38/scale = Vector3(1, 1, 0.9999999)
bones/39/name = "RingU.R"
bones/39/parent = 29
bones/39/rest = Transform3D(0.97040546, -0.03888434, 0.23833002, 0.023668591, 0.9975139, 0.0663766, -0.24031854, -0.05877128, 0.9689132, -0.033461094, 0.07149336, 0.017992368)
bones/39/enabled = true
bones/39/position = Vector3(-0.033461094, 0.07149336, 0.017992368)
bones/39/rotation = Quaternion(-0.031536974, 0.120618336, 0.015763193, 0.99207264)
bones/39/rotation = Quaternion(-0.06857056, 0.104122244, -0.30338192, 0.94467777)
bones/39/scale = Vector3(1, 1, 0.9999999)
bones/40/name = "RingM.R"
bones/40/parent = 39
bones/40/rest = Transform3D(0.8251063, 0.56393784, 0.034260213, -0.55244493, 0.81802005, -0.16014935, -0.11833983, 0.11321335, 0.98649806, -1.9383151e-08, 0.07553466, 5.743118e-09)
bones/40/enabled = true
bones/40/position = Vector3(-1.9383151e-08, 0.07553466, 5.743118e-09)
bones/40/rotation = Quaternion(0.07174281, 0.040049195, -0.29298967, 0.95257866)
bones/40/rotation = Quaternion(0.007345013, 0.081835344, -0.9520285, 0.29477227)
bones/40/scale = Vector3(1, 0.99999994, 1)
bones/41/name = "RingD.R"
bones/41/parent = 40
bones/41/rest = Transform3D(0.99991727, 0.012864309, -0.00015439918, -0.012864574, 0.999672, -0.022144107, -0.00013052007, 0.02214426, 0.9997548, 6.519258e-09, 0.06469142, 1.8626451e-08)
bones/41/enabled = true
bones/41/position = Vector3(6.519258e-09, 0.06469142, 1.8626451e-08)
bones/41/rotation = Quaternion(0.011073001, -5.9702784e-06, -0.0064327484, 0.999918)
bones/41/rotation = Quaternion(0.0005126119, -0.011061135, 0.9985195, 0.053257048)
bones/41/scale = Vector3(1, 0.99999994, 1)
bones/42/name = "LittleU.R"
bones/42/parent = 29
bones/42/rest = Transform3D(0.91784126, 0.18039082, 0.35359094, -0.15868118, 0.9832451, -0.08972006, -0.36385116, 0.026240546, 0.93108743, -0.036283698, 0.08284566, 0.04032454)
bones/42/enabled = true
bones/42/position = Vector3(-0.036283698, 0.08284566, 0.04032454)
bones/42/rotation = Quaternion(0.029618146, 0.1832459, -0.086604275, 0.9787969)
bones/42/rotation = Quaternion(-0.030743208, 0.18306053, -0.39607742, 0.8992589)
bones/42/scale = Vector3(1, 1.0000001, 1)
bones/43/name = "LittleM.R"
bones/43/parent = 42
bones/43/rest = Transform3D(0.9267258, 0.3674547, 0.078461215, -0.35205156, 0.9221319, -0.16041426, -0.13129655, 0.12103769, 0.9839263, 4.5401976e-09, 0.061574332, 1.4901161e-08)
bones/43/enabled = true
bones/43/position = Vector3(4.5401976e-09, 0.061574332, 1.4901161e-08)
bones/43/rotation = Quaternion(0.071881495, 0.053571142, -0.1837585, 0.97887486)
bones/43/rotation = Quaternion(-0.009628415, 0.089129776, -0.93651164, 0.33898285)
bones/43/scale = Vector3(0.9999999, 1.0000001, 0.99999994)
bones/44/name = "LittleD.R"
bones/44/parent = 43
bones/44/rest = Transform3D(0.99519044, 0.09795644, 0.00071900914, -0.097956285, 0.99507964, 0.014866768, 0.0007408244, -0.014865696, 0.99988925, -2.6077032e-08, 0.035935488, 2.0489097e-08)
bones/44/enabled = true
bones/44/position = Vector3(-2.6077032e-08, 0.035935488, 2.0489097e-08)
bones/44/rotation = Quaternion(-0.007442277, -5.4605316e-06, -0.049038548, 0.99876916)
bones/44/rotation = Quaternion(-0.0013264472, 0.0073231193, 0.9742042, 0.2255458)
bones/44/scale = Vector3(1, 0.99999994, 1)
bones/45/name = "ThumbCtrl.R"
bones/45/parent = 29
bones/45/rest = Transform3D(0.97710997, 0.21273556, -3.141077e-07, -0.21223329, 0.9748031, 0.06867511, 0.014609943, -0.06710306, 0.9976392, 0.0045400467, 0.06477455, -0.046769787)
bones/45/enabled = true
bones/45/position = Vector3(0.0045400467, 0.06477455, -0.046769787)
bones/45/rotation = Quaternion(-0.03416064, -0.0036758168, -0.10691856, 0.993674)
bones/45/rotation = Quaternion(-0.11007896, 0.0045144954, -0.106886454, 0.9881486)
bones/45/scale = Vector3(1.0000001, 1.0000001, 1.0000001)
bones/46/name = "IndexCtrl.R"
bones/46/parent = 29
bones/46/rest = Transform3D(0.9800801, 0.1962692, 0.030353911, -0.19836746, 0.9599855, 0.1976822, 0.009659619, -0.19976562, 0.9797961, -0.04529639, 0.07181837, -0.036155567)
bones/46/enabled = true
bones/46/position = Vector3(-0.04529639, 0.07181837, -0.036155567)
bones/46/rotation = Quaternion(-0.1003725, 0.0052261883, -0.099662565, 0.98993206)
bones/46/rotation = Quaternion(-0.110279106, -0.044561677, -0.42636713, 0.89669603)
bones/46/scale = Vector3(1, 1, 1)
bones/47/name = "MiddleCtrl.R"
bones/47/parent = 29
bones/47/rest = Transform3D(0.9957891, 0.05825713, 0.07078278, -0.06539661, 0.9925152, 0.103134215, -0.06424469, -0.10732887, 0.9921457, -0.04237805, 0.07765788, -0.011263043)
bones/47/enabled = true
bones/47/position = Vector3(-0.04237805, 0.07765788, -0.011263043)
bones/47/rotation = Quaternion(-0.05274483, 0.033839665, -0.030989258, 0.9975533)
bones/47/rotation = Quaternion(-0.06081375, 0.015127055, -0.34942102, 0.93486786)
bones/47/scale = Vector3(1, 0.9999999, 1)
bones/48/name = "RingCtrl.R"
bones/48/parent = 29
bones/48/rest = Transform3D(0.97040546, -0.038884338, 0.23833002, 0.023668593, 0.9975139, 0.06637658, -0.24031854, -0.058771256, 0.9689132, -0.033461034, 0.07149337, 0.017992346)
bones/48/enabled = true
bones/48/position = Vector3(-0.033461034, 0.07149337, 0.017992346)
bones/48/rotation = Quaternion(-0.031536963, 0.120618336, 0.015763193, 0.99207264)
bones/48/rotation = Quaternion(-0.06857059, 0.10412224, -0.30338195, 0.9446777)
bones/48/scale = Vector3(1, 1, 0.9999999)
bones/49/name = "LittleCtrl.R"
bones/49/parent = 29
bones/49/rest = Transform3D(0.91784126, 0.18039085, 0.353591, -0.15868121, 0.9832451, -0.08972009, -0.36385122, 0.026240563, 0.93108743, -0.036283698, 0.08284567, 0.04032453)
bones/49/enabled = true
bones/49/position = Vector3(-0.036283698, 0.08284567, 0.04032453)
bones/49/rotation = Quaternion(0.029618157, 0.18324593, -0.08660429, 0.9787969)
bones/49/rotation = Quaternion(-0.030743217, 0.1830605, -0.39607754, 0.89925885)
bones/49/scale = Vector3(1, 1.0000001, 1)
bones/50/name = "ArmPole.R"
bones/50/parent = 0
bones/50/rest = Transform3D(-1, 0, 3.8941437e-07, 0, 1, 0, -3.8941437e-07, 0, -1, -0.35926044, 0.3746208, -0.29998556)
bones/50/enabled = true
bones/50/position = Vector3(-0.35926044, 0.3746208, -0.29998556)
bones/50/position = Vector3(-0.45589978, 0.21268988, 0.024682283)
bones/50/rotation = Quaternion(0, 1, 0, 1.9470718e-07)
bones/50/scale = Vector3(1, 1, 1)
bones/51/name = "ArmCtrl.R"
@ -6664,14 +6673,14 @@ bones/51/parent = 0
bones/51/rest = Transform3D(0.94635737, -0.23162138, -0.2253216, -0.22532392, -0.9728065, 0.05364829, -0.23162167, -1.0385237e-07, -0.9728063, -0.26421803, 0.77379894, -6.9123985e-08)
bones/51/enabled = true
bones/51/position = Vector3(-0.26421803, 0.77379894, -6.9123985e-08)
bones/51/rotation = Quaternion(0.9864031, -0.11581063, -0.11581014, -0.013596975)
bones/51/rotation = Quaternion(0.9864031, -0.11581065, -0.115810156, -0.013596978)
bones/51/scale = Vector3(1.0000058, 1.0000005, 1)
bones/52/name = "WristCtrl.R"
bones/52/parent = 0
bones/52/rest = Transform3D(0.9998686, -1.920822e-09, 0.016210958, -0.0011133328, -0.9976389, 0.068669416, 0.016172592, -0.06867806, -0.9975133, -0.4638072, -0.017174125, -0.022513377)
bones/52/enabled = true
bones/52/position = Vector3(-0.4638072, -0.017174125, -0.022513377)
bones/52/rotation = Quaternion(0.9993767, -0.00027850733, 0.008100916, -0.034358192)
bones/52/position = Vector3(-0.42681152, 0.3427762, 0.4510984)
bones/52/rotation = Quaternion(0.28703135, -0.19824226, -0.26870763, 0.8978359)
bones/52/scale = Vector3(0.99999994, 1, 1.0000055)
bones/53/name = "neutral_bone"
bones/53/parent = -1
@ -6722,36 +6731,35 @@ mesh = SubResource("ArrayMesh_o1ebt")
skin = SubResource("Skin_3xmvl")
[node name="Armature" type="Node3D" parent="Camera3D/molikman_hands"]
visible = false
[node name="Skeleton3D" type="Skeleton3D" parent="Camera3D/molikman_hands/Armature"]
bones/0/name = "DownCasing"
bones/0/parent = -1
bones/0/rest = Transform3D(1, -3.1337524e-16, -6.436688e-14, -6.436689e-14, -0.009737134, -0.99995255, -3.1338864e-16, 0.99995255, -0.009737134, -1.376031e-17, -0.061970927, -0.35584867)
bones/0/enabled = true
bones/0/position = Vector3(-1.376031e-17, -0.061970927, -0.35584867)
bones/0/rotation = Quaternion(0.710541, -2.2757397e-14, -2.2757402e-14, 0.7036558)
bones/0/position = Vector3(0.00052767294, 0.7402799, 0.6659273)
bones/0/rotation = Quaternion(0.07906239, -0.23877376, 0.96681166, -0.044850107)
bones/0/scale = Vector3(1, 0.99999994, 0.99999994)
bones/1/name = "UpCasing"
bones/1/parent = 0
bones/1/rest = Transform3D(1, 3.0177497e-16, 2.1433547e-14, -2.0314211e-16, 0.99998933, -0.0046016485, -2.143471e-14, 0.0046016485, 0.99998933, -4.4210334e-15, -0.0037285234, -0.06914721)
bones/1/enabled = true
bones/1/position = Vector3(-4.4210334e-15, -0.0037285234, -0.06914721)
bones/1/rotation = Quaternion(0.0023008306, 1.0717094e-14, -1.262296e-16, 0.9999974)
bones/1/rotation = Quaternion(-0.7919506, -1.1879076e-09, 6.0869296e-09, 0.6105851)
bones/1/scale = Vector3(1, 0.9999999, 0.9999999)
bones/2/name = "Lock.L"
bones/2/parent = 1
bones/2/rest = Transform3D(1, -2.2826183e-13, 4.7683716e-06, 4.768358e-06, -0.0023846624, -0.99999714, 1.1371185e-08, 0.99999714, -0.0023846624, 0.40466008, 0.74391246, -0.04321898)
bones/2/enabled = true
bones/2/position = Vector3(0.40466008, 0.74391246, -0.04321898)
bones/2/rotation = Quaternion(0.7079494, 1.6838627e-06, 1.6878829e-06, 0.7062632)
bones/2/rotation = Quaternion(0.38378474, 9.0940586e-07, 2.203252e-06, 0.9234226)
bones/2/scale = Vector3(1, 0.99999994, 0.99999994)
bones/3/name = "Lock.R"
bones/3/parent = 1
bones/3/rest = Transform3D(1, -2.2826183e-13, 4.7683716e-06, 4.768358e-06, -0.0023846624, -0.99999714, 1.1371185e-08, 0.99999714, -0.0023846624, -0.4074956, 0.74391246, -0.04321898)
bones/3/enabled = true
bones/3/position = Vector3(-0.4074956, 0.74391246, -0.04321898)
bones/3/rotation = Quaternion(0.7079494, 1.6838627e-06, 1.6878829e-06, 0.7062632)
bones/3/rotation = Quaternion(0.38378474, 9.0931854e-07, 2.2017368e-06, 0.9234226)
bones/3/scale = Vector3(1, 0.99999994, 0.99999994)
[node name="Case" type="MeshInstance3D" parent="Camera3D/molikman_hands/Armature/Skeleton3D"]
@ -6883,6 +6891,46 @@ script = ExtResource("13_x73hv")
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_qhqgy")
[node name="StepAudio" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("16_fbysy")
attenuation_model = 1
volume_db = -25.0
max_distance = 50.0
max_polyphony = 10
bus = &"GameplayMain"
script = ExtResource("17_0cqlf")
metadata/_custom_type_script = "uid://da0xv360va3b3"
[node name="LandAudio" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("18_0cqlf")
attenuation_model = 1
volume_db = -30.0
max_distance = 75.0
max_polyphony = 10
bus = &"GameplayMain"
script = ExtResource("17_0cqlf")
metadata/_custom_type_script = "uid://da0xv360va3b3"
[node name="PlantAudio" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("19_nquoi")
attenuation_model = 1
volume_db = -30.0
max_distance = 100.0
max_polyphony = 10
bus = &"GameplayMain"
script = ExtResource("17_0cqlf")
metadata/_custom_type_script = "uid://da0xv360va3b3"
[node name="ShootAudio" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("20_moxwy")
attenuation_model = 1
volume_db = -30.0
max_distance = 100.0
max_polyphony = 10
bus = &"GameplayMain"
script = ExtResource("17_0cqlf")
metadata/_custom_type_script = "uid://da0xv360va3b3"
[node name="BodyStateMachine" type="Node" parent="." node_paths=PackedStringArray("current_state")]
script = ExtResource("8_f1ej7")
current_state = NodePath("Stand")
@ -6899,7 +6947,7 @@ player_movement = NodePath("../../PlayerMovement")
animation_player = NodePath("../../AnimationPlayer")
weapon_system = NodePath("../../WeaponSystem")
[node name="Stand" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "weapon_system")]
[node name="Stand" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "weapon_system", "audio")]
script = ExtResource("10_a8ls1")
max_speed = 6.0
acceleration = 100.0
@ -6908,6 +6956,9 @@ JUMP_VELOCITY = 6.0
player = NodePath("../..")
player_movement = NodePath("../../PlayerMovement")
weapon_system = NodePath("../../WeaponSystem")
audio = NodePath("../../StepAudio")
step_delay = 0.25
step_speed_curve = SubResource("Curve_fbysy")
[node name="Walk" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "weapon_system")]
script = ExtResource("11_qfm1y")
@ -6918,12 +6969,13 @@ player = NodePath("../..")
player_movement = NodePath("../../PlayerMovement")
weapon_system = NodePath("../../WeaponSystem")
[node name="Fall" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "weapon_system")]
[node name="Fall" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("player", "player_movement", "weapon_system", "land_sound")]
script = ExtResource("12_fulsm")
player = NodePath("../..")
player_movement = NodePath("../../PlayerMovement")
acceleration = 25.0
weapon_system = NodePath("../../WeaponSystem")
land_sound = NodePath("../../LandAudio")
[node name="Death" type="Node" parent="BodyStateMachine" node_paths=PackedStringArray("animation_player")]
script = ExtResource("19_rwwcc")
@ -6981,6 +7033,7 @@ blue_team_texture = ExtResource("27_j3w78")
[connection signal="died" from="." to="Camera3D/molikman_hands/VisibleDisabler" method="reverse"]
[connection signal="died" from="." to="Camera3D/DeadSpectator" method="set_active"]
[connection signal="died" from="." to="BodyStateMachine/Death" method="on_death"]
[connection signal="died" from="." to="PlayerMovement" method="disable"]
[connection signal="died" from="." to="WeaponSystem" method="disable"]
[connection signal="health_changed" from="." to="HUD/Healthbar" method="on_hp_changed"]
[connection signal="spawned" from="." to="TeamUpdater" method="on_spawned"]

View file

@ -1,7 +1,16 @@
[gd_scene load_steps=5 format=3 uid="uid://dtbpyfdawb02b"]
[gd_scene load_steps=10 format=3 uid="uid://dtbpyfdawb02b"]
[ext_resource type="Script" uid="uid://boftqgpgqf56g" path="res://scripts/weapon_system/bomb/active_bomb.gd" id="1_avh0g"]
[ext_resource type="PackedScene" uid="uid://dftij0fdq3lbr" path="res://models/weapons/Bomb.glb" id="1_yh58y"]
[ext_resource type="AudioStream" uid="uid://blqgr0uweyg38" path="res://audio/bomb_beep.ogg" id="3_0eiu1"]
[ext_resource type="Script" uid="uid://da0xv360va3b3" path="res://scripts/audio_system/multiplayer_audio_3d.gd" id="4_rcpur"]
[ext_resource type="AudioStream" uid="uid://dlvwyj5erlhss" path="res://audio/defuse.ogg" id="5_rcpur"]
[ext_resource type="AudioStream" uid="uid://lmmqcovqat1u" path="res://audio/explosion.ogg" id="6_uibus"]
[sub_resource type="Curve" id="Curve_0eiu1"]
_limits = [0.0, 3.0, 0.0, 1.0]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.667, 1), 0.0, 0.0, 0, 0, Vector2(0.667, 0.5), 0.0, 0.0, 0, 0, Vector2(0.888, 0.5), 0.0, 0.0, 0, 0, Vector2(0.889, 0.333), 0.0, 0.0, 0, 0, Vector2(1, 0.10352564), 0.0, 0.0, 0, 0]
point_count = 6
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_yh58y"]
properties/0/path = NodePath(".:position")
@ -11,10 +20,12 @@ properties/0/replication_mode = 2
[sub_resource type="BoxShape3D" id="BoxShape3D_avh0g"]
size = Vector3(1, 0.23214722, 0.8808594)
[node name="ActiveBomb" type="CharacterBody3D"]
[node name="ActiveBomb" type="CharacterBody3D" node_paths=PackedStringArray("bomb_audio")]
collision_layer = 64
collision_mask = 0
script = ExtResource("1_avh0g")
bomb_audio = NodePath("BeepAudio")
tick_curve = SubResource("Curve_0eiu1")
[node name="Bomb" parent="." instance=ExtResource("1_yh58y")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1307683, 0)
@ -30,4 +41,28 @@ shape = SubResource("BoxShape3D_avh0g")
wait_time = 10.0
one_shot = true
[node name="BeepAudio" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("3_0eiu1")
attenuation_model = 1
max_distance = 200.0
bus = &"GameplayMain"
attenuation_filter_cutoff_hz = 10000.0
script = ExtResource("4_rcpur")
metadata/_custom_type_script = "uid://da0xv360va3b3"
[node name="DefuseAudio" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("5_rcpur")
max_distance = 100.0
bus = &"GameplayMain"
script = ExtResource("4_rcpur")
metadata/_custom_type_script = "uid://da0xv360va3b3"
[node name="BoomAudio" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("6_uibus")
attenuation_model = 3
max_distance = 500.0
bus = &"GameplayMisc"
script = ExtResource("4_rcpur")
metadata/_custom_type_script = "uid://da0xv360va3b3"
[connection signal="timeout" from="DefuseTimer" to="." method="on_defuse_timeout"]

View file

@ -0,0 +1,19 @@
extends AudioStreamPlayer3D
class_name MultiplayerAudio3D
func multiplayer_play():
play()
internal_play.rpc()
func multiplayer_stop():
stop()
internal_stop.rpc()
@rpc
func internal_play():
play()
@rpc
func internal_stop():
play()

View file

@ -0,0 +1 @@
uid://da0xv360va3b3

View file

@ -0,0 +1,4 @@
extends Node
var SENSITIVITY: float

View file

@ -0,0 +1 @@
uid://d3trljsb8awmr

View file

@ -1,6 +1,5 @@
extends Camera3D
@export var SENSITIVITY = 0.02
@export var SPEED = 10.0
var active: bool
@ -34,4 +33,4 @@ func _input(event: InputEvent) -> void:
if active == false or not is_multiplayer_authority():
return
if event is InputEventMouseMotion:
rotate_camera(-event.relative.x * SENSITIVITY,-event.relative.y * SENSITIVITY)
rotate_camera(-event.relative.x * ClientSettings.SENSITIVITY,-event.relative.y * ClientSettings.SENSITIVITY)

View file

@ -2,9 +2,6 @@ extends Camera3D
class_name PlayerCamera
@export var SENSITIVITY = 0.005
var vertical_compensation : float
var compensation_tween: Tween
var compensate: bool = false
@ -33,7 +30,7 @@ func _input(event: InputEvent) -> void:
if not is_multiplayer_authority() or disabled:
return
if event is InputEventMouseMotion:
rotate_camera(-event.relative.x * SENSITIVITY,-event.relative.y * SENSITIVITY)
rotate_camera(-event.relative.x * ClientSettings.SENSITIVITY,-event.relative.y * ClientSettings.SENSITIVITY)
func rotate_camera(x,y) -> void:
get_parent().rotate_y(x)

View file

@ -5,6 +5,9 @@ class_name PlayerMovement
@export var player: Player
var disabled: bool
func disable() -> void:
disabled = true
func process_movement(max_speed: float,acceleration: float,deceleration: float,delta: float) -> void:
if is_multiplayer_authority() == false:
return

View file

@ -1,6 +1,5 @@
extends Camera3D
@export var SENSITIVITY = 0.02
@export var SPEED = 10.0
func _enter_tree() -> void:
@ -31,7 +30,7 @@ func _input(event: InputEvent) -> void:
if not is_multiplayer_authority():
return
if event is InputEventMouseMotion:
rotate_camera(-event.relative.x * SENSITIVITY,-event.relative.y * SENSITIVITY)
rotate_camera(-event.relative.x * ClientSettings.SENSITIVITY,-event.relative.y * ClientSettings.SENSITIVITY)
@rpc("any_peer","call_local","reliable")
func set_after_spawn(start_position: Vector3, _team: int):

View file

@ -5,6 +5,7 @@ extends State
@export var max_speed: float = 5.0
@export var acceleration: float
@export var weapon_system: WeaponSystem
@export var land_sound: MultiplayerAudio3D
func enter() -> void:
pass
@ -18,6 +19,7 @@ func physics_update(delta: float) -> void:
return
if player.is_on_floor():
transition.emit("Stand")
land_sound.multiplayer_play()
player.velocity += player.get_gravity() * delta

View file

@ -7,12 +7,17 @@ extends State
@export var player: Player
@export var player_movement: PlayerMovement
@export var weapon_system: WeaponSystem
@export var audio: MultiplayerAudio3D
@export var step_delay: float
@export var step_speed_curve: Curve
var step_time: float
func enter() -> void:
pass
func exit() -> void:
pass
step_time = 0
func physics_update(delta: float) -> void:
if not is_multiplayer_authority():
@ -26,6 +31,11 @@ func physics_update(delta: float) -> void:
transition.emit("Fall")
return
step_time += delta * step_speed_curve.sample((player.velocity * Vector3(1,0,1)).length_squared()/(max_speed*max_speed))
if step_time >= step_delay:
step_time = 0
audio.multiplayer_play()
player_movement.process_movement(max_speed * weapon_system.get_speed_modifier(),acceleration,deceleration,delta)
func state_input(event: InputEvent) -> void:

View file

@ -2,6 +2,10 @@ extends Interactible
var plant: StringName
@onready var defuse_timer: Timer = $DefuseTimer
@export var bomb_audio: MultiplayerAudio3D
@export var tick_curve : Curve
var tick_time: float
var tick_stop: bool
func _ready() -> void:
super()
@ -9,20 +13,33 @@ func _ready() -> void:
Session.bomb_timer.timeout.connect(on_timeout)
Session.begin_bomb_stage()
func _process(delta: float) -> void:
if tick_stop:
return
if multiplayer.is_server():
tick_time += delta
if tick_time >= tick_curve.sample(1-Session.bomb_timer.time_left/Session.bomb_timer.wait_time):
bomb_audio.multiplayer_play()
tick_time = 0
func on_timeout():
if multiplayer.is_server() == false:
return
tick_stop = true
$BoomAudio.play()
Session.kill_site(plant)
func on_defuse_timeout():
Session.defuse_win()
tick_stop = true
func interaction_start(player_id: int):
if Session.player_nodes[player_id].team != Session.TEAMS.DEFENCE:
if tick_stop or Session.player_nodes[player_id].team != Session.TEAMS.DEFENCE:
return
super(player_id)
defuse_timer.start()
$DefuseAudio.multiplayer_play()
Session.player_nodes[player_id].passive.rpc_id(player_id)
func interaction_end():

View file

@ -6,6 +6,7 @@ func enter():
machine.animation_player.play(machine.animation_prefix+"plant")
machine.animation_player.animation_finished.connect(on_animation_finished)
machine.speed_modifier = 0.0
machine.player.get_node("PlantAudio").multiplayer_play()
func exit():
machine.animation_player.animation_finished.disconnect(on_animation_finished)
@ -26,3 +27,4 @@ func state_input(event: InputEvent) -> void:
return
if event.is_action_released("plr_bomb"):
transition.emit("Idle")
machine.player.get_node("PlantAudio").multiplayer_stop()

View file

@ -31,6 +31,7 @@ func use_begin() -> void:
func fire() -> void:
if machine.ammo == 0 or fire_timer.time_left > 0:
return
machine.player.get_node("ShootAudio").multiplayer_play()
machine.ammo -= 1
bullets_shot += 1