diff --git a/godot/player.tscn b/godot/player.tscn index cd4d861..8d68aae 100644 --- a/godot/player.tscn +++ b/godot/player.tscn @@ -1,9 +1,350 @@ -[gd_scene load_steps=4 format=3 uid="uid://dw8q1vqnc657"] +[gd_scene load_steps=10 format=3 uid="uid://dw8q1vqnc657"] [ext_resource type="PackedScene" uid="uid://c8h5f82tunglj" path="res://Models/Characters/ModularCharacters.fbx" id="1_b4mv3"] +[ext_resource type="AnimationLibrary" uid="uid://dpa5kel2sewxo" path="res://Models/Characters/Animations/BasicMotions@Idle01.fbx" id="1_wqiit"] + +[sub_resource type="Animation" id="Animation_62nln"] +resource_name = "Take 001" +length = 2.63333 +tracks/0/type = "rotation_3d" +tracks/0/imported = true +tracks/0/enabled = true +tracks/0/path = NodePath("%GeneralSkeleton:Spine") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = PackedFloat32Array(0, 1, -2.98023e-08, 0, 0, 1, 0.966667, 1, -2.98023e-08, 0, 0, 1, 1, 1, 0.00562339, -4.33624e-06, 6.52224e-05, 0.999984, 1.03333, 1, 0.0208378, -1.60336e-05, 0.000241652, 0.999783, 1.06667, 1, 0.043153, -3.32743e-05, 0.000500575, 0.999068, 1.1, 1, 0.0700656, -5.40763e-05, 0.000812665, 0.997542, 1.13333, 1, 0.0990654, -7.63834e-05, 0.00114898, 0.99508, 1.16667, 1, 0.127651, -9.84222e-05, 0.00148056, 0.991818, 1.2, 1, 0.15335, -0.000118345, 0.00177866, 0.98817, 1.23333, 1, 0.173733, -0.000134021, 0.0020151, 0.984791, 1.26667, 1, 0.186406, -0.000143826, 0.00216216, 0.98247, 1.3, 1, 0.188985, -0.000145793, 0.00219199, 0.981978, 1.33333, 1, 0.185442, -0.000143051, 0.00215089, 0.982653, 1.36667, 1, 0.181368, -0.000139952, 0.0021036, 0.983413, 1.4, 1, 0.176782, -0.000136435, 0.0020505, 0.984248, 1.43333, 1, 0.171704, -0.000132442, 0.00199154, 0.985147, 1.46667, 1, 0.166153, -0.00012812, 0.00192718, 0.986098, 1.5, 1, 0.160149, -0.00012356, 0.00185753, 0.987091, 1.53333, 1, 0.153711, -0.000118524, 0.00178291, 0.988114, 1.56667, 1, 0.14686, -0.000113249, 0.00170335, 0.989156, 1.6, 1, 0.139614, -0.000107676, 0.0016194, 0.990205, 1.63333, 1, 0.131993, -0.000101805, 0.00153098, 0.99125, 1.66667, 1, 0.124019, -9.56357e-05, 0.00143851, 0.992279, 1.7, 1, 0.11571, -8.92729e-05, 0.00134212, 0.993282, 1.73333, 1, 0.107088, -8.26418e-05, 0.00124213, 0.994249, 1.76667, 1, 0.0981731, -7.57277e-05, 0.00113869, 0.995169, 1.8, 1, 0.0889858, -6.86795e-05, 0.00103219, 0.996032, 1.83333, 1, 0.0795474, -6.12885e-05, 0.000922605, 0.996831, 1.86667, 1, 0.069879, -5.39124e-05, 0.000810489, 0.997555, 1.9, 1, 0.0600019, -4.63426e-05, 0.000696003, 0.998198, 1.93333, 1, 0.0499375, -3.85791e-05, 0.000579238, 0.998752, 1.96667, 1, 0.0397077, -3.06517e-05, 0.000460565, 0.999211, 2, 1, 0.0293341, -2.25902e-05, 0.000340208, 0.99957, 2.06667, 1, 0.00824337, -6.34789e-06, 9.56208e-05, 0.999966, 2.1, 1, -0.00242969, 1.86265e-06, -2.81632e-05, 0.999997, 2.3, 1, -0.0668584, 5.15729e-05, -0.000775486, 0.997762, 2.36667, 1, -0.0879522, 6.77854e-05, -0.0010201, 0.996124, 2.4, 1, -0.0983286, 7.58767e-05, -0.00114048, 0.995153, 2.43333, 1, -0.108562, 8.37296e-05, -0.00125921, 0.994089, 2.46667, 1, -0.118632, 9.15229e-05, -0.00137597, 0.992937, 2.5, 1, -0.128517, 9.91076e-05, -0.00149065, 0.991706, 2.53333, 1, -0.138195, 0.000106528, -0.00160292, 0.990404, 2.56667, 1, -0.147646, 0.000113919, -0.00171253, 0.989039, 2.6, 1, -0.156849, 0.000120997, -0.00181925, 0.987621, 2.63333, 1, -0.165783, 0.000127912, -0.00192291, 0.986161) +tracks/1/type = "rotation_3d" +tracks/1/imported = true +tracks/1/enabled = true +tracks/1/path = NodePath("%GeneralSkeleton:Chest") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = PackedFloat32Array(0, 1, -1.49012e-08, 1.49012e-08, 1.49012e-08, 1, 0.966667, 1, -1.49012e-08, 1.49012e-08, 1.49012e-08, 1, 1, 1, 0.00562362, 5.42402e-06, 4.20511e-05, 0.999984, 1.03333, 1, 0.0208386, 2.0057e-05, 0.000156164, 0.999783, 1.06667, 1, 0.0431546, 4.16487e-05, 0.000323355, 0.999068, 1.1, 1, 0.0700684, 6.75619e-05, 0.000525147, 0.997542, 1.13333, 1, 0.0990693, 9.54866e-05, 0.000742435, 0.99508, 1.16667, 1, 0.127656, 0.000123084, 0.000956595, 0.991818, 1.2, 1, 0.153356, 0.000147775, 0.00114924, 0.98817, 1.23333, 1, 0.17374, 0.000167519, 0.001302, 0.984791, 1.26667, 1, 0.186414, 0.000179663, 0.00139692, 0.98247, 1.3, 1, 0.188992, 0.000182137, 0.00141627, 0.981978, 1.33333, 1, 0.185449, 0.000178799, 0.00138974, 0.982653, 1.36667, 1, 0.181375, 0.00017485, 0.00135916, 0.983413, 1.4, 1, 0.176789, 0.00017035, 0.00132483, 0.984248, 1.43333, 1, 0.171711, 0.000165537, 0.0012868, 0.985147, 1.46667, 1, 0.16616, 0.000160173, 0.00124517, 0.986098, 1.5, 1, 0.160155, 0.000154421, 0.00120011, 0.987091, 1.53333, 1, 0.153717, 0.000148207, 0.00115192, 0.988114, 1.56667, 1, 0.146865, 0.000141546, 0.00110063, 0.989156, 1.6, 1, 0.139619, 0.000134602, 0.00104633, 0.990205, 1.63333, 1, 0.131998, 0.000127271, 0.000989139, 0.99125, 1.66667, 1, 0.124024, 0.000119567, 0.000929385, 0.992279, 1.7, 1, 0.115715, 0.00011155, 0.000867099, 0.993282, 1.73333, 1, 0.107092, 0.00010322, 0.000802517, 0.994249, 1.76667, 1, 0.0981769, 9.46969e-05, 0.000735641, 0.995169, 1.8, 1, 0.0889894, 8.58158e-05, 0.000666827, 0.996033, 1.83333, 1, 0.0795506, 7.66963e-05, 0.000596106, 0.996831, 1.86667, 1, 0.0698817, 6.73085e-05, 0.000523716, 0.997555, 1.9, 1, 0.0600042, 5.78761e-05, 0.000449687, 0.998198, 1.93333, 1, 0.0499395, 4.82053e-05, 0.000374258, 0.998752, 1.96667, 1, 0.0397092, 3.83556e-05, 0.000297606, 0.999211, 2, 1, 0.0293353, 2.82973e-05, 0.000219882, 0.99957, 2.06667, 1, 0.00824359, 7.89762e-06, 6.17802e-05, 0.999966, 2.1, 1, -0.00242978, -2.38419e-06, -1.82241e-05, 0.999997, 2.3, 1, -0.066861, -6.44326e-05, -0.000501037, 0.997762, 2.36667, 1, -0.0879556, -8.4728e-05, -0.000659168, 0.996124, 2.4, 1, -0.0983324, -9.48012e-05, -0.000736892, 0.995154, 2.43333, 1, -0.108567, -0.000104636, -0.000813574, 0.994089, 2.46667, 1, -0.118637, -0.000114352, -0.000889063, 0.992937, 2.5, 1, -0.128522, -0.000123888, -0.000963122, 0.991706, 2.53333, 1, -0.1382, -0.000133246, -0.00103569, 0.990404, 2.56667, 1, -0.147651, -0.000142306, -0.00110641, 0.989039, 2.6, 1, -0.156855, -0.000151187, -0.00117546, 0.987621, 2.63333, 1, -0.16579, -0.00015983, -0.0012424, 0.986161) +tracks/2/type = "rotation_3d" +tracks/2/imported = true +tracks/2/enabled = true +tracks/2/path = NodePath("%GeneralSkeleton:UpperChest") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = PackedFloat32Array(0, 1, 2.98023e-08, 0, 0, 1, 0.966667, 1, 2.98023e-08, 0, 0, 1, 1, 1, 0.0056217, -0.000153527, -2.29478e-06, 0.999984, 1.03333, 1, 0.0208315, -0.000568748, -8.79169e-06, 0.999783, 1.06667, 1, 0.0431398, -0.00117782, -1.83433e-05, 0.999068, 1.1, 1, 0.0700443, -0.00191242, -2.96384e-05, 0.997542, 1.13333, 1, 0.0990352, -0.00270398, -4.19021e-05, 0.99508, 1.16667, 1, 0.127612, -0.00348419, -5.4121e-05, 0.991818, 1.2, 1, 0.153303, -0.00418562, -6.49095e-05, 0.988171, 1.23333, 1, 0.17368, -0.00474197, -7.35968e-05, 0.984791, 1.26667, 1, 0.186349, -0.00508791, -7.89762e-05, 0.982471, 1.3, 1, 0.188928, -0.00515836, -7.99745e-05, 0.981978, 1.33333, 1, 0.185386, -0.0050616, -7.8544e-05, 0.982653, 1.36667, 1, 0.181313, -0.0049504, -7.68304e-05, 0.983413, 1.4, 1, 0.176728, -0.0048252, -7.48038e-05, 0.984248, 1.43333, 1, 0.171652, -0.00468659, -7.27475e-05, 0.985147, 1.46667, 1, 0.166103, -0.00453511, -7.03484e-05, 0.986098, 1.5, 1, 0.1601, -0.0043712, -6.77854e-05, 0.987091, 1.53333, 1, 0.153665, -0.00419545, -6.51032e-05, 0.988114, 1.56667, 1, 0.146815, -0.00400844, -6.21974e-05, 0.989156, 1.6, 1, 0.139571, -0.00381078, -5.90533e-05, 0.990205, 1.63333, 1, 0.131953, -0.00360273, -5.58496e-05, 0.99125, 1.66667, 1, 0.123981, -0.00338513, -5.2467e-05, 0.992279, 1.7, 1, 0.115675, -0.00315832, -4.8995e-05, 0.993282, 1.73333, 1, 0.107055, -0.00292291, -4.53293e-05, 0.994249, 1.76667, 1, 0.0981432, -0.00267957, -4.15742e-05, 0.995169, 1.8, 1, 0.0889587, -0.00242893, -3.77595e-05, 0.996033, 1.83333, 1, 0.0795232, -0.00217122, -3.36319e-05, 0.996831, 1.86667, 1, 0.0698577, -0.0019073, -2.96086e-05, 0.997555, 1.9, 1, 0.0599836, -0.00163773, -2.54065e-05, 0.998198, 1.93333, 1, 0.0499223, -0.00136313, -2.12044e-05, 0.998752, 1.96667, 1, 0.0396955, -0.00108379, -1.68532e-05, 0.999211, 2, 1, 0.0293251, -0.000800699, -1.24127e-05, 0.99957, 2.03333, 1, 0.0188329, -0.000514209, -7.88271e-06, 0.999823, 2.06667, 1, 0.00824079, -0.000224978, -3.57628e-06, 0.999966, 2.1, 1, -0.00242899, 6.634e-05, 9.98378e-07, 0.999997, 2.3, 1, -0.0668381, 0.00182484, 2.8342e-05, 0.997762, 2.36667, 1, -0.0879253, 0.00240065, 3.72231e-05, 0.996124, 2.4, 1, -0.0982985, 0.00268388, 4.16338e-05, 0.995153, 2.43333, 1, -0.108529, 0.00296317, 4.5985e-05, 0.994089, 2.46667, 1, -0.118596, 0.00323802, 5.02169e-05, 0.992937, 2.5, 1, -0.128478, 0.00350779, 5.44488e-05, 0.991706, 2.53333, 1, -0.138153, 0.00377195, 5.8502e-05, 0.990404, 2.56667, 1, -0.147601, 0.00402994, 6.25551e-05, 0.989039, 2.6, 1, -0.156801, 0.00428112, 6.63996e-05, 0.987621, 2.63333, 1, -0.165733, 0.00452504, 7.02441e-05, 0.986161) +tracks/3/type = "rotation_3d" +tracks/3/imported = true +tracks/3/enabled = true +tracks/3/path = NodePath("%GeneralSkeleton:Neck") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = PackedFloat32Array(0, 1, 4.47035e-08, 0, -1.49012e-08, 1, 0.966667, 1, 4.47035e-08, 0, -1.49012e-08, 1, 1, 1, 0.00562209, -2.01911e-05, 0.000133783, 0.999984, 1.03333, 1, 0.0208332, -7.50124e-05, 0.000495762, 0.999783, 1.06667, 1, 0.0431434, -0.000155345, 0.00102681, 0.999068, 1.1, 1, 0.0700501, -0.000252247, 0.00166714, 0.997542, 1.13333, 1, 0.0990434, -0.000356734, 0.00235716, 0.99508, 1.16667, 1, 0.127623, -0.000459522, 0.00303724, 0.991818, 1.2, 1, 0.153316, -0.000552073, 0.0036487, 0.98817, 1.23333, 1, 0.173694, -0.000625506, 0.00413367, 0.984791, 1.26667, 1, 0.186365, -0.000671208, 0.00443533, 0.982471, 1.3, 1, 0.188943, -0.000680402, 0.00449663, 0.981978, 1.33333, 1, 0.185401, -0.000667721, 0.00441232, 0.982653, 1.36667, 1, 0.181328, -0.000652999, 0.00431535, 0.983413, 1.4, 1, 0.176743, -0.000636443, 0.00420618, 0.984248, 1.43333, 1, 0.171666, -0.000618234, 0.00408545, 0.985147, 1.46667, 1, 0.166116, -0.000598237, 0.00395337, 0.986098, 1.5, 1, 0.160114, -0.0005766, 0.0038105, 0.987091, 1.53333, 1, 0.153677, -0.000553384, 0.00365734, 0.988114, 1.56667, 1, 0.146827, -0.000528798, 0.00349432, 0.989156, 1.6, 1, 0.139583, -0.00050272, 0.00332195, 0.990205, 1.63333, 1, 0.131964, -0.000475258, 0.00314066, 0.991249, 1.66667, 1, 0.123991, -0.000446498, 0.00295085, 0.992279, 1.7, 1, 0.115684, -0.000416607, 0.00275314, 0.993282, 1.73333, 1, 0.107064, -0.000385582, 0.00254798, 0.994249, 1.76667, 1, 0.0981513, -0.000353456, 0.00233585, 0.995169, 1.8, 1, 0.0889661, -0.0003203, 0.00211728, 0.996032, 1.83333, 1, 0.0795298, -0.000286415, 0.00189272, 0.996831, 1.86667, 1, 0.0698635, -0.000251591, 0.00166264, 0.997555, 1.9, 1, 0.0599886, -0.000215977, 0.00142762, 0.998198, 1.93333, 1, 0.0499265, -0.000179783, 0.00118819, 0.998752, 1.96667, 1, 0.0396989, -0.000142992, 0.000944793, 0.999211, 2, 1, 0.0293276, -0.000105575, 0.000697911, 0.99957, 2.06667, 1, 0.00824149, -2.96533e-05, 0.000196099, 0.999966, 2.1, 1, -0.00242908, 8.70228e-06, -5.7742e-05, 0.999997, 2.3, 1, -0.0668435, 0.000240698, -0.00159077, 0.997762, 2.36667, 1, -0.0879327, 0.000316709, -0.00209269, 0.996124, 2.4, 1, -0.0983068, 0.000354022, -0.0023395, 0.995153, 2.43333, 1, -0.108538, 0.000390857, -0.00258301, 0.994089, 2.46667, 1, -0.118606, 0.000427216, -0.00282268, 0.992938, 2.5, 1, -0.128488, 0.000462711, -0.00305782, 0.991706, 2.53333, 1, -0.138164, 0.00049758, -0.00328818, 0.990404, 2.56667, 1, -0.147613, 0.000531584, -0.00351304, 0.989039, 2.6, 1, -0.156814, 0.000564754, -0.003732, 0.987621, 2.63333, 1, -0.165746, 0.000596911, -0.00394462, 0.986161) +tracks/4/type = "rotation_3d" +tracks/4/imported = true +tracks/4/enabled = true +tracks/4/path = NodePath("%GeneralSkeleton:LeftShoulder") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = PackedFloat32Array(0, 1, 0.5, 0.5, 0.5, -0.5, 0.633333, 1, 0.387537, 0.526178, 0.464618, -0.597564, 0.966667, 1, 0.324412, 0.534889, 0.441433, -0.643264, 2.63333, 1, 0.324412, 0.534889, 0.441433, -0.643264) +tracks/5/type = "rotation_3d" +tracks/5/imported = true +tracks/5/enabled = true +tracks/5/path = NodePath("%GeneralSkeleton:LeftUpperArm") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = PackedFloat32Array(0, 1, -1.49012e-08, 1, -5.96046e-08, 7.45058e-08, 0.666667, 1, 1.49012e-08, 0.994527, 0.104479, -0.00103587, 0.966667, 1, -8.9407e-08, 0.988504, 0.151189, -0.00149891, 2.63333, 1, -8.9407e-08, 0.988504, 0.151189, -0.00149891) +tracks/6/type = "rotation_3d" +tracks/6/imported = true +tracks/6/enabled = true +tracks/6/path = NodePath("%GeneralSkeleton:LeftLowerArm") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = PackedFloat32Array(0, 1, -4.21468e-08, -0.707107, 8.42937e-08, 0.707107, 0.4, 1, 0.0761427, -0.703326, 0.0760957, 0.70267, 0.8, 1, 0.151401, -0.691371, 0.151307, 0.690066, 1.23333, 1, 0.230917, -0.669358, 0.230774, 0.667368, 1.66667, 1, 0.307285, -0.638217, 0.307095, 0.635569, 2.13333, 1, 0.384811, -0.594962, 0.384573, 0.591645, 2.6, 1, 0.456253, -0.542298, 0.45597, 0.538366, 2.63333, 1, 0.461092, -0.538198, 0.460807, 0.534223) +tracks/7/type = "rotation_3d" +tracks/7/imported = true +tracks/7/enabled = true +tracks/7/path = NodePath("%GeneralSkeleton:RightShoulder") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = PackedFloat32Array(0, 1, 0.5, -0.5, -0.5, -0.5, 0.166667, 1, 0.47362, -0.507581, -0.491679, -0.52564, 0.2, 1, -0.468258, 0.509007, 0.489927, 0.530676, 0.866667, 1, -0.355641, 0.531106, 0.448948, 0.624413, 0.966667, 1, -0.337956, 0.533347, 0.441858, 0.63725, 2.63333, 1, -0.337956, 0.533347, 0.441858, 0.63725) +tracks/8/type = "rotation_3d" +tracks/8/imported = true +tracks/8/enabled = true +tracks/8/path = NodePath("%GeneralSkeleton:RightUpperArm") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = PackedFloat32Array(0, 1, 4.47035e-08, 1, -5.96046e-08, -4.47035e-08, 0.166667, 1, 4.47035e-08, 0.99985, 0.0173043, 0.000171632, 0.2, 1, -1.49012e-08, 0.999784, 0.0207648, 0.000205874, 0.233333, 1, -5.96046e-08, 0.999706, 0.0242249, 0.000240266, 0.3, 1, 2.98023e-08, 0.999515, 0.0311443, 0.000308782, 0.366667, 1, -2.98023e-08, 0.999275, 0.0380622, 0.000377387, 0.6, 1, 4.47035e-08, 0.99806, 0.0622584, 0.000617325, 0.833333, 1, 2.98023e-08, 0.996258, 0.0864182, 0.000856847, 0.966667, 1, 1.78814e-07, 0.994967, 0.100202, 0.000993431, 2.63333, 1, 1.78814e-07, 0.994967, 0.100202, 0.000993431) +tracks/9/type = "rotation_3d" +tracks/9/imported = true +tracks/9/enabled = true +tracks/9/path = NodePath("%GeneralSkeleton:RightLowerArm") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = PackedFloat32Array(0, 1, 0, 0.707107, -4.21468e-08, 0.707107, 0.4, 1, 0.0789073, 0.705093, -0.0785644, 0.700318, 0.8, 1, 0.156832, 0.694302, -0.156151, 0.684811, 1.2, 1, 0.232805, 0.674867, -0.231794, 0.660779, 1.63333, 1, 0.311809, 0.644342, -0.310455, 0.625473, 2.06667, 1, 0.386259, 0.604405, -0.384581, 0.58103, 2.53333, 1, 0.460096, 0.551542, -0.458097, 0.523699, 2.63333, 1, 0.474945, 0.538965, -0.472881, 0.510224) +tracks/10/type = "rotation_3d" +tracks/10/imported = true +tracks/10/enabled = true +tracks/10/path = NodePath("%GeneralSkeleton:RightThumbMetacarpal") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = PackedFloat32Array(0, 1, -0.214187, -0.673887, -0.214187, 0.673887, 0.233333, 1, -0.134383, -0.707422, -0.126708, 0.682232, 0.3, 1, -0.111152, -0.715045, -0.101301, 0.682711, 2.63333, 1, -0.111152, -0.715045, -0.101301, 0.682711) +tracks/11/type = "rotation_3d" +tracks/11/imported = true +tracks/11/enabled = true +tracks/11/path = NodePath("%GeneralSkeleton:RightThumbProximal") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = PackedFloat32Array(0, 1, -1.49012e-08, -2.98023e-08, -4.44089e-16, 1, 0.3, 1, 0.139804, -0.0700915, -0.0226999, 0.987434, 2.63333, 1, 0.139804, -0.0700915, -0.0226999, 0.987434) +tracks/12/type = "rotation_3d" +tracks/12/imported = true +tracks/12/enabled = true +tracks/12/path = NodePath("%GeneralSkeleton:RightThumbDistal") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = PackedFloat32Array(0, 1, -5.96046e-08, 0, -8.9407e-08, 1, 0.3, 1, 0.137142, -0.0732692, -0.0282327, 0.987434, 2.63333, 1, 0.137142, -0.0732692, -0.0282327, 0.987434) +tracks/13/type = "rotation_3d" +tracks/13/imported = true +tracks/13/enabled = true +tracks/13/path = NodePath("%GeneralSkeleton:RightIndexProximal") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = PackedFloat32Array(0, 1, 2.98023e-08, 2.98023e-08, 2.98023e-08, 1, 0.3, 1, 0.333993, -0.0442379, 0, 0.941537, 2.63333, 1, 0.333993, -0.0442379, 0, 0.941537) +tracks/14/type = "rotation_3d" +tracks/14/imported = true +tracks/14/enabled = true +tracks/14/path = NodePath("%GeneralSkeleton:RightIndexIntermediate") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = PackedFloat32Array(0, 1, 2.98023e-08, 2.98023e-08, 8.9407e-08, 1, 0.3, 1, 0.334871, -0.0370115, -2.98023e-08, 0.941537, 2.63333, 1, 0.334871, -0.0370115, -5.96046e-08, 0.941537) +tracks/15/type = "rotation_3d" +tracks/15/imported = true +tracks/15/enabled = true +tracks/15/path = NodePath("%GeneralSkeleton:RightIndexDistal") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = PackedFloat32Array(0, 1, -2.98023e-08, 2.98023e-08, -8.9407e-08, 1, 0.3, 1, 0.336366, -0.01913, -8.9407e-08, 0.941537, 2.63333, 1, 0.336366, -0.01913, -8.9407e-08, 0.941537) +tracks/16/type = "rotation_3d" +tracks/16/imported = true +tracks/16/enabled = true +tracks/16/path = NodePath("%GeneralSkeleton:IndexFinger_04_2") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = PackedFloat32Array(0, 1, 2.98023e-08, 2.98023e-08, -2.98023e-08, 1, 0.3, 1, 0.335669, -0.0272181, -0.00969234, 0.941537, 2.63333, 1, 0.335669, -0.0272181, -0.00969234, 0.941537) +tracks/17/type = "rotation_3d" +tracks/17/imported = true +tracks/17/enabled = true +tracks/17/path = NodePath("%GeneralSkeleton:RightRingProximal") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 0.3, 1, 0.335608, 0.0295859, -8.9407e-08, 0.941537, 2.63333, 1, 0.335608, 0.0295859, -8.9407e-08, 0.941537) +tracks/18/type = "rotation_3d" +tracks/18/imported = true +tracks/18/enabled = true +tracks/18/path = NodePath("%GeneralSkeleton:RightRingIntermediate") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 0.3, 1, 0.336512, 0.016363, -5.96046e-08, 0.941537, 2.63333, 1, 0.336512, 0.016363, -5.96046e-08, 0.941537) +tracks/19/type = "rotation_3d" +tracks/19/imported = true +tracks/19/enabled = true +tracks/19/path = NodePath("%GeneralSkeleton:RightRingDistal") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = PackedFloat32Array(0, 1, -5.96046e-08, -7.45058e-08, -2.98023e-08, 1, 0.3, 1, 0.330445, 0.0656834, 5.96046e-08, 0.941537, 2.63333, 1, 0.330445, 0.0656834, 0, 0.941537) +tracks/20/type = "rotation_3d" +tracks/20/imported = true +tracks/20/enabled = true +tracks/20/path = NodePath("%GeneralSkeleton:Finger_04_2") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/keys = PackedFloat32Array(0, 1, 5.96046e-08, 5.96046e-08, 0, 1, 0.3, 1, 0.331219, 0.0616636, -2.98023e-08, 0.941537, 2.63333, 1, 0.331219, 0.0616636, -2.98023e-08, 0.941537) +tracks/21/type = "rotation_3d" +tracks/21/imported = true +tracks/21/enabled = true +tracks/21/path = NodePath("%GeneralSkeleton:RightUpperLeg") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/keys = PackedFloat32Array(0, 1, -2.98023e-08, 1.49012e-08, 1, 1.49012e-08, 0.0333333, 1, 0.00178234, 0.0125546, 0.999906, 0.00519551, 0.0666667, 1, 0.00355397, 0.0261799, 0.999594, 0.0106938, 0.1, 1, 0.00536077, 0.0407663, 0.999019, 0.0164653, 0.133333, 1, 0.00724539, 0.0562029, 0.99814, 0.0224795, 0.166667, 1, 0.00924759, 0.0723773, 0.996921, 0.0287044, 0.2, 1, 0.0114034, 0.0891756, 0.995332, 0.0351065, 0.233333, 1, 0.0137441, 0.106483, 0.993347, 0.0416508, 0.266667, 1, 0.0162967, 0.124184, 0.990949, 0.0483004, 0.3, 1, 0.0190824, 0.142162, 0.988129, 0.0550172, 0.466667, 1, 0.0368658, 0.232168, 0.967966, 0.0882052, 0.5, 1, 0.0411827, 0.249403, 0.9629, 0.0944781, 0.533333, 1, 0.0457228, 0.266132, 0.957589, 0.100536, 0.566667, 1, 0.0504626, 0.282251, 0.952092, 0.106342, 0.6, 1, 0.055374, 0.297662, 0.946477, 0.111859, 0.633333, 1, 0.0604243, 0.312271, 0.940816, 0.117055, 0.666667, 1, 0.0655784, 0.325986, 0.935186, 0.121899, 0.7, 1, 0.0707974, 0.338722, 0.929671, 0.126362, 0.733333, 1, 0.0760411, 0.350393, 0.924356, 0.130418, 0.766667, 1, 0.0812676, 0.36092, 0.919328, 0.134046, 0.8, 1, 0.0864348, 0.370224, 0.914676, 0.137224, 0.833333, 1, 0.0915014, 0.378228, 0.910488, 0.139937, 0.866667, 1, 0.0964269, 0.384857, 0.906849, 0.142167, 0.9, 1, 0.101173, 0.390035, 0.903841, 0.143904, 0.933333, 1, 0.105707, 0.393687, 0.901539, 0.145137, 0.966667, 1, 0.109996, 0.395732, 0.900013, 0.145855, 1, 1, 0.114017, 0.396089, 0.899323, 0.146051, 1.03333, 1, 0.117752, 0.394673, 0.899519, 0.145718, 1.06667, 1, 0.121188, 0.391393, 0.900635, 0.144852, 1.1, 1, 0.124325, 0.386151, 0.902692, 0.143446, 1.13333, 1, 0.127169, 0.378845, 0.905695, 0.141498, 1.16667, 1, 0.129348, 0.364895, 0.911715, 0.137463, 1.2, 1, 0.13083, 0.340513, 0.921943, 0.13021, 1.23333, 1, 0.132255, 0.306739, 0.934841, 0.120385, 1.26667, 1, 0.134328, 0.264662, 0.948735, 0.108686, 1.3, 1, 0.137706, 0.215501, 0.961979, 0.0958786, 1.33333, 1, 0.142908, 0.16065, 0.973096, 0.0827824, 1.36667, 1, 0.150245, 0.101673, 0.980896, 0.0702354, 1.46667, 1, 0.184332, -0.0828689, 0.978409, 0.0432409, 1.5, 1, 0.198263, -0.141298, 0.969109, 0.0394254, 1.53333, 1, 0.212306, -0.195717, 0.956632, 0.0384287, 1.56667, 1, 0.225636, -0.244979, 0.942059, 0.0399945, 1.6, 1, 0.237446, -0.288181, 0.926643, 0.0436369, 1.63333, 1, 0.247002, -0.324636, 0.911718, 0.0487026, 1.66667, 1, 0.253665, -0.353799, 0.898618, 0.0544569, 1.7, 1, 0.256902, -0.37517, 0.888609, 0.0601855, 1.73333, 1, 0.256263, -0.388172, 0.882829, 0.0653066, 1.76667, 1, 0.252802, -0.395454, 0.880243, 0.0698514, 1.8, 1, 0.247904, -0.400235, 0.879124, 0.0741365, 1.83333, 1, 0.241672, -0.402635, 0.879411, 0.0782047, 1.86667, 1, 0.234211, -0.402745, 0.881021, 0.0821266, 1.9, 1, 0.225626, -0.400638, 0.883848, 0.0859933, 1.93333, 1, 0.216027, -0.396373, 0.887771, 0.0899107, 1.96667, 1, 0.20553, -0.39, 0.892649, 0.0939935, 2, 1, 0.194257, -0.381565, 0.898331, 0.0983596, 2.03333, 1, 0.182333, -0.371119, 0.904649, 0.103125, 2.06667, 1, 0.169894, -0.358721, 0.91143, 0.108399, 2.1, 1, 0.157079, -0.344441, 0.918492, 0.11428, 2.13333, 1, 0.144032, -0.328365, 0.925649, 0.120851, 2.16667, 1, 0.130901, -0.310601, 0.932718, 0.128176, 2.2, 1, 0.117832, -0.291275, 0.93952, 0.136299, 2.23333, 1, 0.104969, -0.270539, 0.945884, 0.14524, 2.26667, 1, 0.0924481, -0.248565, 0.951654, 0.154994, 2.3, 1, 0.0803968, -0.225552, 0.956693, 0.165534, 2.33333, 1, 0.0689282, -0.201717, 0.960884, 0.176807, 2.43333, 1, 0.0388752, -0.127731, 0.967629, 0.214169, 2.46667, 1, 0.0304855, -0.103125, 0.967839, 0.227429, 2.5, 1, 0.0229382, -0.0790089, 0.967064, 0.240869, 2.53333, 1, 0.0162127, -0.0556646, 0.965375, 0.254342, 2.56667, 1, 0.0102641, -0.0333708, 0.962871, 0.267696, 2.6, 1, 0.00502536, -0.0124016, 0.959679, 0.280778, 2.63333, 1, 0.000408977, 0.00697631, 0.955953, 0.293438) +tracks/22/type = "rotation_3d" +tracks/22/imported = true +tracks/22/enabled = true +tracks/22/path = NodePath("%GeneralSkeleton:RightFoot") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/keys = PackedFloat32Array(0, 1, -2.10734e-08, 0.707107, -0.707107, 0, 0.733333, 1, -0.000468041, 0.64312, -0.765765, -9.29759e-05, 1.6, 1, -0.00101644, 0.561291, -0.827618, -0.000201894, 2.1, 1, -0.00132834, 0.511338, -0.859379, -0.000263797, 2.13333, 1, 0.00134893, -0.507942, 0.86139, 0.000267906, 2.16667, 1, 0.00136954, -0.504538, 0.863388, 0.000272037, 2.5, 1, 0.00157444, -0.470077, 0.882624, 0.000312772, 2.63333, 1, 0.00165578, -0.456084, 0.889935, 0.000328956) +tracks/23/type = "rotation_3d" +tracks/23/imported = true +tracks/23/enabled = true +tracks/23/path = NodePath("%GeneralSkeleton:Ball_R") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/keys = PackedFloat32Array(0, 1, -8.9407e-08, 7.3757e-08, 3.16101e-08, 1, 0.266667, 1, 0.0433182, -0.000505404, 0.000929022, 0.999061, 1.3, 1, 0.209674, -0.00244612, 0.00449686, 0.977758, 1.43333, 1, 0.230807, -0.00269264, 0.00495019, 0.972983, 2.23333, 1, 0.354986, -0.0041413, 0.00761329, 0.934832, 2.63333, 1, 0.414955, -0.00484101, 0.00889958, 0.909786) +tracks/24/type = "rotation_3d" +tracks/24/imported = true +tracks/24/enabled = true +tracks/24/path = NodePath("%GeneralSkeleton:LeftUpperLeg") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/keys = PackedFloat32Array(0, 1, 7.45058e-08, 4.47035e-08, 1, 4.47035e-08, 0.0333333, 1, 0.00116298, -0.0127143, 0.999903, -0.00560166, 0.0666667, 1, 0.00232196, -0.0265819, 0.999578, -0.011493, 0.1, 1, 0.00352292, -0.0414863, 0.998977, -0.0176456, 0.133333, 1, 0.00480925, -0.0573092, 0.998056, -0.0240303, 0.166667, 1, 0.00622079, -0.0739309, 0.996774, -0.0306161, 0.2, 1, 0.00779372, -0.0912296, 0.995098, -0.0373704, 0.233333, 1, 0.00955974, -0.109083, 0.993001, -0.0442593, 0.266667, 1, 0.0115458, -0.127367, 0.990464, -0.0512468, 0.3, 1, 0.0137734, -0.145957, 0.987476, -0.0582957, 0.466667, 1, 0.0288981, -0.239183, 0.966069, -0.0930987, 0.5, 1, 0.0327111, -0.25704, 0.960688, -0.0996962, 0.533333, 1, 0.0367569, -0.274364, 0.95505, -0.106084, 0.566667, 1, 0.041012, -0.291046, 0.949218, -0.112227, 0.6, 1, 0.0454484, -0.306981, 0.943266, -0.118093, 0.633333, 1, 0.050034, -0.322069, 0.937272, -0.123651, 0.666667, 1, 0.0547329, -0.336211, 0.931321, -0.128874, 0.7, 1, 0.0595066, -0.349314, 0.925501, -0.133737, 0.733333, 1, 0.0643143, -0.36129, 0.919907, -0.138218, 0.766667, 1, 0.0691138, -0.37205, 0.914633, -0.142299, 0.8, 1, 0.0738625, -0.381512, 0.909773, -0.145964, 0.833333, 1, 0.0785178, -0.389592, 0.905424, -0.1492, 0.866667, 1, 0.0830381, -0.396208, 0.901677, -0.151998, 0.9, 1, 0.0873842, -0.401278, 0.898619, -0.154348, 0.933333, 1, 0.0915195, -0.404719, 0.896334, -0.156244, 0.966667, 1, 0.095411, -0.406443, 0.894895, -0.157681, 1, 1, 0.0990308, -0.406362, 0.894367, -0.158656, 1.03333, 1, 0.102357, -0.404379, 0.894801, -0.159164, 1.06667, 1, 0.105372, -0.400393, 0.896235, -0.159204, 1.1, 1, 0.10807, -0.394295, 0.89869, -0.158772, 1.13333, 1, 0.110451, -0.38597, 0.902168, -0.157866, 1.16667, 1, 0.112012, -0.370446, 0.908944, -0.155061, 1.2, 1, 0.112595, -0.343578, 0.920319, -0.149298, 1.23333, 1, 0.112839, -0.306439, 0.934581, -0.14114, 1.26667, 1, 0.113448, -0.260148, 0.949864, -0.131194, 1.3, 1, 0.115079, -0.205974, 0.964312, -0.120139, 1.33333, 1, 0.118261, -0.14539, 0.976246, -0.108718, 1.36667, 1, 0.123318, -0.0800756, 0.984294, -0.0977082, 1.4, 1, 0.130329, -0.0118806, 0.987498, -0.0878657, 1.46667, 1, 0.149274, 0.125423, 0.978, -0.0741808, 1.5, 1, 0.160201, 0.1908, 0.965853, -0.0711258, 1.53333, 1, 0.171187, 0.251784, 0.949894, -0.0707237, 1.56667, 1, 0.181482, 0.307024, 0.931401, -0.0727555, 1.6, 1, 0.190365, 0.355438, 0.911883, -0.0767829, 1.63333, 1, 0.197198, 0.396185, 0.892968, -0.0822104, 1.66667, 1, 0.201452, 0.428596, 0.876306, -0.0883716, 1.7, 1, 0.202714, 0.452067, 0.863474, -0.0946297, 1.73333, 1, 0.200664, 0.465925, 0.855891, -0.100491, 1.76667, 1, 0.196224, 0.473181, 0.852273, -0.105958, 1.8, 1, 0.19056, 0.477505, 0.850468, -0.111265, 1.83333, 1, 0.183783, 0.479045, 0.850397, -0.116467, 1.86667, 1, 0.176006, 0.477918, 0.85195, -0.121642, 1.9, 1, 0.167341, 0.474223, 0.854991, -0.126888, 1.93333, 1, 0.157909, 0.468041, 0.859357, -0.132317, 1.96667, 1, 0.147831, 0.459446, 0.86487, -0.138044, 2, 1, 0.137236, 0.448511, 0.871329, -0.144186, 2.03333, 1, 0.126258, 0.43531, 0.878525, -0.150856, 2.06667, 1, 0.115036, 0.419929, 0.886236, -0.158154, 2.1, 1, 0.103715, 0.402467, 0.894232, -0.166169, 2.13333, 1, 0.092441, 0.383041, 0.902286, -0.174968, 2.16667, 1, 0.0813608, 0.361788, 0.910172, -0.1846, 2.2, 1, 0.0706186, 0.338871, 0.917671, -0.195088, 2.23333, 1, 0.0603517, 0.314475, 0.924581, -0.206431, 2.26667, 1, 0.0506871, 0.288811, 0.930716, -0.218601, 2.3, 1, 0.0417375, 0.262113, 0.935918, -0.231546, 2.33333, 1, 0.0335976, 0.234634, 0.940053, -0.245189, 2.43333, 1, 0.01464, 0.150314, 0.945266, -0.289248, 2.46667, 1, 0.010211, 0.122566, 0.944524, -0.304544, 2.5, 1, 0.00669087, 0.0955036, 0.942601, -0.319902, 2.53333, 1, 0.00401457, 0.0694272, 0.939587, -0.335171, 2.56667, 1, 0.00208964, 0.0446307, 0.935608, -0.350202, 2.6, 1, 0.000798151, 0.0213978, 0.930822, -0.364847, 2.63333, 1, 8.19564e-08, 8.9407e-08, 0.92541, -0.378968) +tracks/25/type = "rotation_3d" +tracks/25/imported = true +tracks/25/enabled = true +tracks/25/path = NodePath("%GeneralSkeleton:LeftFoot") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/keys = PackedFloat32Array(0, 1, 0, 0.707107, -0.707107, 0, 0.1, 1, -0.000253935, 0.698687, -0.715428, -7.93625e-05, 0.166667, 1, -0.000423112, 0.693019, -0.720919, -0.000132341, 0.433333, 1, -0.00109978, 0.669919, -0.742433, -0.000343876, 0.5, 1, -0.00126875, 0.664039, -0.747697, -0.000396813, 0.6, 1, -0.00152212, 0.655142, -0.755505, -0.000475954, 0.666667, 1, -0.00169085, 0.649159, -0.760651, -0.000528774, 0.733333, 1, -0.00185958, 0.643135, -0.76575, -0.000581521, 0.766667, 1, -0.0019438, 0.640109, -0.768282, -0.000607831, 0.8, 1, -0.00202813, 0.637072, -0.770802, -0.000634205, 0.9, 1, -0.00228069, 0.627902, -0.778288, -0.000713167, 0.966667, 1, -0.00244895, 0.621741, -0.783219, -0.000765734, 1.16667, 1, -0.00295272, 0.603024, -0.797717, -0.000923311, 1.23333, 1, -0.00312025, 0.596709, -0.802451, -0.000975647, 1.36667, 1, -0.00345475, 0.583969, -0.811768, -0.00108028, 1.43333, 1, -0.00362162, 0.577544, -0.816351, -0.00113251, 1.46667, 1, -0.00370507, 0.574318, -0.818624, -0.00115855, 1.5, 1, -0.00378841, 0.571083, -0.820883, -0.00118462, 1.6, 1, -0.00403807, 0.561325, -0.827585, -0.00126266, 1.66667, 1, -0.00420416, 0.554776, -0.831989, -0.00131461, 1.73333, 1, -0.00437003, 0.548192, -0.83634, -0.00136643, 1.8, 1, -0.00453553, 0.541574, -0.84064, -0.00141818, 1.86667, 1, -0.00470087, 0.534922, -0.844887, -0.00146993, 1.93333, 1, -0.0048659, 0.528237, -0.849082, -0.0015215, 2.03333, 1, -0.00511277, 0.518148, -0.855274, -0.00159869, 2.1, 1, -0.00527708, 0.511382, -0.859336, -0.00165009, 2.13333, 1, 0.00535903, -0.507987, 0.861347, 0.00167574, 2.2, 1, 0.00552275, -0.501172, 0.865328, 0.00172693, 2.26667, 1, 0.00568613, -0.494327, 0.869256, 0.00177802, 2.5, 1, 0.00625501, -0.470129, 0.882574, 0.00195591, 2.56667, 1, 0.00641678, -0.463148, 0.886256, 0.00200645, 2.63333, 1, 0.00657811, -0.456139, 0.889882, 0.00205693) +tracks/26/type = "rotation_3d" +tracks/26/imported = true +tracks/26/enabled = true +tracks/26/path = NodePath("%GeneralSkeleton:Ball_L") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/keys = PackedFloat32Array(0, 1, -8.9407e-08, 0, 0, 1, 0.0333333, 1, 0.00436914, 7.05486e-05, 5.27143e-09, 0.99999, 0.1, 1, 0.0131074, 0.000211551, -1.58034e-08, 0.999914, 0.166667, 1, 0.0218447, 0.000352506, -3.16213e-08, 0.999761, 0.266667, 1, 0.0349473, 0.000564067, -1.58034e-08, 0.999389, 0.366667, 1, 0.0480438, 0.000775323, -3.16068e-08, 0.998845, 0.5, 1, 0.0654925, 0.001057, 0, 0.997852, 0.566667, 1, 0.0742098, 0.0011977, -5.26779e-08, 0.997242, 0.766667, 1, 0.100325, 0.00161908, -5.2969e-09, 0.994953, 0.866667, 1, 0.113358, 0.00182946, -3.69037e-08, 0.993553, 0.966667, 1, 0.126371, 0.00203952, -7.38073e-08, 0.991981, 1.06667, 1, 0.139362, 0.00224919, -2.10712e-08, 0.990239, 1.16667, 1, 0.15233, 0.00245849, -2.10712e-08, 0.988327, 1.33333, 1, 0.173883, 0.00280629, 1.58325e-08, 0.984762, 1.43333, 1, 0.186776, 0.0030144, -1.57161e-08, 0.982398, 1.53333, 1, 0.199637, 0.00322184, -1.04774e-08, 0.979864, 1.66667, 1, 0.216731, 0.00349781, -4.74975e-08, 0.976225, 1.76667, 1, 0.229508, 0.00370404, -5.23869e-09, 0.9733, 1.83333, 1, 0.238005, 0.00384114, -4.21423e-08, 0.971256, 2.23333, 1, 0.288579, 0.00465731, 5.12227e-09, 0.957445, 2.33333, 1, 0.301104, 0.00485952, 1.58325e-08, 0.953579, 2.4, 1, 0.309425, 0.0049938, 1.04774e-08, 0.950911, 2.46667, 1, 0.317723, 0.00512772, -4.74975e-08, 0.94817, 2.53333, 1, 0.325996, 0.00526123, 4.74975e-08, 0.945356, 2.63333, 1, 0.33836, 0.00546076, 4.21423e-08, 0.941001) +tracks/27/type = "rotation_3d" +tracks/27/imported = true +tracks/27/enabled = true +tracks/27/path = NodePath("%GeneralSkeleton:Root") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1) +tracks/28/type = "rotation_3d" +tracks/28/imported = true +tracks/28/enabled = true +tracks/28/path = NodePath("%GeneralSkeleton:Hips") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1) +tracks/29/type = "rotation_3d" +tracks/29/imported = true +tracks/29/enabled = true +tracks/29/path = NodePath("%GeneralSkeleton:Head") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/keys = PackedFloat32Array(0, 1, -1.49012e-08, -1.49012e-08, -1.49012e-08, 1) +tracks/30/type = "rotation_3d" +tracks/30/imported = true +tracks/30/enabled = true +tracks/30/path = NodePath("%GeneralSkeleton:LeftHand") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/keys = PackedFloat32Array(0, 1, 2.56486e-09, 0.707107, 2.56486e-09, 0.707107) +tracks/31/type = "rotation_3d" +tracks/31/imported = true +tracks/31/enabled = true +tracks/31/path = NodePath("%GeneralSkeleton:LeftThumbMetacarpal") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/keys = PackedFloat32Array(0, 1, -0.214187, 0.673887, 0.214187, 0.673887) +tracks/32/type = "rotation_3d" +tracks/32/imported = true +tracks/32/enabled = true +tracks/32/path = NodePath("%GeneralSkeleton:LeftThumbProximal") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/keys = PackedFloat32Array(0, 1, 1.49012e-08, -1.77636e-15, 1.19209e-07, 1) +tracks/33/type = "rotation_3d" +tracks/33/imported = true +tracks/33/enabled = true +tracks/33/path = NodePath("%GeneralSkeleton:LeftThumbDistal") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/keys = PackedFloat32Array(0, 1, -1.49012e-08, 1.49012e-08, 0, 1) +tracks/34/type = "rotation_3d" +tracks/34/imported = true +tracks/34/enabled = true +tracks/34/path = NodePath("%GeneralSkeleton:LeftIndexProximal") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/keys = PackedFloat32Array(0, 1, -2.98023e-08, -2.98023e-08, 2.98023e-08, 1) +tracks/35/type = "rotation_3d" +tracks/35/imported = true +tracks/35/enabled = true +tracks/35/path = NodePath("%GeneralSkeleton:LeftIndexIntermediate") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/keys = PackedFloat32Array(0, 1, 2.98023e-08, 0, -7.45058e-08, 1) +tracks/36/type = "rotation_3d" +tracks/36/imported = true +tracks/36/enabled = true +tracks/36/path = NodePath("%GeneralSkeleton:LeftIndexDistal") +tracks/36/interp = 1 +tracks/36/loop_wrap = true +tracks/36/keys = PackedFloat32Array(0, 1, 5.96046e-08, -5.96046e-08, 1.19209e-07, 1) +tracks/37/type = "rotation_3d" +tracks/37/imported = true +tracks/37/enabled = true +tracks/37/path = NodePath("%GeneralSkeleton:LeftRingProximal") +tracks/37/interp = 1 +tracks/37/loop_wrap = true +tracks/37/keys = PackedFloat32Array(0, 1, 5.96046e-08, 0, 0, 1) +tracks/38/type = "rotation_3d" +tracks/38/imported = true +tracks/38/enabled = true +tracks/38/path = NodePath("%GeneralSkeleton:LeftRingIntermediate") +tracks/38/interp = 1 +tracks/38/loop_wrap = true +tracks/38/keys = PackedFloat32Array(0, 1, -2.98023e-08, -2.98023e-08, -2.98023e-08, 1) +tracks/39/type = "rotation_3d" +tracks/39/imported = true +tracks/39/enabled = true +tracks/39/path = NodePath("%GeneralSkeleton:LeftRingDistal") +tracks/39/interp = 1 +tracks/39/loop_wrap = true +tracks/39/keys = PackedFloat32Array(0, 1, -1.49012e-08, -4.47035e-08, -5.96046e-08, 1) +tracks/40/type = "rotation_3d" +tracks/40/imported = true +tracks/40/enabled = true +tracks/40/path = NodePath("%GeneralSkeleton:RightHand") +tracks/40/interp = 1 +tracks/40/loop_wrap = true +tracks/40/keys = PackedFloat32Array(0, 1, 4.20274e-09, -0.707107, -4.20274e-09, 0.707107) +tracks/41/type = "rotation_3d" +tracks/41/imported = true +tracks/41/enabled = true +tracks/41/path = NodePath("%GeneralSkeleton:LeftLowerLeg") +tracks/41/interp = 1 +tracks/41/loop_wrap = true +tracks/41/keys = PackedFloat32Array(0, 1, 5.96046e-08, 1, -2.97124e-08, 4.05683e-09) +tracks/42/type = "rotation_3d" +tracks/42/imported = true +tracks/42/enabled = true +tracks/42/path = NodePath("%GeneralSkeleton:LeftToes") +tracks/42/interp = 1 +tracks/42/loop_wrap = true +tracks/42/keys = PackedFloat32Array(0, 1, -7.28058e-08, 1, 0, 7.28058e-08) +tracks/43/type = "rotation_3d" +tracks/43/imported = true +tracks/43/enabled = true +tracks/43/path = NodePath("%GeneralSkeleton:RightLowerLeg") +tracks/43/interp = 1 +tracks/43/loop_wrap = true +tracks/43/keys = PackedFloat32Array(0, 1, -5.96046e-08, 1, -8.34157e-09, -2.2392e-08) +tracks/44/type = "rotation_3d" +tracks/44/imported = true +tracks/44/enabled = true +tracks/44/path = NodePath("%GeneralSkeleton:RightToes") +tracks/44/interp = 1 +tracks/44/loop_wrap = true +tracks/44/keys = PackedFloat32Array(0, 1, -6.17226e-09, 1, 0, -6.17226e-09) + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_eyw6x"] +_data = { +"Take 001": SubResource("Animation_62nln") +} + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_3b5eb"] +animation = &"BasicMotions@Idle01/BasicMotions_Idle01_ClosedHands" + +[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_idcvn"] +graph_offset = Vector2(-154, 108) +nodes/Animation/node = SubResource("AnimationNodeAnimation_3b5eb") +nodes/Animation/position = Vector2(-320, 140) +node_connections = [&"output", 0, &"Animation"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5wf40"] +advance_mode = 2 [sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7e1iu"] -graph_offset = Vector2(-457, 44) +states/BlendTree/node = SubResource("AnimationNodeBlendTree_idcvn") +states/BlendTree/position = Vector2(389, 112) +states/Start/position = Vector2(227, 112) +transitions = ["Start", "BlendTree", SubResource("AnimationNodeStateMachineTransition_5wf40")] +graph_offset = Vector2(-219, -1) [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hqeid"] radius = 0.548248 @@ -11,9 +352,9 @@ height = 1.85415 [node name="Player" type="Player"] active_customization = { -"ArmLowerLeft": 8, -"ArmLowerRight": 0, -"ArmUpperLeft": 0, +"ArmLowerLeft": 2, +"ArmLowerRight": 3, +"ArmUpperLeft": 1, "ArmUpperRight": 3, "BackAttachment": 1, "Ear": -1, @@ -38,11 +379,1358 @@ active_customization = { } slide_on_ceiling = false -[node name="Model" parent="." instance=ExtResource("1_b4mv3")] - [node name="AnimationTree" type="AnimationTree" parent="."] +root_node = NodePath("../Model") +libraries = { +"": SubResource("AnimationLibrary_eyw6x"), +"BasicMotions@Idle01": ExtResource("1_wqiit") +} tree_root = SubResource("AnimationNodeStateMachine_7e1iu") +advance_expression_base_node = NodePath("..") +anim_player = NodePath("../Model/AnimationPlayer") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.925894, 0) shape = SubResource("CapsuleShape3D_hqeid") + +[node name="PlayerInput" type="PlayerInput" parent="."] + +[node name="Model" parent="." instance=ExtResource("1_b4mv3")] + +[node name="GeneralSkeleton" parent="Model/RootNode" index="0"] +bones/0/rotation = Quaternion(-2.98023e-08, 5.55112e-17, 5.55112e-17, 1) +bones/1/position = Vector3(0.0088738, 0.823063, -0.0171585) +bones/1/rotation = Quaternion(-0.0172656, -0.0722843, 0.00632022, 0.997215) +bones/2/rotation = Quaternion(0.00906533, 0.00637064, 0.000263158, 0.999939) +bones/3/rotation = Quaternion(0.00894442, 0.00637058, 0.000265375, 0.99994) +bones/4/rotation = Quaternion(0.00916765, 0.0063708, 0.00026108, 0.999938) +bones/5/rotation = Quaternion(-0.0122992, 0.0265571, -0.00409385, 0.999563) +bones/6/rotation = Quaternion(-0.0123002, 0.0265571, -0.00409374, 0.999563) +bones/10/rotation = Quaternion(0.519859, 0.470118, 0.477057, -0.530238) +bones/11/rotation = Quaternion(0.238677, 0.843867, -0.452169, -0.162682) +bones/12/rotation = Quaternion(-0.0217123, -0.701667, -0.0218952, 0.711837) +bones/13/rotation = Quaternion(-0.0456982, 0.569854, -0.146863, 0.807224) +bones/14/rotation = Quaternion(-0.256269, 0.776338, 0.203807, 0.538599) +bones/15/rotation = Quaternion(0.14485, 0.51961, 0.145065, 0.829446) +bones/16/rotation = Quaternion(0.159353, 0.516644, 0.140377, 0.829446) +bones/17/rotation = Quaternion(0.562686, 0.294306, 0.100607, 0.765929) +bones/18/rotation = Quaternion(0.502395, 0.2256, 0.0741341, 0.831389) +bones/19/rotation = Quaternion(0.49701, 0.238709, 0.0692159, 0.831389) +bones/21/rotation = Quaternion(0.494946, 0.0399225, 0.106743, 0.861418) +bones/22/rotation = Quaternion(0.554517, 0.0271624, 0.0237916, 0.831389) +bones/23/rotation = Quaternion(0.554045, 0.0389721, 0.0175394, 0.831389) +bones/27/rotation = Quaternion(0.5168, -0.475173, -0.481158, -0.52499) +bones/28/rotation = Quaternion(-0.132163, 0.858452, -0.457619, 0.190205) +bones/29/rotation = Quaternion(0.00506691, 0.708274, -0.00510919, 0.705901) +bones/30/rotation = Quaternion(0.0116492, -0.584682, 0.0637451, 0.808671) +bones/31/rotation = Quaternion(-0.256268, -0.776338, -0.203807, 0.538599) +bones/32/rotation = Quaternion(0.14485, -0.51961, -0.145065, 0.829446) +bones/33/rotation = Quaternion(0.159352, -0.516644, -0.140377, 0.829446) +bones/34/rotation = Quaternion(0.562686, -0.294306, -0.100607, 0.765929) +bones/35/rotation = Quaternion(0.502395, -0.2256, -0.074134, 0.831389) +bones/36/rotation = Quaternion(0.49701, -0.238709, -0.0692157, 0.831389) +bones/38/rotation = Quaternion(0.494946, -0.0399222, -0.106743, 0.861418) +bones/39/rotation = Quaternion(0.554517, -0.0271621, -0.0237913, 0.831389) +bones/40/rotation = Quaternion(0.554045, -0.0389717, -0.0175393, 0.831389) +bones/50/rotation = Quaternion(-0.0963603, 0.0440981, 0.990983, 0.0819873) +bones/50/scale = Vector3(1.00002, 0.999999, 1) +bones/51/rotation = Quaternion(0.00959858, 0.960804, -0.277045, -0.00295932) +bones/51/scale = Vector3(1.00002, 0.999999, 1.00002) +bones/52/rotation = Quaternion(0.0800893, 0.537878, -0.839045, -0.0166244) +bones/52/scale = Vector3(0.999948, 0.999973, 1.00001) +bones/54/rotation = Quaternion(9.7728e-07, 1, -1.50204e-05, 3.50609e-06) +bones/54/scale = Vector3(0.999999, 0.999986, 1.00002) +bones/56/rotation = Quaternion(0.174308, 0.140952, 0.971107, -0.081863) +bones/56/scale = Vector3(1.00002, 0.999999, 1) +bones/57/rotation = Quaternion(-0.0102774, 0.954933, -0.296628, 0.00316872) +bones/57/scale = Vector3(1.00001, 0.999999, 1.00001) +bones/58/rotation = Quaternion(-0.0667033, 0.607529, -0.79119, 0.0218499) +bones/58/scale = Vector3(0.999956, 0.999987, 1.00001) +bones/60/rotation = Quaternion(-6.79618e-07, 1, -9.98378e-06, -2.30227e-06) +bones/60/scale = Vector3(0.999999, 0.999991, 1.00001) + +[node name="Chr_HeadCoverings_No_Hair_01" parent="Model/RootNode/GeneralSkeleton" index="0"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_02" parent="Model/RootNode/GeneralSkeleton" index="1"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_03" parent="Model/RootNode/GeneralSkeleton" index="2"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_04" parent="Model/RootNode/GeneralSkeleton" index="3"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_05" parent="Model/RootNode/GeneralSkeleton" index="4"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_06" parent="Model/RootNode/GeneralSkeleton" index="5"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_07" parent="Model/RootNode/GeneralSkeleton" index="6"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_08" parent="Model/RootNode/GeneralSkeleton" index="7"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_09" parent="Model/RootNode/GeneralSkeleton" index="8"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_10" parent="Model/RootNode/GeneralSkeleton" index="9"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_11" parent="Model/RootNode/GeneralSkeleton" index="10"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_12" parent="Model/RootNode/GeneralSkeleton" index="11"] +visible = false + +[node name="Chr_HeadCoverings_No_Hair_13" parent="Model/RootNode/GeneralSkeleton" index="12"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_01" parent="Model/RootNode/GeneralSkeleton" index="13"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_02" parent="Model/RootNode/GeneralSkeleton" index="14"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_03" parent="Model/RootNode/GeneralSkeleton" index="15"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_04" parent="Model/RootNode/GeneralSkeleton" index="16"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_05" parent="Model/RootNode/GeneralSkeleton" index="17"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_06" parent="Model/RootNode/GeneralSkeleton" index="18"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_07" parent="Model/RootNode/GeneralSkeleton" index="19"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_08" parent="Model/RootNode/GeneralSkeleton" index="20"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_09" parent="Model/RootNode/GeneralSkeleton" index="21"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_10" parent="Model/RootNode/GeneralSkeleton" index="22"] +visible = false + +[node name="Chr_HeadCoverings_Base_Hair_11" parent="Model/RootNode/GeneralSkeleton" index="23"] +visible = false + +[node name="Chr_HeadCoverings_No_FacialHair_01" parent="Model/RootNode/GeneralSkeleton" index="24"] +visible = false + +[node name="Chr_HeadCoverings_No_FacialHair_02" parent="Model/RootNode/GeneralSkeleton" index="25"] +visible = false + +[node name="Chr_HeadCoverings_No_FacialHair_03" parent="Model/RootNode/GeneralSkeleton" index="26"] +visible = false + +[node name="Chr_HeadCoverings_No_FacialHair_04" parent="Model/RootNode/GeneralSkeleton" index="27"] +visible = false + +[node name="Chr_Hair_01" parent="Model/RootNode/GeneralSkeleton" index="28"] +visible = false + +[node name="Chr_Hair_02" parent="Model/RootNode/GeneralSkeleton" index="29"] +visible = false + +[node name="Chr_Hair_03" parent="Model/RootNode/GeneralSkeleton" index="30"] +visible = false + +[node name="Chr_Hair_04" parent="Model/RootNode/GeneralSkeleton" index="31"] +visible = false + +[node name="Chr_Hair_05" parent="Model/RootNode/GeneralSkeleton" index="32"] +visible = false + +[node name="Chr_Hair_06" parent="Model/RootNode/GeneralSkeleton" index="33"] +visible = false + +[node name="Chr_Hair_07" parent="Model/RootNode/GeneralSkeleton" index="34"] +visible = false + +[node name="Chr_Hair_08" parent="Model/RootNode/GeneralSkeleton" index="35"] +visible = false + +[node name="Chr_Hair_09" parent="Model/RootNode/GeneralSkeleton" index="36"] +visible = false + +[node name="Chr_Hair_10" parent="Model/RootNode/GeneralSkeleton" index="37"] +visible = false + +[node name="Chr_Hair_11" parent="Model/RootNode/GeneralSkeleton" index="38"] +visible = false + +[node name="Chr_Hair_12" parent="Model/RootNode/GeneralSkeleton" index="39"] +visible = false + +[node name="Chr_Hair_13" parent="Model/RootNode/GeneralSkeleton" index="40"] +visible = false + +[node name="Chr_Hair_15" parent="Model/RootNode/GeneralSkeleton" index="42"] +visible = false + +[node name="Chr_Hair_16" parent="Model/RootNode/GeneralSkeleton" index="43"] +visible = false + +[node name="Chr_Hair_17" parent="Model/RootNode/GeneralSkeleton" index="44"] +visible = false + +[node name="Chr_Hair_18" parent="Model/RootNode/GeneralSkeleton" index="45"] +visible = false + +[node name="Chr_Hair_19" parent="Model/RootNode/GeneralSkeleton" index="46"] +visible = false + +[node name="Chr_Hair_20" parent="Model/RootNode/GeneralSkeleton" index="47"] +visible = false + +[node name="Chr_Hair_21" parent="Model/RootNode/GeneralSkeleton" index="48"] +visible = false + +[node name="Chr_Hair_22" parent="Model/RootNode/GeneralSkeleton" index="49"] +visible = false + +[node name="Chr_Hair_23" parent="Model/RootNode/GeneralSkeleton" index="50"] +visible = false + +[node name="Chr_Hair_24" parent="Model/RootNode/GeneralSkeleton" index="51"] +visible = false + +[node name="Chr_Hair_25" parent="Model/RootNode/GeneralSkeleton" index="52"] +visible = false + +[node name="Chr_Hair_26" parent="Model/RootNode/GeneralSkeleton" index="53"] +visible = false + +[node name="Chr_Hair_27" parent="Model/RootNode/GeneralSkeleton" index="54"] +visible = false + +[node name="Chr_Hair_28" parent="Model/RootNode/GeneralSkeleton" index="55"] +visible = false + +[node name="Chr_Hair_29" parent="Model/RootNode/GeneralSkeleton" index="56"] +visible = false + +[node name="Chr_Hair_30" parent="Model/RootNode/GeneralSkeleton" index="57"] +visible = false + +[node name="Chr_Hair_31" parent="Model/RootNode/GeneralSkeleton" index="58"] +visible = false + +[node name="Chr_Hair_32" parent="Model/RootNode/GeneralSkeleton" index="59"] +visible = false + +[node name="Chr_Hair_33" parent="Model/RootNode/GeneralSkeleton" index="60"] +visible = false + +[node name="Chr_Hair_34" parent="Model/RootNode/GeneralSkeleton" index="61"] +visible = false + +[node name="Chr_Hair_35" parent="Model/RootNode/GeneralSkeleton" index="62"] +visible = false + +[node name="Chr_Hair_36" parent="Model/RootNode/GeneralSkeleton" index="63"] +visible = false + +[node name="Chr_Hair_37" parent="Model/RootNode/GeneralSkeleton" index="64"] +visible = false + +[node name="Chr_Hair_38" parent="Model/RootNode/GeneralSkeleton" index="65"] +visible = false + +[node name="Chr_HelmetAttachment_01" parent="Model/RootNode/GeneralSkeleton" index="66"] +visible = false + +[node name="Chr_HelmetAttachment_02" parent="Model/RootNode/GeneralSkeleton" index="67"] +visible = false + +[node name="Chr_HelmetAttachment_03" parent="Model/RootNode/GeneralSkeleton" index="68"] +visible = false + +[node name="Chr_HelmetAttachment_04" parent="Model/RootNode/GeneralSkeleton" index="69"] +visible = false + +[node name="Chr_HelmetAttachment_05" parent="Model/RootNode/GeneralSkeleton" index="70"] +visible = false + +[node name="Chr_HelmetAttachment_06" parent="Model/RootNode/GeneralSkeleton" index="71"] +visible = false + +[node name="Chr_HelmetAttachment_07" parent="Model/RootNode/GeneralSkeleton" index="72"] +visible = false + +[node name="Chr_HelmetAttachment_08" parent="Model/RootNode/GeneralSkeleton" index="73"] +visible = false + +[node name="Chr_HelmetAttachment_09" parent="Model/RootNode/GeneralSkeleton" index="74"] +visible = false + +[node name="Chr_HelmetAttachment_10" parent="Model/RootNode/GeneralSkeleton" index="75"] +visible = false + +[node name="Chr_HelmetAttachment_11" parent="Model/RootNode/GeneralSkeleton" index="76"] +visible = false + +[node name="Chr_HelmetAttachment_12" parent="Model/RootNode/GeneralSkeleton" index="77"] +visible = false + +[node name="Chr_HelmetAttachment_13" parent="Model/RootNode/GeneralSkeleton" index="78"] +visible = false + +[node name="Chr_BackAttachment_01" parent="Model/RootNode/GeneralSkeleton" index="79"] +visible = false + +[node name="Chr_BackAttachment_03" parent="Model/RootNode/GeneralSkeleton" index="81"] +visible = false + +[node name="Chr_BackAttachment_04" parent="Model/RootNode/GeneralSkeleton" index="82"] +visible = false + +[node name="Chr_BackAttachment_05" parent="Model/RootNode/GeneralSkeleton" index="83"] +visible = false + +[node name="Chr_BackAttachment_06" parent="Model/RootNode/GeneralSkeleton" index="84"] +visible = false + +[node name="Chr_BackAttachment_07" parent="Model/RootNode/GeneralSkeleton" index="85"] +visible = false + +[node name="Chr_BackAttachment_08" parent="Model/RootNode/GeneralSkeleton" index="86"] +visible = false + +[node name="Chr_BackAttachment_09" parent="Model/RootNode/GeneralSkeleton" index="87"] +visible = false + +[node name="Chr_BackAttachment_10" parent="Model/RootNode/GeneralSkeleton" index="88"] +visible = false + +[node name="Chr_BackAttachment_11" parent="Model/RootNode/GeneralSkeleton" index="89"] +visible = false + +[node name="Chr_BackAttachment_12" parent="Model/RootNode/GeneralSkeleton" index="90"] +visible = false + +[node name="Chr_BackAttachment_13" parent="Model/RootNode/GeneralSkeleton" index="91"] +visible = false + +[node name="Chr_BackAttachment_14" parent="Model/RootNode/GeneralSkeleton" index="92"] +visible = false + +[node name="Chr_BackAttachment_15" parent="Model/RootNode/GeneralSkeleton" index="93"] +visible = false + +[node name="Chr_ShoulderAttachRight_01" parent="Model/RootNode/GeneralSkeleton" index="94"] +visible = false + +[node name="Chr_ShoulderAttachRight_02" parent="Model/RootNode/GeneralSkeleton" index="95"] +visible = false + +[node name="Chr_ShoulderAttachRight_03" parent="Model/RootNode/GeneralSkeleton" index="96"] +visible = false + +[node name="Chr_ShoulderAttachRight_04" parent="Model/RootNode/GeneralSkeleton" index="97"] +visible = false + +[node name="Chr_ShoulderAttachRight_05" parent="Model/RootNode/GeneralSkeleton" index="98"] +visible = false + +[node name="Chr_ShoulderAttachRight_06" parent="Model/RootNode/GeneralSkeleton" index="99"] +visible = false + +[node name="Chr_ShoulderAttachRight_07" parent="Model/RootNode/GeneralSkeleton" index="100"] +visible = false + +[node name="Chr_ShoulderAttachRight_08" parent="Model/RootNode/GeneralSkeleton" index="101"] +visible = false + +[node name="Chr_ShoulderAttachRight_09" parent="Model/RootNode/GeneralSkeleton" index="102"] +visible = false + +[node name="Chr_ShoulderAttachRight_10" parent="Model/RootNode/GeneralSkeleton" index="103"] +visible = false + +[node name="Chr_ShoulderAttachRight_11" parent="Model/RootNode/GeneralSkeleton" index="104"] +visible = false + +[node name="Chr_ShoulderAttachRight_12" parent="Model/RootNode/GeneralSkeleton" index="105"] +visible = false + +[node name="Chr_ShoulderAttachRight_13" parent="Model/RootNode/GeneralSkeleton" index="106"] +visible = false + +[node name="Chr_ShoulderAttachRight_14" parent="Model/RootNode/GeneralSkeleton" index="107"] +visible = false + +[node name="Chr_ShoulderAttachRight_15" parent="Model/RootNode/GeneralSkeleton" index="108"] +visible = false + +[node name="Chr_ShoulderAttachRight_16" parent="Model/RootNode/GeneralSkeleton" index="109"] +visible = false + +[node name="Chr_ShoulderAttachRight_17" parent="Model/RootNode/GeneralSkeleton" index="110"] +visible = false + +[node name="Chr_ShoulderAttachRight_18" parent="Model/RootNode/GeneralSkeleton" index="111"] +visible = false + +[node name="Chr_ShoulderAttachRight_19" parent="Model/RootNode/GeneralSkeleton" index="112"] +visible = false + +[node name="Chr_ShoulderAttachRight_20" parent="Model/RootNode/GeneralSkeleton" index="113"] +visible = false + +[node name="Chr_ShoulderAttachRight_21" parent="Model/RootNode/GeneralSkeleton" index="114"] +visible = false + +[node name="Chr_ShoulderAttachLeft_01" parent="Model/RootNode/GeneralSkeleton" index="115"] +visible = false + +[node name="Chr_ShoulderAttachLeft_02" parent="Model/RootNode/GeneralSkeleton" index="116"] +visible = false + +[node name="Chr_ShoulderAttachLeft_03" parent="Model/RootNode/GeneralSkeleton" index="117"] +visible = false + +[node name="Chr_ShoulderAttachLeft_04" parent="Model/RootNode/GeneralSkeleton" index="118"] +visible = false + +[node name="Chr_ShoulderAttachLeft_05" parent="Model/RootNode/GeneralSkeleton" index="119"] +visible = false + +[node name="Chr_ShoulderAttachLeft_06" parent="Model/RootNode/GeneralSkeleton" index="120"] +visible = false + +[node name="Chr_ShoulderAttachLeft_07" parent="Model/RootNode/GeneralSkeleton" index="121"] +visible = false + +[node name="Chr_ShoulderAttachLeft_08" parent="Model/RootNode/GeneralSkeleton" index="122"] +visible = false + +[node name="Chr_ShoulderAttachLeft_09" parent="Model/RootNode/GeneralSkeleton" index="123"] +visible = false + +[node name="Chr_ShoulderAttachLeft_10" parent="Model/RootNode/GeneralSkeleton" index="124"] +visible = false + +[node name="Chr_ShoulderAttachLeft_11" parent="Model/RootNode/GeneralSkeleton" index="125"] +visible = false + +[node name="Chr_ShoulderAttachLeft_12" parent="Model/RootNode/GeneralSkeleton" index="126"] +visible = false + +[node name="Chr_ShoulderAttachLeft_13" parent="Model/RootNode/GeneralSkeleton" index="127"] +visible = false + +[node name="Chr_ShoulderAttachLeft_14" parent="Model/RootNode/GeneralSkeleton" index="128"] +visible = false + +[node name="Chr_ShoulderAttachLeft_15" parent="Model/RootNode/GeneralSkeleton" index="129"] +visible = false + +[node name="Chr_ShoulderAttachLeft_16" parent="Model/RootNode/GeneralSkeleton" index="130"] +visible = false + +[node name="Chr_ShoulderAttachLeft_18" parent="Model/RootNode/GeneralSkeleton" index="132"] +visible = false + +[node name="Chr_ShoulderAttachLeft_19" parent="Model/RootNode/GeneralSkeleton" index="133"] +visible = false + +[node name="Chr_ShoulderAttachLeft_20" parent="Model/RootNode/GeneralSkeleton" index="134"] +visible = false + +[node name="Chr_ShoulderAttachLeft_21" parent="Model/RootNode/GeneralSkeleton" index="135"] +visible = false + +[node name="Chr_ElbowAttachRight_01" parent="Model/RootNode/GeneralSkeleton" index="136"] +visible = false + +[node name="Chr_ElbowAttachRight_02" parent="Model/RootNode/GeneralSkeleton" index="137"] +visible = false + +[node name="Chr_ElbowAttachRight_03" parent="Model/RootNode/GeneralSkeleton" index="138"] +visible = false + +[node name="Chr_ElbowAttachRight_04" parent="Model/RootNode/GeneralSkeleton" index="139"] +visible = false + +[node name="Chr_ElbowAttachRight_05" parent="Model/RootNode/GeneralSkeleton" index="140"] +visible = false + +[node name="Chr_ElbowAttachRight_06" parent="Model/RootNode/GeneralSkeleton" index="141"] +visible = false + +[node name="Chr_ElbowAttachLeft_01" parent="Model/RootNode/GeneralSkeleton" index="142"] +visible = false + +[node name="Chr_ElbowAttachLeft_02" parent="Model/RootNode/GeneralSkeleton" index="143"] +visible = false + +[node name="Chr_ElbowAttachLeft_03" parent="Model/RootNode/GeneralSkeleton" index="144"] +visible = false + +[node name="Chr_ElbowAttachLeft_04" parent="Model/RootNode/GeneralSkeleton" index="145"] +visible = false + +[node name="Chr_ElbowAttachLeft_05" parent="Model/RootNode/GeneralSkeleton" index="146"] +visible = false + +[node name="Chr_ElbowAttachLeft_06" parent="Model/RootNode/GeneralSkeleton" index="147"] +visible = false + +[node name="Chr_HipsAttachment_01" parent="Model/RootNode/GeneralSkeleton" index="148"] +visible = false + +[node name="Chr_HipsAttachment_02" parent="Model/RootNode/GeneralSkeleton" index="149"] +visible = false + +[node name="Chr_HipsAttachment_03" parent="Model/RootNode/GeneralSkeleton" index="150"] +visible = false + +[node name="Chr_HipsAttachment_05" parent="Model/RootNode/GeneralSkeleton" index="152"] +visible = false + +[node name="Chr_HipsAttachment_06" parent="Model/RootNode/GeneralSkeleton" index="153"] +visible = false + +[node name="Chr_HipsAttachment_07" parent="Model/RootNode/GeneralSkeleton" index="154"] +visible = false + +[node name="Chr_HipsAttachment_08" parent="Model/RootNode/GeneralSkeleton" index="155"] +visible = false + +[node name="Chr_HipsAttachment_09" parent="Model/RootNode/GeneralSkeleton" index="156"] +visible = false + +[node name="Chr_HipsAttachment_10" parent="Model/RootNode/GeneralSkeleton" index="157"] +visible = false + +[node name="Chr_HipsAttachment_11" parent="Model/RootNode/GeneralSkeleton" index="158"] +visible = false + +[node name="Chr_HipsAttachment_12" parent="Model/RootNode/GeneralSkeleton" index="159"] +visible = false + +[node name="Chr_KneeAttachRight_01" parent="Model/RootNode/GeneralSkeleton" index="160"] +visible = false + +[node name="Chr_KneeAttachRight_02" parent="Model/RootNode/GeneralSkeleton" index="161"] +visible = false + +[node name="Chr_KneeAttachRight_03" parent="Model/RootNode/GeneralSkeleton" index="162"] +visible = false + +[node name="Chr_KneeAttachRight_04" parent="Model/RootNode/GeneralSkeleton" index="163"] +visible = false + +[node name="Chr_KneeAttachRight_05" parent="Model/RootNode/GeneralSkeleton" index="164"] +visible = false + +[node name="Chr_KneeAttachRight_06" parent="Model/RootNode/GeneralSkeleton" index="165"] +visible = false + +[node name="Chr_KneeAttachRight_07" parent="Model/RootNode/GeneralSkeleton" index="166"] +visible = false + +[node name="Chr_KneeAttachRight_08" parent="Model/RootNode/GeneralSkeleton" index="167"] +visible = false + +[node name="Chr_KneeAttachRight_09" parent="Model/RootNode/GeneralSkeleton" index="168"] +visible = false + +[node name="Chr_KneeAttachRight_10" parent="Model/RootNode/GeneralSkeleton" index="169"] +visible = false + +[node name="Chr_KneeAttachRight_11" parent="Model/RootNode/GeneralSkeleton" index="170"] +visible = false + +[node name="Chr_KneeAttachLeft_01" parent="Model/RootNode/GeneralSkeleton" index="171"] +visible = false + +[node name="Chr_KneeAttachLeft_02" parent="Model/RootNode/GeneralSkeleton" index="172"] +visible = false + +[node name="Chr_KneeAttachLeft_03" parent="Model/RootNode/GeneralSkeleton" index="173"] +visible = false + +[node name="Chr_KneeAttachLeft_04" parent="Model/RootNode/GeneralSkeleton" index="174"] +visible = false + +[node name="Chr_KneeAttachLeft_05" parent="Model/RootNode/GeneralSkeleton" index="175"] +visible = false + +[node name="Chr_KneeAttachLeft_06" parent="Model/RootNode/GeneralSkeleton" index="176"] +visible = false + +[node name="Chr_KneeAttachLeft_07" parent="Model/RootNode/GeneralSkeleton" index="177"] +visible = false + +[node name="Chr_KneeAttachLeft_08" parent="Model/RootNode/GeneralSkeleton" index="178"] +visible = false + +[node name="Chr_KneeAttachLeft_09" parent="Model/RootNode/GeneralSkeleton" index="179"] +visible = false + +[node name="Chr_KneeAttachLeft_10" parent="Model/RootNode/GeneralSkeleton" index="180"] +visible = false + +[node name="Chr_KneeAttachLeft_11" parent="Model/RootNode/GeneralSkeleton" index="181"] +visible = false + +[node name="Chr_Ear_Ear_01" parent="Model/RootNode/GeneralSkeleton" index="182"] +visible = false + +[node name="Chr_Ear_Ear_02" parent="Model/RootNode/GeneralSkeleton" index="183"] +visible = false + +[node name="Chr_Ear_Ear_03" parent="Model/RootNode/GeneralSkeleton" index="184"] +visible = false + +[node name="Chr_Head_No_Elements_Female_01" parent="Model/RootNode/GeneralSkeleton" index="185"] +visible = false + +[node name="Chr_Head_No_Elements_Female_02" parent="Model/RootNode/GeneralSkeleton" index="186"] +visible = false + +[node name="Chr_Head_No_Elements_Female_03" parent="Model/RootNode/GeneralSkeleton" index="187"] +visible = false + +[node name="Chr_Head_No_Elements_Female_04" parent="Model/RootNode/GeneralSkeleton" index="188"] +visible = false + +[node name="Chr_Head_No_Elements_Female_05" parent="Model/RootNode/GeneralSkeleton" index="189"] +visible = false + +[node name="Chr_Head_No_Elements_Female_06" parent="Model/RootNode/GeneralSkeleton" index="190"] +visible = false + +[node name="Chr_Head_No_Elements_Female_07" parent="Model/RootNode/GeneralSkeleton" index="191"] +visible = false + +[node name="Chr_Head_No_Elements_Female_08" parent="Model/RootNode/GeneralSkeleton" index="192"] +visible = false + +[node name="Chr_Head_No_Elements_Female_09" parent="Model/RootNode/GeneralSkeleton" index="193"] +visible = false + +[node name="Chr_Head_No_Elements_Female_10" parent="Model/RootNode/GeneralSkeleton" index="194"] +visible = false + +[node name="Chr_Head_No_Elements_Female_11" parent="Model/RootNode/GeneralSkeleton" index="195"] +visible = false + +[node name="Chr_Head_No_Elements_Female_12" parent="Model/RootNode/GeneralSkeleton" index="196"] +visible = false + +[node name="Chr_Head_No_Elements_Female_13" parent="Model/RootNode/GeneralSkeleton" index="197"] +visible = false + +[node name="Chr_Head_Female_00" parent="Model/RootNode/GeneralSkeleton" index="198"] +visible = false + +[node name="Chr_Head_Female_01" parent="Model/RootNode/GeneralSkeleton" index="199"] +visible = false + +[node name="Chr_Head_Female_03" parent="Model/RootNode/GeneralSkeleton" index="201"] +visible = false + +[node name="Chr_Head_Female_04" parent="Model/RootNode/GeneralSkeleton" index="202"] +visible = false + +[node name="Chr_Head_Female_05" parent="Model/RootNode/GeneralSkeleton" index="203"] +visible = false + +[node name="Chr_Head_Female_06" parent="Model/RootNode/GeneralSkeleton" index="204"] +visible = false + +[node name="Chr_Head_Female_07" parent="Model/RootNode/GeneralSkeleton" index="205"] +visible = false + +[node name="Chr_Head_Female_08" parent="Model/RootNode/GeneralSkeleton" index="206"] +visible = false + +[node name="Chr_Head_Female_09" parent="Model/RootNode/GeneralSkeleton" index="207"] +visible = false + +[node name="Chr_Head_Female_10" parent="Model/RootNode/GeneralSkeleton" index="208"] +visible = false + +[node name="Chr_Head_Female_11" parent="Model/RootNode/GeneralSkeleton" index="209"] +visible = false + +[node name="Chr_Head_Female_12" parent="Model/RootNode/GeneralSkeleton" index="210"] +visible = false + +[node name="Chr_Head_Female_13" parent="Model/RootNode/GeneralSkeleton" index="211"] +visible = false + +[node name="Chr_Head_Female_14" parent="Model/RootNode/GeneralSkeleton" index="212"] +visible = false + +[node name="Chr_Head_Female_15" parent="Model/RootNode/GeneralSkeleton" index="213"] +visible = false + +[node name="Chr_Head_Female_16" parent="Model/RootNode/GeneralSkeleton" index="214"] +visible = false + +[node name="Chr_Head_Female_17" parent="Model/RootNode/GeneralSkeleton" index="215"] +visible = false + +[node name="Chr_Head_Female_18" parent="Model/RootNode/GeneralSkeleton" index="216"] +visible = false + +[node name="Chr_Head_Female_19" parent="Model/RootNode/GeneralSkeleton" index="217"] +visible = false + +[node name="Chr_Head_Female_20" parent="Model/RootNode/GeneralSkeleton" index="218"] +visible = false + +[node name="Chr_Head_Female_21" parent="Model/RootNode/GeneralSkeleton" index="219"] +visible = false + +[node name="Chr_Head_Female_22" parent="Model/RootNode/GeneralSkeleton" index="220"] +visible = false + +[node name="Chr_Eyebrow_Female_02" parent="Model/RootNode/GeneralSkeleton" index="222"] +visible = false + +[node name="Chr_Eyebrow_Female_03" parent="Model/RootNode/GeneralSkeleton" index="223"] +visible = false + +[node name="Chr_Eyebrow_Female_04" parent="Model/RootNode/GeneralSkeleton" index="224"] +visible = false + +[node name="Chr_Eyebrow_Female_05" parent="Model/RootNode/GeneralSkeleton" index="225"] +visible = false + +[node name="Chr_Eyebrow_Female_06" parent="Model/RootNode/GeneralSkeleton" index="226"] +visible = false + +[node name="Chr_Eyebrow_Female_07" parent="Model/RootNode/GeneralSkeleton" index="227"] +visible = false + +[node name="Chr_Torso_Female_00" parent="Model/RootNode/GeneralSkeleton" index="228"] +visible = false + +[node name="Chr_Torso_Female_01" parent="Model/RootNode/GeneralSkeleton" index="229"] +visible = false + +[node name="Chr_Torso_Female_02" parent="Model/RootNode/GeneralSkeleton" index="230"] +visible = false + +[node name="Chr_Torso_Female_03" parent="Model/RootNode/GeneralSkeleton" index="231"] +visible = false + +[node name="Chr_Torso_Female_04" parent="Model/RootNode/GeneralSkeleton" index="232"] +visible = false + +[node name="Chr_Torso_Female_06" parent="Model/RootNode/GeneralSkeleton" index="234"] +visible = false + +[node name="Chr_Torso_Female_07" parent="Model/RootNode/GeneralSkeleton" index="235"] +visible = false + +[node name="Chr_Torso_Female_08" parent="Model/RootNode/GeneralSkeleton" index="236"] +visible = false + +[node name="Chr_Torso_Female_09" parent="Model/RootNode/GeneralSkeleton" index="237"] +visible = false + +[node name="Chr_Torso_Female_10" parent="Model/RootNode/GeneralSkeleton" index="238"] +visible = false + +[node name="Chr_Torso_Female_11" parent="Model/RootNode/GeneralSkeleton" index="239"] +visible = false + +[node name="Chr_Torso_Female_12" parent="Model/RootNode/GeneralSkeleton" index="240"] +visible = false + +[node name="Chr_Torso_Female_13" parent="Model/RootNode/GeneralSkeleton" index="241"] +visible = false + +[node name="Chr_Torso_Female_14" parent="Model/RootNode/GeneralSkeleton" index="242"] +visible = false + +[node name="Chr_Torso_Female_15" parent="Model/RootNode/GeneralSkeleton" index="243"] +visible = false + +[node name="Chr_Torso_Female_16" parent="Model/RootNode/GeneralSkeleton" index="244"] +visible = false + +[node name="Chr_Torso_Female_17" parent="Model/RootNode/GeneralSkeleton" index="245"] +visible = false + +[node name="Chr_Torso_Female_18" parent="Model/RootNode/GeneralSkeleton" index="246"] +visible = false + +[node name="Chr_Torso_Female_19" parent="Model/RootNode/GeneralSkeleton" index="247"] +visible = false + +[node name="Chr_Torso_Female_20" parent="Model/RootNode/GeneralSkeleton" index="248"] +visible = false + +[node name="Chr_Torso_Female_21" parent="Model/RootNode/GeneralSkeleton" index="249"] +visible = false + +[node name="Chr_Torso_Female_22" parent="Model/RootNode/GeneralSkeleton" index="250"] +visible = false + +[node name="Chr_Torso_Female_23" parent="Model/RootNode/GeneralSkeleton" index="251"] +visible = false + +[node name="Chr_Torso_Female_24" parent="Model/RootNode/GeneralSkeleton" index="252"] +visible = false + +[node name="Chr_Torso_Female_25" parent="Model/RootNode/GeneralSkeleton" index="253"] +visible = false + +[node name="Chr_Torso_Female_26" parent="Model/RootNode/GeneralSkeleton" index="254"] +visible = false + +[node name="Chr_Torso_Female_27" parent="Model/RootNode/GeneralSkeleton" index="255"] +visible = false + +[node name="Chr_Torso_Female_28" parent="Model/RootNode/GeneralSkeleton" index="256"] +visible = false + +[node name="Chr_ArmUpperRight_Female_00" parent="Model/RootNode/GeneralSkeleton" index="257"] +visible = false + +[node name="Chr_ArmUpperRight_Female_01" parent="Model/RootNode/GeneralSkeleton" index="258"] +visible = false + +[node name="Chr_ArmUpperRight_Female_02" parent="Model/RootNode/GeneralSkeleton" index="259"] +visible = false + +[node name="Chr_ArmUpperRight_Female_04" parent="Model/RootNode/GeneralSkeleton" index="261"] +visible = false + +[node name="Chr_ArmUpperRight_Female_05" parent="Model/RootNode/GeneralSkeleton" index="262"] +visible = false + +[node name="Chr_ArmUpperRight_Female_06" parent="Model/RootNode/GeneralSkeleton" index="263"] +visible = false + +[node name="Chr_ArmUpperRight_Female_07" parent="Model/RootNode/GeneralSkeleton" index="264"] +visible = false + +[node name="Chr_ArmUpperRight_Female_08" parent="Model/RootNode/GeneralSkeleton" index="265"] +visible = false + +[node name="Chr_ArmUpperRight_Female_09" parent="Model/RootNode/GeneralSkeleton" index="266"] +visible = false + +[node name="Chr_ArmUpperRight_Female_10" parent="Model/RootNode/GeneralSkeleton" index="267"] +visible = false + +[node name="Chr_ArmUpperRight_Female_11" parent="Model/RootNode/GeneralSkeleton" index="268"] +visible = false + +[node name="Chr_ArmUpperRight_Female_12" parent="Model/RootNode/GeneralSkeleton" index="269"] +visible = false + +[node name="Chr_ArmUpperRight_Female_13" parent="Model/RootNode/GeneralSkeleton" index="270"] +visible = false + +[node name="Chr_ArmUpperRight_Female_14" parent="Model/RootNode/GeneralSkeleton" index="271"] +visible = false + +[node name="Chr_ArmUpperRight_Female_15" parent="Model/RootNode/GeneralSkeleton" index="272"] +visible = false + +[node name="Chr_ArmUpperRight_Female_16" parent="Model/RootNode/GeneralSkeleton" index="273"] +visible = false + +[node name="Chr_ArmUpperRight_Female_17" parent="Model/RootNode/GeneralSkeleton" index="274"] +visible = false + +[node name="Chr_ArmUpperRight_Female_18" parent="Model/RootNode/GeneralSkeleton" index="275"] +visible = false + +[node name="Chr_ArmUpperRight_Female_19" parent="Model/RootNode/GeneralSkeleton" index="276"] +visible = false + +[node name="Chr_ArmUpperRight_Female_20" parent="Model/RootNode/GeneralSkeleton" index="277"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_00" parent="Model/RootNode/GeneralSkeleton" index="278"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_02" parent="Model/RootNode/GeneralSkeleton" index="280"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_03" parent="Model/RootNode/GeneralSkeleton" index="281"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_04" parent="Model/RootNode/GeneralSkeleton" index="282"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_05" parent="Model/RootNode/GeneralSkeleton" index="283"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_06" parent="Model/RootNode/GeneralSkeleton" index="284"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_07" parent="Model/RootNode/GeneralSkeleton" index="285"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_08" parent="Model/RootNode/GeneralSkeleton" index="286"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_09" parent="Model/RootNode/GeneralSkeleton" index="287"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_10" parent="Model/RootNode/GeneralSkeleton" index="288"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_11" parent="Model/RootNode/GeneralSkeleton" index="289"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_12" parent="Model/RootNode/GeneralSkeleton" index="290"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_13" parent="Model/RootNode/GeneralSkeleton" index="291"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_14" parent="Model/RootNode/GeneralSkeleton" index="292"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_15" parent="Model/RootNode/GeneralSkeleton" index="293"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_16" parent="Model/RootNode/GeneralSkeleton" index="294"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_17" parent="Model/RootNode/GeneralSkeleton" index="295"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_18" parent="Model/RootNode/GeneralSkeleton" index="296"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_19" parent="Model/RootNode/GeneralSkeleton" index="297"] +visible = false + +[node name="Chr_ArmUpperLeft_Female_20" parent="Model/RootNode/GeneralSkeleton" index="298"] +visible = false + +[node name="Chr_ArmLowerRight_Female_00" parent="Model/RootNode/GeneralSkeleton" index="299"] +visible = false + +[node name="Chr_ArmLowerRight_Female_01" parent="Model/RootNode/GeneralSkeleton" index="300"] +visible = false + +[node name="Chr_ArmLowerRight_Female_02" parent="Model/RootNode/GeneralSkeleton" index="301"] +visible = false + +[node name="Chr_ArmLowerRight_Female_04" parent="Model/RootNode/GeneralSkeleton" index="303"] +visible = false + +[node name="Chr_ArmLowerRight_Female_05" parent="Model/RootNode/GeneralSkeleton" index="304"] +visible = false + +[node name="Chr_ArmLowerRight_Female_06" parent="Model/RootNode/GeneralSkeleton" index="305"] +visible = false + +[node name="Chr_ArmLowerRight_Female_07" parent="Model/RootNode/GeneralSkeleton" index="306"] +visible = false + +[node name="Chr_ArmLowerRight_Female_08" parent="Model/RootNode/GeneralSkeleton" index="307"] +visible = false + +[node name="Chr_ArmLowerRight_Female_09" parent="Model/RootNode/GeneralSkeleton" index="308"] +visible = false + +[node name="Chr_ArmLowerRight_Female_10" parent="Model/RootNode/GeneralSkeleton" index="309"] +visible = false + +[node name="Chr_ArmLowerRight_Female_11" parent="Model/RootNode/GeneralSkeleton" index="310"] +visible = false + +[node name="Chr_ArmLowerRight_Female_12" parent="Model/RootNode/GeneralSkeleton" index="311"] +visible = false + +[node name="Chr_ArmLowerRight_Female_13" parent="Model/RootNode/GeneralSkeleton" index="312"] +visible = false + +[node name="Chr_ArmLowerRight_Female_14" parent="Model/RootNode/GeneralSkeleton" index="313"] +visible = false + +[node name="Chr_ArmLowerRight_Female_15" parent="Model/RootNode/GeneralSkeleton" index="314"] +visible = false + +[node name="Chr_ArmLowerRight_Female_16" parent="Model/RootNode/GeneralSkeleton" index="315"] +visible = false + +[node name="Chr_ArmLowerRight_Female_17" parent="Model/RootNode/GeneralSkeleton" index="316"] +visible = false + +[node name="Chr_ArmLowerRight_Female_18" parent="Model/RootNode/GeneralSkeleton" index="317"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_00" parent="Model/RootNode/GeneralSkeleton" index="318"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_01" parent="Model/RootNode/GeneralSkeleton" index="319"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_03" parent="Model/RootNode/GeneralSkeleton" index="321"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_04" parent="Model/RootNode/GeneralSkeleton" index="322"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_05" parent="Model/RootNode/GeneralSkeleton" index="323"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_06" parent="Model/RootNode/GeneralSkeleton" index="324"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_07" parent="Model/RootNode/GeneralSkeleton" index="325"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_08" parent="Model/RootNode/GeneralSkeleton" index="326"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_09" parent="Model/RootNode/GeneralSkeleton" index="327"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_10" parent="Model/RootNode/GeneralSkeleton" index="328"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_11" parent="Model/RootNode/GeneralSkeleton" index="329"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_12" parent="Model/RootNode/GeneralSkeleton" index="330"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_13" parent="Model/RootNode/GeneralSkeleton" index="331"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_14" parent="Model/RootNode/GeneralSkeleton" index="332"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_15" parent="Model/RootNode/GeneralSkeleton" index="333"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_16" parent="Model/RootNode/GeneralSkeleton" index="334"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_17" parent="Model/RootNode/GeneralSkeleton" index="335"] +visible = false + +[node name="Chr_ArmLowerLeft_Female_18" parent="Model/RootNode/GeneralSkeleton" index="336"] +visible = false + +[node name="Chr_HandRight_Female_00" parent="Model/RootNode/GeneralSkeleton" index="337"] +visible = false + +[node name="Chr_HandRight_Female_01" parent="Model/RootNode/GeneralSkeleton" index="338"] +visible = false + +[node name="Chr_HandRight_Female_02" parent="Model/RootNode/GeneralSkeleton" index="339"] +visible = false + +[node name="Chr_HandRight_Female_03" parent="Model/RootNode/GeneralSkeleton" index="340"] +visible = false + +[node name="Chr_HandRight_Female_05" parent="Model/RootNode/GeneralSkeleton" index="342"] +visible = false + +[node name="Chr_HandRight_Female_06" parent="Model/RootNode/GeneralSkeleton" index="343"] +visible = false + +[node name="Chr_HandRight_Female_07" parent="Model/RootNode/GeneralSkeleton" index="344"] +visible = false + +[node name="Chr_HandRight_Female_08" parent="Model/RootNode/GeneralSkeleton" index="345"] +visible = false + +[node name="Chr_HandRight_Female_09" parent="Model/RootNode/GeneralSkeleton" index="346"] +visible = false + +[node name="Chr_HandRight_Female_10" parent="Model/RootNode/GeneralSkeleton" index="347"] +visible = false + +[node name="Chr_HandRight_Female_11" parent="Model/RootNode/GeneralSkeleton" index="348"] +visible = false + +[node name="Chr_HandRight_Female_12" parent="Model/RootNode/GeneralSkeleton" index="349"] +visible = false + +[node name="Chr_HandRight_Female_13" parent="Model/RootNode/GeneralSkeleton" index="350"] +visible = false + +[node name="Chr_HandRight_Female_14" parent="Model/RootNode/GeneralSkeleton" index="351"] +visible = false + +[node name="Chr_HandRight_Female_15" parent="Model/RootNode/GeneralSkeleton" index="352"] +visible = false + +[node name="Chr_HandRight_Female_16" parent="Model/RootNode/GeneralSkeleton" index="353"] +visible = false + +[node name="Chr_HandRight_Female_17" parent="Model/RootNode/GeneralSkeleton" index="354"] +visible = false + +[node name="Chr_HandLeft_Female_01" parent="Model/RootNode/GeneralSkeleton" index="356"] +visible = false + +[node name="Chr_HandLeft_Female_02" parent="Model/RootNode/GeneralSkeleton" index="357"] +visible = false + +[node name="Chr_HandLeft_Female_03" parent="Model/RootNode/GeneralSkeleton" index="358"] +visible = false + +[node name="Chr_HandLeft_Female_04" parent="Model/RootNode/GeneralSkeleton" index="359"] +visible = false + +[node name="Chr_HandLeft_Female_05" parent="Model/RootNode/GeneralSkeleton" index="360"] +visible = false + +[node name="Chr_HandLeft_Female_06" parent="Model/RootNode/GeneralSkeleton" index="361"] +visible = false + +[node name="Chr_HandLeft_Female_07" parent="Model/RootNode/GeneralSkeleton" index="362"] +visible = false + +[node name="Chr_HandLeft_Female_08" parent="Model/RootNode/GeneralSkeleton" index="363"] +visible = false + +[node name="Chr_HandLeft_Female_09" parent="Model/RootNode/GeneralSkeleton" index="364"] +visible = false + +[node name="Chr_HandLeft_Female_10" parent="Model/RootNode/GeneralSkeleton" index="365"] +visible = false + +[node name="Chr_HandLeft_Female_11" parent="Model/RootNode/GeneralSkeleton" index="366"] +visible = false + +[node name="Chr_HandLeft_Female_12" parent="Model/RootNode/GeneralSkeleton" index="367"] +visible = false + +[node name="Chr_HandLeft_Female_13" parent="Model/RootNode/GeneralSkeleton" index="368"] +visible = false + +[node name="Chr_HandLeft_Female_14" parent="Model/RootNode/GeneralSkeleton" index="369"] +visible = false + +[node name="Chr_HandLeft_Female_15" parent="Model/RootNode/GeneralSkeleton" index="370"] +visible = false + +[node name="Chr_HandLeft_Female_16" parent="Model/RootNode/GeneralSkeleton" index="371"] +visible = false + +[node name="Chr_HandLeft_Female_17" parent="Model/RootNode/GeneralSkeleton" index="372"] +visible = false + +[node name="Chr_Hips_Female_00" parent="Model/RootNode/GeneralSkeleton" index="373"] +visible = false + +[node name="Chr_Hips_Female_01" parent="Model/RootNode/GeneralSkeleton" index="374"] +visible = false + +[node name="Chr_Hips_Female_02" parent="Model/RootNode/GeneralSkeleton" index="375"] +visible = false + +[node name="Chr_Hips_Female_04" parent="Model/RootNode/GeneralSkeleton" index="377"] +visible = false + +[node name="Chr_Hips_Female_05" parent="Model/RootNode/GeneralSkeleton" index="378"] +visible = false + +[node name="Chr_Hips_Female_06" parent="Model/RootNode/GeneralSkeleton" index="379"] +visible = false + +[node name="Chr_Hips_Female_07" parent="Model/RootNode/GeneralSkeleton" index="380"] +visible = false + +[node name="Chr_Hips_Female_08" parent="Model/RootNode/GeneralSkeleton" index="381"] +visible = false + +[node name="Chr_Hips_Female_09" parent="Model/RootNode/GeneralSkeleton" index="382"] +visible = false + +[node name="Chr_Hips_Female_10" parent="Model/RootNode/GeneralSkeleton" index="383"] +visible = false + +[node name="Chr_Hips_Female_11" parent="Model/RootNode/GeneralSkeleton" index="384"] +visible = false + +[node name="Chr_Hips_Female_12" parent="Model/RootNode/GeneralSkeleton" index="385"] +visible = false + +[node name="Chr_Hips_Female_13" parent="Model/RootNode/GeneralSkeleton" index="386"] +visible = false + +[node name="Chr_Hips_Female_14" parent="Model/RootNode/GeneralSkeleton" index="387"] +visible = false + +[node name="Chr_Hips_Female_15" parent="Model/RootNode/GeneralSkeleton" index="388"] +visible = false + +[node name="Chr_Hips_Female_16" parent="Model/RootNode/GeneralSkeleton" index="389"] +visible = false + +[node name="Chr_Hips_Female_17" parent="Model/RootNode/GeneralSkeleton" index="390"] +visible = false + +[node name="Chr_Hips_Female_18" parent="Model/RootNode/GeneralSkeleton" index="391"] +visible = false + +[node name="Chr_Hips_Female_19" parent="Model/RootNode/GeneralSkeleton" index="392"] +visible = false + +[node name="Chr_Hips_Female_20" parent="Model/RootNode/GeneralSkeleton" index="393"] +visible = false + +[node name="Chr_Hips_Female_21" parent="Model/RootNode/GeneralSkeleton" index="394"] +visible = false + +[node name="Chr_Hips_Female_22" parent="Model/RootNode/GeneralSkeleton" index="395"] +visible = false + +[node name="Chr_Hips_Female_23" parent="Model/RootNode/GeneralSkeleton" index="396"] +visible = false + +[node name="Chr_Hips_Female_24" parent="Model/RootNode/GeneralSkeleton" index="397"] +visible = false + +[node name="Chr_Hips_Female_25" parent="Model/RootNode/GeneralSkeleton" index="398"] +visible = false + +[node name="Chr_Hips_Female_26" parent="Model/RootNode/GeneralSkeleton" index="399"] +visible = false + +[node name="Chr_Hips_Female_27" parent="Model/RootNode/GeneralSkeleton" index="400"] +visible = false + +[node name="Chr_Hips_Female_28" parent="Model/RootNode/GeneralSkeleton" index="401"] +visible = false + +[node name="Chr_LegRight_Female_00" parent="Model/RootNode/GeneralSkeleton" index="402"] +visible = false + +[node name="Chr_LegRight_Female_01" parent="Model/RootNode/GeneralSkeleton" index="403"] +visible = false + +[node name="Chr_LegRight_Female_02" parent="Model/RootNode/GeneralSkeleton" index="404"] +visible = false + +[node name="Chr_LegRight_Female_03" parent="Model/RootNode/GeneralSkeleton" index="405"] +visible = false + +[node name="Chr_LegRight_Female_04" parent="Model/RootNode/GeneralSkeleton" index="406"] +visible = false + +[node name="Chr_LegRight_Female_05" parent="Model/RootNode/GeneralSkeleton" index="407"] +visible = false + +[node name="Chr_LegRight_Female_06" parent="Model/RootNode/GeneralSkeleton" index="408"] +visible = false + +[node name="Chr_LegRight_Female_07" parent="Model/RootNode/GeneralSkeleton" index="409"] +visible = false + +[node name="Chr_LegRight_Female_08" parent="Model/RootNode/GeneralSkeleton" index="410"] +visible = false + +[node name="Chr_LegRight_Female_09" parent="Model/RootNode/GeneralSkeleton" index="411"] +visible = false + +[node name="Chr_LegRight_Female_10" parent="Model/RootNode/GeneralSkeleton" index="412"] +visible = false + +[node name="Chr_LegRight_Female_11" parent="Model/RootNode/GeneralSkeleton" index="413"] +visible = false + +[node name="Chr_LegRight_Female_13" parent="Model/RootNode/GeneralSkeleton" index="415"] +visible = false + +[node name="Chr_LegRight_Female_14" parent="Model/RootNode/GeneralSkeleton" index="416"] +visible = false + +[node name="Chr_LegRight_Female_15" parent="Model/RootNode/GeneralSkeleton" index="417"] +visible = false + +[node name="Chr_LegRight_Female_16" parent="Model/RootNode/GeneralSkeleton" index="418"] +visible = false + +[node name="Chr_LegRight_Female_17" parent="Model/RootNode/GeneralSkeleton" index="419"] +visible = false + +[node name="Chr_LegRight_Female_18" parent="Model/RootNode/GeneralSkeleton" index="420"] +visible = false + +[node name="Chr_LegRight_Female_19" parent="Model/RootNode/GeneralSkeleton" index="421"] +visible = false + +[node name="Chr_LegLeft_Female_00" parent="Model/RootNode/GeneralSkeleton" index="422"] +visible = false + +[node name="Chr_LegLeft_Female_01" parent="Model/RootNode/GeneralSkeleton" index="423"] +visible = false + +[node name="Chr_LegLeft_Female_02" parent="Model/RootNode/GeneralSkeleton" index="424"] +visible = false + +[node name="Chr_LegLeft_Female_03" parent="Model/RootNode/GeneralSkeleton" index="425"] +visible = false + +[node name="Chr_LegLeft_Female_04" parent="Model/RootNode/GeneralSkeleton" index="426"] +visible = false + +[node name="Chr_LegLeft_Female_05" parent="Model/RootNode/GeneralSkeleton" index="427"] +visible = false + +[node name="Chr_LegLeft_Female_06" parent="Model/RootNode/GeneralSkeleton" index="428"] +visible = false + +[node name="Chr_LegLeft_Female_07" parent="Model/RootNode/GeneralSkeleton" index="429"] +visible = false + +[node name="Chr_LegLeft_Female_08" parent="Model/RootNode/GeneralSkeleton" index="430"] +visible = false + +[node name="Chr_LegLeft_Female_09" parent="Model/RootNode/GeneralSkeleton" index="431"] +visible = false + +[node name="Chr_LegLeft_Female_10" parent="Model/RootNode/GeneralSkeleton" index="432"] +visible = false + +[node name="Chr_LegLeft_Female_11" parent="Model/RootNode/GeneralSkeleton" index="433"] +visible = false + +[node name="Chr_LegLeft_Female_13" parent="Model/RootNode/GeneralSkeleton" index="435"] +visible = false + +[node name="Chr_LegLeft_Female_14" parent="Model/RootNode/GeneralSkeleton" index="436"] +visible = false + +[node name="Chr_LegLeft_Female_15" parent="Model/RootNode/GeneralSkeleton" index="437"] +visible = false + +[node name="Chr_LegLeft_Female_16" parent="Model/RootNode/GeneralSkeleton" index="438"] +visible = false + +[node name="Chr_LegLeft_Female_17" parent="Model/RootNode/GeneralSkeleton" index="439"] +visible = false + +[node name="Chr_LegLeft_Female_18" parent="Model/RootNode/GeneralSkeleton" index="440"] +visible = false + +[node name="Chr_LegLeft_Female_19" parent="Model/RootNode/GeneralSkeleton" index="441"] +visible = false + +[node name="AnimationPlayer" parent="Model" index="1"] +libraries = { +"": SubResource("AnimationLibrary_eyw6x"), +"BasicMotions@Idle01": ExtResource("1_wqiit") +} + +[editable path="Model"] diff --git a/src/game_mode.cpp b/src/game_mode.cpp index a5efdfe..def1854 100644 --- a/src/game_mode.cpp +++ b/src/game_mode.cpp @@ -1,12 +1,16 @@ #include "game_mode.hpp" #include #include "godot_cpp/variant/utility_functions.hpp" +#include "godot_cpp/classes/viewport.hpp" #include "godot_macros.h" #include "level.hpp" #include "player.hpp" namespace godot { -GameMode* GameMode::static_instance{nullptr}; +GameMode *GameMode::static_instance{nullptr}; + +GameMode *GameMode::get_singleton() { return GameMode::static_instance; } +bool GameMode::has_singleton() { return GameMode::static_instance != nullptr; } void GameMode::_bind_methods() { #define CLASSNAME GameMode diff --git a/src/game_mode.hpp b/src/game_mode.hpp index 84c8320..1c74b9c 100644 --- a/src/game_mode.hpp +++ b/src/game_mode.hpp @@ -31,6 +31,9 @@ public: void load_level(Ref& levelScene, std::optional entrance); + static GameMode *get_singleton(); + static bool has_singleton(); + Player* get_player_instance() const; void set_first_level(Ref level); diff --git a/src/player.cpp b/src/player.cpp index 90187f7..e0bf3e3 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -1,8 +1,10 @@ #include "player.hpp" #include +#include "game_mode.hpp" #include "godot_cpp/classes/animation_tree.hpp" #include "godot_cpp/classes/node3d.hpp" #include "godot_cpp/classes/skeleton3d.hpp" +#include "godot_cpp/variant/utility_functions.hpp" #include "godot_macros.h" namespace godot { @@ -11,109 +13,131 @@ void Player::_bind_methods() { #ifndef NDEBUG GDPROPERTY(active_customization, Variant::DICTIONARY); #endif + GDFUNCTION_ARGS(on_horizontal, "event", "value"); + GDFUNCTION_ARGS(on_vertical, "event", "value"); } void Player::_enter_tree() { this->model = this->get_node("Model"); this->animTree = this->get_node("AnimationTree"); - this->customization_init(); + GDGAMEONLY(); + this->input = this->get_node("PlayerInput"); } -void Player::_exit_tree() { - // free the customization options that were removed from the tree - for(std::pair& pair: this->customization) { - for(Node3D *option: pair.second.options) { - if(!option->is_inside_tree()) { - option->queue_free(); - } - } - } +void Player::_ready() { + this->customization_init(); + GDGAMEONLY(); + this->input->listen_to(PlayerInput::Listener("move_left", "move_right", this, "on_horizontal")); + this->input->listen_to(PlayerInput::Listener("move_forward", "move_back", this, "on_vertical")); } void Player::_process(double deltaTime) {} void Player::_physics_process(double deltaTime) {} -void Player::select_customization(String category, std::optional index) { - if(this->customization.find(category) == this->customization.end()) +void Player::set_customization_active(Node3D *node, bool active) { + node->set_visible(active); + node->set_process(active); +} + +void Player::on_horizontal(Ref event, float value) { + this->moveInput.x = value; +} + +void Player::on_vertical(Ref event, float value) { + this->moveInput.y = value; +} + +void Player::select_customization(String category, + std::optional index) { + if (this->customization.find(category) == this->customization.end()) return; - CustomizationState &pair = this->customization.at(category); + CustomizationState& pair = this->customization.at(category); // invalid keys are stored as the size of the array - if(index.has_value() && index.value() > pair.options.size()) + if (index.has_value() && index.value() > pair.options.size()) index = std::nullopt; // nothing changes - if(index == pair.currentSelected) + if (index == pair.currentSelected) return; // disable previous chosen option, if any - if(pair.currentSelected.has_value()) - customizationParent->remove_child(pair.options.at(pair.currentSelected.value())); + if (pair.currentSelected.has_value()) + Player::set_customization_active(pair.options.at(pair.currentSelected.value()), false); // enable chosen option, if any - if(index.has_value()) - customizationParent->add_child(pair.options.at(index.value())); + if (index.has_value()) + Player::set_customization_active(pair.options.at(index.value()), false); pair.currentSelected = index; } Dictionary Player::get_active_customization() const { Dictionary result{}; // translate the map to a dictionary of keys and indexes - for(std::pair const &pair: this->customization) + for (std::pair const& pair : + this->customization) result[pair.first] = pair.second.currentSelected.has_value() - ? pair.second.currentSelected.value() - : -1; // an invalid key will always be -1 + ? pair.second.currentSelected.value() + : -1; // an invalid key will always be -1 return result; } void Player::set_active_customization(Dictionary value) { - for(size_t i = 0; i < value.size(); ++i) { + for (size_t i = 0; i < value.size(); ++i) { String key = value.keys()[i]; size_t selection = value[key]; - bool exists = this->customization.find(key) != this->customization.end(); // wether or not the a given key exists in the customization map - // if not, it can be added, as long as the customization map has not yet been initialized by _enter_tree - if(!exists && !this->is_inside_tree()) + // wether or not the a given key exists in the customization map + bool exists = this->customization.find(key) != this->customization.end(); + // if not, it can be added, as long as the customization map has not yet + // been initialized by _ready + if (!exists && !this->is_inside_tree()) this->customization.insert({key, {std::optional{selection}, {}}}); - // if the key does not exist in customization and _enter_tree is already called, the key is not valid and discarted - else if(!exists) + // if the key does not exist in customization and _ready is already + // called, the key is not valid and discarted + else if (!exists) return; else - this->select_customization(key, selection >= 0 ? std::optional{selection} : std::nullopt); + this->select_customization( + key, selection >= 0 ? std::optional{selection} : std::nullopt); } } void Player::customization_init() { - this->customizationParent = this->get_node("Model/RootNode/Skeleton3D"); - if(!this->customizationParent) + this->customizationParent = + this->get_node("Model/RootNode/GeneralSkeleton"); + if (this->customizationParent == nullptr) return; - for(int i = 0; i < customizationParent->get_child_count(); ++i) { + for (int i = 0; i < customizationParent->get_child_count(); ++i) { // get the next valid child - Node3D *child = Object::cast_to(this->customizationParent->get_child(i)); - if(!child) continue; + Node3D* child = Object::cast_to(this->customizationParent->get_child(i)); + if (child == nullptr) + continue; // split it's name into parts based on _ - // the format for the names will be Chr___ - // numbering IS NOT guaranteed to start at 0 OR 1 + // the format for the names will be Chr___ numbering IS NOT guaranteed to start at 0 OR 1 // the category name will serve as the key to the customization map // additional identifiers are ignored PackedStringArray slices = child->get_name().split("_", false); // create a new customization state if one does not exist for this category - if(this->customization.find(slices[1]) == this->customization.end()) + if (this->customization.find(slices[1]) == this->customization.end()) this->customization.insert({slices[1], {std::optional{0}, {}}}); // add the new child to the customization options for this category - CustomizationState &state = this->customization.at(slices[1]); + CustomizationState& state = this->customization.at(slices[1]); state.options.push_back(child); - // only allow this child to exist in the scene tree if it was saved as the current selection - if(state.currentSelected != state.options.size()-1) { - this->customizationParent->remove_child(child); - --i; + // set invisible if this child is not the current selection + if (state.currentSelected != state.options.size() - 1) { + Player::set_customization_active(child, false); } } // collect customization categories that do not contain any options std::vector empty{}; - for(std::pair& pair: this->customization) { - if(pair.second.options.size() == 0) + for (std::pair& pair : + this->customization) { + if (pair.second.options.size() == 0) empty.push_back(pair.first); - if(pair.second.currentSelected.has_value() && pair.second.currentSelected.value() > pair.second.options.size()) + if (pair.second.currentSelected.has_value() && + pair.second.currentSelected.value() > pair.second.options.size()) pair.second.currentSelected = std::nullopt; + UtilityFunctions::print("- ", pair.first); } // remove collected empty categories - for(String const& key: empty) { + for (String const& key : empty) { this->customization.erase(key); + UtilityFunctions::print("removing ", key); } } } // namespace godot diff --git a/src/player.hpp b/src/player.hpp index dda4723..9a97fdf 100644 --- a/src/player.hpp +++ b/src/player.hpp @@ -4,7 +4,9 @@ #include #include "godot_cpp/classes/animation_tree.hpp" #include "godot_cpp/classes/character_body3d.hpp" +#include "godot_cpp/classes/input_event.hpp" #include "godot_cpp/classes/skeleton3d.hpp" +#include "player_input.hpp" #include namespace godot { @@ -26,13 +28,23 @@ protected: AnimationTree* animTree{nullptr}; // the skeleton of the customizable character model Skeleton3D *customizationParent{nullptr}; + PlayerInput *input{nullptr}; + + float walkSpeed{10.f}; + + Vector2 moveInput{0.f, 0.f}; public: virtual void _enter_tree() override; - virtual void _exit_tree() override; + virtual void _ready() override; virtual void _process(double deltaTime) override; virtual void _physics_process(double deltaTime) override; + static void set_customization_active(Node3D *node, bool active); + + void on_horizontal(Ref event, float value); + void on_vertical(Ref event, float value); + // Swap out the currently active customization for this category void select_customization(String category, std::optional value); // Construct a dictionary of [String, int] where the key is a category diff --git a/src/player_input.cpp b/src/player_input.cpp new file mode 100644 index 0000000..95f9f67 --- /dev/null +++ b/src/player_input.cpp @@ -0,0 +1,63 @@ +#include "player_input.hpp" +#include "godot_macros.h" +#include "godot_cpp/classes/input.hpp" +#include "godot_cpp/classes/input_event.hpp" +#include + +namespace godot { +void PlayerInput::_bind_methods() {} + +PlayerInput::Listener::Listener(String positive, String negative, Node *object, String method) +: actionNegative{negative} +, actionPositive{positive} +, methodName{method} +, object{object} {} + +bool PlayerInput::Listener::has_changed(Ref const &event) { + return event->is_action(this->actionNegative) || event->is_action(this->actionPositive); +} +float PlayerInput::Listener::evaluate(Ref const &event) { + float newest = static_cast(event->is_action_pressed(this->actionPositive)) + - static_cast(event->is_action_pressed(this->actionNegative)); + if(lastCached != newest) + this->object->call(this->methodName, event, newest); + return (lastCached = newest); +} + +bool PlayerInput::Listener::operator==(godot::PlayerInput::Listener const& b) { + return this->methodName == b.methodName + && this->object == b.object + && this->actionNegative == b.actionNegative + && this->actionPositive == b.actionPositive; +} + +void PlayerInput::_unhandled_input(Ref const &event) { + GDGAMEONLY(); + for(Listener& listener: this->listeners) { + if(listener.has_changed(event)) { + listener.evaluate(event); + } + } +} + +void PlayerInput::listen_to(Listener const& listener) { + this->listeners.push_back(listener); +} + +void PlayerInput::stop_listening(Node *node) { + for(size_t i = 0; i < this->listeners.size(); ++i) { + Listener& l = this->listeners.at(i); + if(l.object == node) { + this->listeners.erase(this->listeners.begin() + i); + i--; + } + } +} + +void PlayerInput::stop_listening(Listener const& listener) { + std::vector::iterator itr = std::find(this->listeners.begin(), this->listeners.end(), listener); + if(itr != this->listeners.end()) + this->listeners.erase(itr); +} +} + diff --git a/src/player_input.hpp b/src/player_input.hpp new file mode 100644 index 0000000..ef4ee6e --- /dev/null +++ b/src/player_input.hpp @@ -0,0 +1,37 @@ +#ifndef PLAYER_INPUT_HPP +#define PLAYER_INPUT_HPP + +#include +#include "godot_cpp/classes/input_event.hpp" +#include "godot_cpp/classes/node.hpp" + +namespace godot { +class PlayerInput : public Node { + GDCLASS(PlayerInput, Node) + static void _bind_methods(); +public: + struct Listener { + String actionNegative{""}; + String actionPositive{""}; + float lastCached{0.f}; + String methodName{""}; + Node *object; + + Listener(String positive, String negative, Node *object, String method); + bool has_changed(Ref const &event); + float evaluate(Ref const &event); + bool operator==(godot::PlayerInput::Listener const& b); + }; +private: + std::vector listeners; +public: + virtual void _unhandled_input(Ref const &event) override; + + void listen_to(Listener const& listener); + void stop_listening(Node *node); + void stop_listening(Listener const& listener); +}; +} + + +#endif // !PLAYER_INPUT_HPP diff --git a/src/register_types.cpp b/src/register_types.cpp index 19c13b2..7786677 100644 --- a/src/register_types.cpp +++ b/src/register_types.cpp @@ -8,6 +8,7 @@ #include "game_mode.hpp" #include "level.hpp" #include "player.hpp" +#include "player_input.hpp" using namespace godot; @@ -19,6 +20,7 @@ void initialize_gdextension_types(ModuleInitializationLevel p_level) { ClassDB::register_class(); ClassDB::register_class(); ClassDB::register_class(); + ClassDB::register_class(); } extern "C" {