feat: update
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,631 @@
|
|||||||
|
[gd_resource type="AnimationLibrary" format=3]
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_pebao"]
|
||||||
|
length = 0.5
|
||||||
|
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, 0.34238845, 1.5708939e-07, -5.5968407e-08, 0.9395585, 0.033333335, 1, 0.3305442, 1.5623375e-07, -4.5335742e-08, 0.94379056, 0.06666667, 1, 0.301523, 1.5505638e-07, -1.9152363e-08, 0.9534589, 0.1, 1, 0.26518956, 1.5532987e-07, 1.39529295e-08, 0.9641963, 0.13333334, 1, 0.23179884, 1.5667713e-07, 4.533578e-08, 0.9727638, 0.16666667, 1, 0.21196172, 1.5609982e-07, 6.6536835e-08, 0.977278, 0.2, 1, 0.21154101, 1.4794188e-07, 7.5990435e-08, 0.9773691, 0.23333333, 1, 0.22426, 1.3351601e-07, 7.7956074e-08, 0.9745293, 0.26666668, 1, 0.2425952, 1.1952865e-07, 7.2984484e-08, 0.9701276, 0.3, 1, 0.25909162, 1.1277934e-07, 6.2371846e-08, 0.9658528, 0.33333334, 1, 0.27442306, 1.148871e-07, 4.4474916e-08, 0.96160907, 0.36666667, 1, 0.29247355, 1.2213901e-07, 1.9690756e-08, 0.9562736, 0.4, 1, 0.31072947, 1.326901e-07, -7.1720985e-09, 0.9504984, 0.43333334, 1, 0.32673204, 1.4408309e-07, -3.1553007e-08, 0.945117, 0.46666667, 1, 0.33807683, 1.5330711e-07, -4.9181153e-08, 0.9411185, 0.5, 1, 0.34238845, 1.5708939e-07, -5.5968407e-08, 0.9395585)
|
||||||
|
tracks/1/type = "rotation_3d"
|
||||||
|
tracks/1/imported = true
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = PackedFloat32Array(0, 1, -0.31937256, 1.9802002e-07, -3.665855e-07, 0.9476293, 0.033333335, 1, -0.33358824, 0.0012690381, -0.0018437031, 0.94271624, 0.06666667, 1, -0.36740822, 0.004161775, -0.0065399446, 0.9300275, 0.1, 1, -0.40766144, 0.0073642395, -0.012770037, 0.9130142, 0.13333334, 1, -0.44178134, 0.009988794, -0.018933056, 0.89686733, 0.16666667, 1, -0.45800525, 0.011690596, -0.023166168, 0.88857067, 0.2, 1, -0.44634637, 0.012967478, -0.024879681, 0.8944204, 0.23333333, 1, -0.41446674, 0.014149548, -0.02495417, 0.90961224, 0.26666668, 1, -0.3776802, 0.014748214, -0.023739967, 0.9255142, 0.3, 1, -0.3522593, 0.014289263, -0.021660056, 0.93554264, 0.33333334, 1, -0.3399939, 0.012479725, -0.018391669, 0.940165, 0.36666667, 1, -0.33112267, 0.009629176, -0.013909034, 0.9434361, 0.4, 1, -0.32515508, 0.0063351113, -0.009029623, 0.9455964, 0.43333334, 1, -0.32157147, 0.003219309, -0.004552275, 0.9468689, 0.46666667, 1, -0.3198295, 0.00090443454, -0.0012739573, 0.9474738, 0.5, 1, -0.31937256, 1.9802002e-07, -3.665855e-07, 0.9476293)
|
||||||
|
tracks/2/type = "rotation_3d"
|
||||||
|
tracks/2/imported = true
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("GeneralSkeleton:Head")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = PackedFloat32Array(0, 1, -0.17886406, -3.554911e-07, -2.4261183e-07, 0.98387384, 0.033333335, 1, -0.18172997, -8.714442e-05, -0.00012339467, 0.9833485, 0.06666667, 1, -0.18745717, -0.00026321414, -0.00036816578, 0.9822727, 0.1, 1, -0.19174813, -0.00039689787, -0.00055041583, 0.98144394, 0.13333334, 1, -0.19031827, -0.0003522195, -0.00048988627, 0.9817223, 0.16666667, 1, -0.17886408, -3.5629157e-07, -2.422548e-07, 0.98387384, 0.2, 1, -0.14348157, 0.0010094029, 0.0015552446, 0.98965126, 0.23333333, 1, -0.08865402, 0.0023420877, 0.004085629, 0.9960514, 0.26666668, 1, -0.038101744, 0.0033183873, 0.006534733, 0.999247, 0.3, 1, -0.015910111, 0.003669463, 0.0076415697, 0.9998375, 0.33333334, 1, -0.028050866, 0.003483296, 0.007033757, 0.9995757, 0.36666667, 1, -0.058380038, 0.002956091, 0.0055398243, 0.99827474, 0.4, 1, -0.09772128, 0.0021412498, 0.0036576986, 0.99520487, 0.43333334, 1, -0.13690743, 0.001184109, 0.0018512, 0.99058145, 0.46666667, 1, -0.16690645, 0.00035402534, 0.00051823625, 0.9859726, 0.5, 1, -0.17886406, -3.554911e-07, -2.4261183e-07, 0.98387384)
|
||||||
|
tracks/3/type = "rotation_3d"
|
||||||
|
tracks/3/imported = true
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/3/interp = 0
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = PackedFloat32Array(0, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.033333335, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.06666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.1, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.13333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.16666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.2, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.23333333, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.26666668, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.3, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.33333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.36666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.4, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.43333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.46666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.5, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077)
|
||||||
|
tracks/4/type = "position_3d"
|
||||||
|
tracks/4/imported = true
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = PackedFloat32Array(0, 1, -0.0016287112, 0.14501561, 0.00025158125, 0.033333335, 1, -0.0014169419, 0.14814326, 0.0005686792, 0.06666667, 1, -0.00089517375, 0.15584946, 0.0013501979, 0.1, 1, -0.00023364913, 0.16561928, 0.0023408532, 0.13333334, 1, 0.0003972705, 0.17493771, 0.0032857032, 0.16666667, 1, 0.00082737766, 0.18128975, 0.003929783, 0.2, 1, 0.0010269169, 0.18423694, 0.0042286315, 0.23333333, 1, 0.0010866298, 0.18511865, 0.004318045, 0.26666668, 1, 0.0010166873, 0.18408589, 0.0042133117, 0.3, 1, 0.0008273692, 0.18128976, 0.0039298316, 0.33333334, 1, 0.0004748591, 0.17608373, 0.0034018615, 0.36666667, 1, -2.7718546e-05, 0.16866097, 0.0026492667, 0.4, 1, -0.00058487325, 0.16043212, 0.0018148312, 0.43333334, 1, -0.0011011158, 0.15280783, 0.001041744, 0.46666667, 1, -0.0014808996, 0.14719877, 0.0004730025, 0.5, 1, -0.0016287112, 0.14501561, 0.00025158125)
|
||||||
|
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, -0.25816974, 0.70056593, -0.29189405, 0.59779066, 0.033333335, 1, -0.2696654, 0.67672503, -0.2821626, 0.624266, 0.06666667, 1, -0.27750358, 0.6097148, -0.27519694, 0.68956965, 0.1, 1, -0.24490495, 0.5193297, -0.30176663, 0.76108813, 0.13333334, 1, -0.17328225, 0.44258872, -0.3602416, 0.80269206, 0.16666667, 1, -0.10632605, 0.40261003, -0.41415966, 0.80936503, 0.2, 1, -0.07155382, 0.3885845, -0.4417803, 0.8054268, 0.23333333, 1, -0.060796093, 0.38500503, -0.45026466, 0.8033285, 0.26666668, 1, -0.073382966, 0.38922706, -0.4403348, 0.80574346, 0.3, 1, -0.10632607, 0.40261003, -0.41415972, 0.80936503, 0.33333334, 1, -0.16214292, 0.4344865, -0.36927068, 0.8053387, 0.36666667, 1, -0.22552416, 0.4925329, -0.31764525, 0.77823627, 0.4, 1, -0.2680392, 0.5671185, -0.28282684, 0.72563124, 0.43333334, 1, -0.27795827, 0.6372119, -0.27499014, 0.664139, 0.46666667, 1, -0.2666859, 0.68418556, -0.28469494, 0.6162123, 0.5, 1, -0.25816974, 0.70056593, -0.29189405, 0.59779066)
|
||||||
|
tracks/6/type = "rotation_3d"
|
||||||
|
tracks/6/imported = true
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("GeneralSkeleton:LeftLowerArm")
|
||||||
|
tracks/6/interp = 0
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = PackedFloat32Array(0, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.033333335, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.06666667, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.1, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.13333334, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.16666667, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.2, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.23333333, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.26666668, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.3, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.33333334, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.36666667, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.4, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.43333334, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.46666667, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.5, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543)
|
||||||
|
tracks/7/type = "rotation_3d"
|
||||||
|
tracks/7/imported = true
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("GeneralSkeleton:RightShoulder")
|
||||||
|
tracks/7/interp = 0
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = PackedFloat32Array(0, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.033333335, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.06666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.1, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.13333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.16666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.2, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.23333333, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.26666668, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.3, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.33333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.36666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.4, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.43333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.46666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.5, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115)
|
||||||
|
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, -0.26573053, -0.697032, 0.30054164, 0.59431344, 0.033333335, 1, -0.26514634, -0.7149297, 0.2971665, 0.5746869, 0.06666667, 1, -0.27849984, -0.75604916, 0.2730258, 0.5256277, 0.1, 1, -0.32284456, -0.79228413, 0.2130898, 0.47185802, 0.13333334, 1, -0.38520038, -0.80033016, 0.13477506, 0.43923572, 0.16666667, 1, -0.43050346, -0.7913746, 0.08032379, 0.42654556, 0.2, 1, -0.43999317, -0.79654443, 0.075375274, 0.40772733, 0.23333333, 1, -0.4221509, -0.81570446, 0.10790816, 0.38048744, 0.26666668, 1, -0.38773796, -0.8319144, 0.15990397, 0.36332962, 0.3, 1, -0.35406128, -0.8346237, 0.20647971, 0.36798105, 0.33333334, 1, -0.32361048, -0.8239212, 0.24414822, 0.39600748, 0.36666667, 1, -0.29427922, -0.8001748, 0.2781188, 0.4424591, 0.4, 1, -0.27420318, -0.76725876, 0.29920068, 0.49659392, 0.43333334, 1, -0.2655884, -0.73324066, 0.30566746, 0.5462494, 0.46666667, 1, -0.26483387, -0.70721585, 0.30311957, 0.5812292, 0.5, 1, -0.26573053, -0.697032, 0.30054164, 0.59431344)
|
||||||
|
tracks/9/type = "rotation_3d"
|
||||||
|
tracks/9/imported = true
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("GeneralSkeleton:RightLowerArm")
|
||||||
|
tracks/9/interp = 0
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = PackedFloat32Array(0, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.033333335, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.06666667, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.1, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.13333334, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.16666667, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.2, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.23333333, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.26666668, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.3, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.33333334, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.36666667, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.4, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.43333334, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.46666667, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.5, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483)
|
||||||
|
tracks/10/type = "rotation_3d"
|
||||||
|
tracks/10/imported = true
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("GeneralSkeleton:RightHand")
|
||||||
|
tracks/10/interp = 1
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = PackedFloat32Array(0, 1, 0.054799054, -0.029264994, 0.022636186, 0.9978118, 0.033333335, 1, 0.09116625, -0.030299483, 0.017239934, 0.99522537, 0.06666667, 1, 0.1792024, -0.031148527, 0.0026243937, 0.9833155, 0.1, 1, 0.28657147, -0.028187746, -0.018351056, 0.9574683, 0.13333334, 1, 0.38179466, -0.019808618, -0.042242225, 0.9230688, 0.16666667, 1, 0.43715477, -0.008034734, -0.06635708, 0.89689904, 0.2, 1, 0.4413841, 0.008025636, -0.102265455, 0.8914356, 0.23333333, 1, 0.41133982, 0.024515117, -0.15049958, 0.898637, 0.26666668, 1, 0.36485913, 0.031785246, -0.19221742, 0.91045046, 0.3, 1, 0.32080913, 0.027082542, -0.20654342, 0.92395234, 0.33333334, 1, 0.27664217, 0.012455983, -0.18589148, 0.94273984, 0.36666667, 1, 0.22133993, -0.005549015, -0.14327416, 0.9645986, 0.4, 1, 0.16233869, -0.019880194, -0.08901763, 0.9825105, 0.43333334, 1, 0.1086173, -0.02742521, -0.035009094, 0.99308836, 0.46666667, 1, 0.06971694, -0.029351225, 0.0062599927, 0.9971153, 0.5, 1, 0.05479905, -0.029264992, 0.022636186, 0.99781173)
|
||||||
|
tracks/11/type = "rotation_3d"
|
||||||
|
tracks/11/imported = true
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("GeneralSkeleton:LeftUpperLeg")
|
||||||
|
tracks/11/interp = 1
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = PackedFloat32Array(0, 1, 0.940883, 0.002736509, -0.011184356, 0.33853605, 0.033333335, 1, 0.95359963, 0.0031790503, -0.011066673, 0.3008575, 0.06666667, 1, 0.97807544, 0.0042266664, -0.010710288, 0.20793241, 0.1, 1, 0.99572897, 0.005455532, -0.010139569, 0.09160368, 0.13333334, 1, -0.9998514, -0.006484103, 0.009514669, 0.01282902, 0.16666667, 1, -0.9975223, -0.007012268, 0.009132348, 0.06940254, 0.2, 1, -0.9984808, -0.006869409, 0.009240263, 0.053885274, 0.23333333, 1, 0.9998637, 0.006247379, -0.009671679, 0.011837006, 0.26666668, 1, 0.9955911, 0.005440297, -0.0101476265, 0.09309016, 0.3, 1, 0.98783773, 0.0047961557, -0.010467494, 0.15506156, 0.33333334, 1, 0.9802868, 0.0043432433, -0.010663417, 0.19724432, 0.36666667, 1, 0.9708555, 0.003878744, -0.01084106, 0.239389, 0.4, 1, 0.9605328, 0.0034431806, -0.010987218, 0.27792844, 0.43333334, 1, 0.95084333, 0.0030789094, -0.011095029, 0.30945826, 0.46666667, 1, 0.94365674, 0.002829119, -0.011161284, 0.3307257, 0.5, 1, 0.940883, 0.002736509, -0.011184356, 0.33853605)
|
||||||
|
tracks/12/type = "position_3d"
|
||||||
|
tracks/12/imported = true
|
||||||
|
tracks/12/enabled = true
|
||||||
|
tracks/12/path = NodePath("GeneralSkeleton:RightUpperLeg")
|
||||||
|
tracks/12/interp = 1
|
||||||
|
tracks/12/loop_wrap = true
|
||||||
|
tracks/12/keys = PackedFloat32Array(0, 1, -0.15831876, 0.04106916, 0.06262902, 0.033333335, 1, -0.15831876, 0.04181904, 0.06392613, 0.06666667, 1, -0.15831876, 0.043666687, 0.06712217, 0.1, 1, -0.15831876, 0.04600911, 0.071174026, 0.13333334, 1, -0.15831874, 0.048243314, 0.075038664, 0.16666667, 1, -0.15831874, 0.049766246, 0.077673055, 0.2, 1, -0.15831873, 0.050472874, 0.078895375, 0.23333333, 1, -0.15831874, 0.050684266, 0.07926103, 0.26666668, 1, -0.15831873, 0.050436653, 0.07883269, 0.3, 1, -0.15831873, 0.049766243, 0.07767304, 0.33333334, 1, -0.15831874, 0.04851806, 0.07551395, 0.36666667, 1, -0.15831874, 0.046738375, 0.07243548, 0.4, 1, -0.15831876, 0.04476542, 0.069022715, 0.43333334, 1, -0.15831877, 0.042937417, 0.065860696, 0.46666667, 1, -0.15831876, 0.041592598, 0.06353443, 0.5, 1, -0.15831876, 0.04106916, 0.06262902)
|
||||||
|
tracks/13/type = "rotation_3d"
|
||||||
|
tracks/13/imported = true
|
||||||
|
tracks/13/enabled = true
|
||||||
|
tracks/13/path = NodePath("GeneralSkeleton:RightUpperLeg")
|
||||||
|
tracks/13/interp = 1
|
||||||
|
tracks/13/loop_wrap = true
|
||||||
|
tracks/13/keys = PackedFloat32Array(0, 1, 0.9408831, -0.0027364467, 0.01118454, 0.33853588, 0.033333335, 1, 0.9295263, -0.0023758565, 0.0112666255, 0.36857602, 0.06666667, 1, 0.89747906, -0.0014777216, 0.011419137, 0.44090685, 0.1, 1, 0.8488037, -0.0003265249, 0.011509653, 0.52858275, 0.13333334, 1, 0.794415, 0.0007746947, 0.0114881275, 0.6072662, 0.16666667, 1, 0.753141, 0.001521891, 0.011413154, 0.6577584, 0.2, 1, 0.7328909, 0.0018665802, 0.011361854, 0.68024874, 0.23333333, 1, 0.72670186, 0.0019693715, 0.011344478, 0.6868565, 0.26666668, 1, 0.73394585, 0.0018489419, 0.011364738, 0.6791104, 0.3, 1, 0.753141, 0.0015218906, 0.011413154, 0.6577584, 0.33333334, 1, 0.7872135, 0.0009098337, 0.011478209, 0.61657304, 0.36666667, 1, 0.8318815, 3.3089607e-05, 0.011514217, 0.5548337, 0.4, 1, 0.8757436, -0.00093888794, 0.011475979, 0.48263916, 0.43333334, 1, 0.91081107, -0.0018336351, 0.011367436, 0.41266286, 0.46666667, 1, 0.9330573, -0.0024850215, 0.011243059, 0.35954335, 0.5, 1, 0.94088304, -0.0027364467, 0.01118454, 0.33853588)
|
||||||
|
tracks/14/type = "rotation_3d"
|
||||||
|
tracks/14/imported = true
|
||||||
|
tracks/14/enabled = true
|
||||||
|
tracks/14/path = NodePath("GeneralSkeleton:RightLowerLeg")
|
||||||
|
tracks/14/interp = 1
|
||||||
|
tracks/14/loop_wrap = true
|
||||||
|
tracks/14/keys = PackedFloat32Array(0, 1, 0.0102453865, -0.009662866, -0.006262624, 0.9998812, 0.033333335, 1, 0.022396868, -0.009706593, -0.0061279926, 0.99968326, 0.06666667, 1, 0.052318934, -0.009833763, -0.005804949, 0.99856514, 0.1, 1, 0.090182155, -0.010034798, -0.0054152613, 0.99586, 0.13333334, 1, 0.12617503, -0.010266847, -0.005066629, 0.9919419, 0.16666667, 1, 0.15061763, -0.010446889, -0.0048431023, 0.98852503, 0.2, 1, 0.16192855, -0.010536185, -0.0047435127, 0.98673487, 0.23333333, 1, 0.16530792, -0.010563652, -0.0047142715, 0.98617417, 0.26666668, 1, 0.16134892, -0.010531581, -0.0047485135, 0.9868299, 0.3, 1, 0.15061763, -0.010446888, -0.004843102, 0.98852503, 0.33333334, 1, 0.13059099, -0.010297978, -0.0050254907, 0.99137014, 0.36666667, 1, 0.10194602, -0.0101064015, -0.005298909, 0.9947245, 0.4, 1, 0.07009181, -0.009922613, -0.0056192903, 0.9974754, 0.43333334, 1, 0.040512785, -0.009780071, -0.005930932, 0.99911356, 0.46666667, 1, 0.01872768, -0.009692917, -0.0061684684, 0.99975866, 0.5, 1, 0.0102453865, -0.009662866, -0.006262624, 0.9998812)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_p0uhi"]
|
||||||
|
length = 0.5
|
||||||
|
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, 0.34238845, 1.5708939e-07, -5.5968407e-08, 0.9395585, 0.033333335, 1, 0.3305442, 1.5623375e-07, -4.5335742e-08, 0.94379056, 0.06666667, 1, 0.301523, 1.5505638e-07, -1.9152363e-08, 0.9534589, 0.1, 1, 0.26518956, 1.5532987e-07, 1.39529295e-08, 0.9641963, 0.13333334, 1, 0.23179884, 1.5667713e-07, 4.533578e-08, 0.9727638, 0.16666667, 1, 0.21196172, 1.5609982e-07, 6.6536835e-08, 0.977278, 0.2, 1, 0.21154101, 1.4794188e-07, 7.5990435e-08, 0.9773691, 0.23333333, 1, 0.22426, 1.3351601e-07, 7.7956074e-08, 0.9745293, 0.26666668, 1, 0.2425952, 1.1952865e-07, 7.2984484e-08, 0.9701276, 0.3, 1, 0.25909162, 1.1277934e-07, 6.2371846e-08, 0.9658528, 0.33333334, 1, 0.27442306, 1.148871e-07, 4.4474916e-08, 0.96160907, 0.36666667, 1, 0.29247355, 1.2213901e-07, 1.9690756e-08, 0.9562736, 0.4, 1, 0.31072947, 1.326901e-07, -7.1720985e-09, 0.9504984, 0.43333334, 1, 0.32673204, 1.4408309e-07, -3.1553007e-08, 0.945117, 0.46666667, 1, 0.33807683, 1.5330711e-07, -4.9181153e-08, 0.9411185, 0.5, 1, 0.34238845, 1.5708939e-07, -5.5968407e-08, 0.9395585)
|
||||||
|
tracks/1/type = "rotation_3d"
|
||||||
|
tracks/1/imported = true
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = PackedFloat32Array(0, 1, -0.31937256, 1.9802002e-07, -3.665855e-07, 0.9476293, 0.033333335, 1, -0.33358824, 0.0012690381, -0.0018437031, 0.94271624, 0.06666667, 1, -0.36740822, 0.004161775, -0.0065399446, 0.9300275, 0.1, 1, -0.40766144, 0.0073642395, -0.012770037, 0.9130142, 0.13333334, 1, -0.44178134, 0.009988794, -0.018933056, 0.89686733, 0.16666667, 1, -0.45800525, 0.011690596, -0.023166168, 0.88857067, 0.2, 1, -0.44634637, 0.012967478, -0.024879681, 0.8944204, 0.23333333, 1, -0.41446674, 0.014149548, -0.02495417, 0.90961224, 0.26666668, 1, -0.3776802, 0.014748214, -0.023739967, 0.9255142, 0.3, 1, -0.3522593, 0.014289263, -0.021660056, 0.93554264, 0.33333334, 1, -0.3399939, 0.012479725, -0.018391669, 0.940165, 0.36666667, 1, -0.33112267, 0.009629176, -0.013909034, 0.9434361, 0.4, 1, -0.32515508, 0.0063351113, -0.009029623, 0.9455964, 0.43333334, 1, -0.32157147, 0.003219309, -0.004552275, 0.9468689, 0.46666667, 1, -0.3198295, 0.00090443454, -0.0012739573, 0.9474738, 0.5, 1, -0.31937256, 1.9802002e-07, -3.665855e-07, 0.9476293)
|
||||||
|
tracks/2/type = "rotation_3d"
|
||||||
|
tracks/2/imported = true
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("GeneralSkeleton:Head")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = PackedFloat32Array(0, 1, -0.17886406, -3.554911e-07, -2.4261183e-07, 0.98387384, 0.033333335, 1, -0.18172997, -8.714442e-05, -0.00012339467, 0.9833485, 0.06666667, 1, -0.18745717, -0.00026321414, -0.00036816578, 0.9822727, 0.1, 1, -0.19174813, -0.00039689787, -0.00055041583, 0.98144394, 0.13333334, 1, -0.19031827, -0.0003522195, -0.00048988627, 0.9817223, 0.16666667, 1, -0.17886408, -3.5629157e-07, -2.422548e-07, 0.98387384, 0.2, 1, -0.14348157, 0.0010094029, 0.0015552446, 0.98965126, 0.23333333, 1, -0.08865402, 0.0023420877, 0.004085629, 0.9960514, 0.26666668, 1, -0.038101744, 0.0033183873, 0.006534733, 0.999247, 0.3, 1, -0.015910111, 0.003669463, 0.0076415697, 0.9998375, 0.33333334, 1, -0.028050866, 0.003483296, 0.007033757, 0.9995757, 0.36666667, 1, -0.058380038, 0.002956091, 0.0055398243, 0.99827474, 0.4, 1, -0.09772128, 0.0021412498, 0.0036576986, 0.99520487, 0.43333334, 1, -0.13690743, 0.001184109, 0.0018512, 0.99058145, 0.46666667, 1, -0.16690645, 0.00035402534, 0.00051823625, 0.9859726, 0.5, 1, -0.17886406, -3.554911e-07, -2.4261183e-07, 0.98387384)
|
||||||
|
tracks/3/type = "rotation_3d"
|
||||||
|
tracks/3/imported = true
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/3/interp = 0
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = PackedFloat32Array(0, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.033333335, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.06666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.1, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.13333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.16666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.2, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.23333333, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.26666668, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.3, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.33333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.36666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.4, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.43333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.46666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.5, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077)
|
||||||
|
tracks/4/type = "position_3d"
|
||||||
|
tracks/4/imported = true
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = PackedFloat32Array(0, 1, -0.0016287112, 0.14501561, 0.00025158125, 0.033333335, 1, -0.0014169419, 0.14814326, 0.0005686792, 0.06666667, 1, -0.00089517375, 0.15584946, 0.0013501979, 0.1, 1, -0.00023364913, 0.16561928, 0.0023408532, 0.13333334, 1, 0.0003972705, 0.17493771, 0.0032857032, 0.16666667, 1, 0.00082737766, 0.18128975, 0.003929783, 0.2, 1, 0.0010269169, 0.18423694, 0.0042286315, 0.23333333, 1, 0.0010866298, 0.18511865, 0.004318045, 0.26666668, 1, 0.0010166873, 0.18408589, 0.0042133117, 0.3, 1, 0.0008273692, 0.18128976, 0.0039298316, 0.33333334, 1, 0.0004748591, 0.17608373, 0.0034018615, 0.36666667, 1, -2.7718546e-05, 0.16866097, 0.0026492667, 0.4, 1, -0.00058487325, 0.16043212, 0.0018148312, 0.43333334, 1, -0.0011011158, 0.15280783, 0.001041744, 0.46666667, 1, -0.0014808996, 0.14719877, 0.0004730025, 0.5, 1, -0.0016287112, 0.14501561, 0.00025158125)
|
||||||
|
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, -0.25816974, 0.70056593, -0.29189405, 0.59779066, 0.033333335, 1, -0.2696654, 0.67672503, -0.2821626, 0.624266, 0.06666667, 1, -0.27750358, 0.6097148, -0.27519694, 0.68956965, 0.1, 1, -0.24490495, 0.5193297, -0.30176663, 0.76108813, 0.13333334, 1, -0.17328225, 0.44258872, -0.3602416, 0.80269206, 0.16666667, 1, -0.10632605, 0.40261003, -0.41415966, 0.80936503, 0.2, 1, -0.07155382, 0.3885845, -0.4417803, 0.8054268, 0.23333333, 1, -0.060796093, 0.38500503, -0.45026466, 0.8033285, 0.26666668, 1, -0.073382966, 0.38922706, -0.4403348, 0.80574346, 0.3, 1, -0.10632607, 0.40261003, -0.41415972, 0.80936503, 0.33333334, 1, -0.16214292, 0.4344865, -0.36927068, 0.8053387, 0.36666667, 1, -0.22552416, 0.4925329, -0.31764525, 0.77823627, 0.4, 1, -0.2680392, 0.5671185, -0.28282684, 0.72563124, 0.43333334, 1, -0.27795827, 0.6372119, -0.27499014, 0.664139, 0.46666667, 1, -0.2666859, 0.68418556, -0.28469494, 0.6162123, 0.5, 1, -0.25816974, 0.70056593, -0.29189405, 0.59779066)
|
||||||
|
tracks/6/type = "rotation_3d"
|
||||||
|
tracks/6/imported = true
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("GeneralSkeleton:LeftLowerArm")
|
||||||
|
tracks/6/interp = 0
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = PackedFloat32Array(0, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.033333335, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.06666667, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.1, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.13333334, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.16666667, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.2, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.23333333, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.26666668, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.3, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.33333334, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.36666667, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.4, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.43333334, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.46666667, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543, 0.5, 1, 0.47699112, -0.057332963, -0.11453373, 0.86952543)
|
||||||
|
tracks/7/type = "rotation_3d"
|
||||||
|
tracks/7/imported = true
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("GeneralSkeleton:RightShoulder")
|
||||||
|
tracks/7/interp = 0
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = PackedFloat32Array(0, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.033333335, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.06666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.1, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.13333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.16666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.2, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.23333333, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.26666668, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.3, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.33333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.36666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.4, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.43333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.46666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.5, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115)
|
||||||
|
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, -0.26573053, -0.697032, 0.30054164, 0.59431344, 0.033333335, 1, -0.26514634, -0.7149297, 0.2971665, 0.5746869, 0.06666667, 1, -0.27849984, -0.75604916, 0.2730258, 0.5256277, 0.1, 1, -0.32284456, -0.79228413, 0.2130898, 0.47185802, 0.13333334, 1, -0.38520038, -0.80033016, 0.13477506, 0.43923572, 0.16666667, 1, -0.43050346, -0.7913746, 0.08032379, 0.42654556, 0.2, 1, -0.43999317, -0.79654443, 0.075375274, 0.40772733, 0.23333333, 1, -0.4221509, -0.81570446, 0.10790816, 0.38048744, 0.26666668, 1, -0.38773796, -0.8319144, 0.15990397, 0.36332962, 0.3, 1, -0.35406128, -0.8346237, 0.20647971, 0.36798105, 0.33333334, 1, -0.32361048, -0.8239212, 0.24414822, 0.39600748, 0.36666667, 1, -0.29427922, -0.8001748, 0.2781188, 0.4424591, 0.4, 1, -0.27420318, -0.76725876, 0.29920068, 0.49659392, 0.43333334, 1, -0.2655884, -0.73324066, 0.30566746, 0.5462494, 0.46666667, 1, -0.26483387, -0.70721585, 0.30311957, 0.5812292, 0.5, 1, -0.26573053, -0.697032, 0.30054164, 0.59431344)
|
||||||
|
tracks/9/type = "rotation_3d"
|
||||||
|
tracks/9/imported = true
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("GeneralSkeleton:RightLowerArm")
|
||||||
|
tracks/9/interp = 0
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = PackedFloat32Array(0, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.033333335, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.06666667, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.1, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.13333334, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.16666667, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.2, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.23333333, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.26666668, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.3, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.33333334, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.36666667, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.4, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.43333334, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.46666667, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483, 0.5, 1, 0.48328775, -0.0052842963, 0.021366991, 0.87518483)
|
||||||
|
tracks/10/type = "rotation_3d"
|
||||||
|
tracks/10/imported = true
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("GeneralSkeleton:RightHand")
|
||||||
|
tracks/10/interp = 1
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = PackedFloat32Array(0, 1, 0.054799054, -0.029264994, 0.022636186, 0.9978118, 0.033333335, 1, 0.09116625, -0.030299483, 0.017239934, 0.99522537, 0.06666667, 1, 0.1792024, -0.031148527, 0.0026243937, 0.9833155, 0.1, 1, 0.28657147, -0.028187746, -0.018351056, 0.9574683, 0.13333334, 1, 0.38179466, -0.019808618, -0.042242225, 0.9230688, 0.16666667, 1, 0.43715477, -0.008034734, -0.06635708, 0.89689904, 0.2, 1, 0.4413841, 0.008025636, -0.102265455, 0.8914356, 0.23333333, 1, 0.41133982, 0.024515117, -0.15049958, 0.898637, 0.26666668, 1, 0.36485913, 0.031785246, -0.19221742, 0.91045046, 0.3, 1, 0.32080913, 0.027082542, -0.20654342, 0.92395234, 0.33333334, 1, 0.27664217, 0.012455983, -0.18589148, 0.94273984, 0.36666667, 1, 0.22133993, -0.005549015, -0.14327416, 0.9645986, 0.4, 1, 0.16233869, -0.019880194, -0.08901763, 0.9825105, 0.43333334, 1, 0.1086173, -0.02742521, -0.035009094, 0.99308836, 0.46666667, 1, 0.06971694, -0.029351225, 0.0062599927, 0.9971153, 0.5, 1, 0.05479905, -0.029264992, 0.022636186, 0.99781173)
|
||||||
|
tracks/11/type = "rotation_3d"
|
||||||
|
tracks/11/imported = true
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("GeneralSkeleton:LeftUpperLeg")
|
||||||
|
tracks/11/interp = 1
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = PackedFloat32Array(0, 1, 0.940883, 0.002736509, -0.011184356, 0.33853605, 0.033333335, 1, 0.95359963, 0.0031790503, -0.011066673, 0.3008575, 0.06666667, 1, 0.97807544, 0.0042266664, -0.010710288, 0.20793241, 0.1, 1, 0.99572897, 0.005455532, -0.010139569, 0.09160368, 0.13333334, 1, -0.9998514, -0.006484103, 0.009514669, 0.01282902, 0.16666667, 1, -0.9975223, -0.007012268, 0.009132348, 0.06940254, 0.2, 1, -0.9984808, -0.006869409, 0.009240263, 0.053885274, 0.23333333, 1, 0.9998637, 0.006247379, -0.009671679, 0.011837006, 0.26666668, 1, 0.9955911, 0.005440297, -0.0101476265, 0.09309016, 0.3, 1, 0.98783773, 0.0047961557, -0.010467494, 0.15506156, 0.33333334, 1, 0.9802868, 0.0043432433, -0.010663417, 0.19724432, 0.36666667, 1, 0.9708555, 0.003878744, -0.01084106, 0.239389, 0.4, 1, 0.9605328, 0.0034431806, -0.010987218, 0.27792844, 0.43333334, 1, 0.95084333, 0.0030789094, -0.011095029, 0.30945826, 0.46666667, 1, 0.94365674, 0.002829119, -0.011161284, 0.3307257, 0.5, 1, 0.940883, 0.002736509, -0.011184356, 0.33853605)
|
||||||
|
tracks/12/type = "position_3d"
|
||||||
|
tracks/12/imported = true
|
||||||
|
tracks/12/enabled = true
|
||||||
|
tracks/12/path = NodePath("GeneralSkeleton:RightUpperLeg")
|
||||||
|
tracks/12/interp = 1
|
||||||
|
tracks/12/loop_wrap = true
|
||||||
|
tracks/12/keys = PackedFloat32Array(0, 1, -0.15831876, 0.04106916, 0.06262902, 0.033333335, 1, -0.15831876, 0.04181904, 0.06392613, 0.06666667, 1, -0.15831876, 0.043666687, 0.06712217, 0.1, 1, -0.15831876, 0.04600911, 0.071174026, 0.13333334, 1, -0.15831874, 0.048243314, 0.075038664, 0.16666667, 1, -0.15831874, 0.049766246, 0.077673055, 0.2, 1, -0.15831873, 0.050472874, 0.078895375, 0.23333333, 1, -0.15831874, 0.050684266, 0.07926103, 0.26666668, 1, -0.15831873, 0.050436653, 0.07883269, 0.3, 1, -0.15831873, 0.049766243, 0.07767304, 0.33333334, 1, -0.15831874, 0.04851806, 0.07551395, 0.36666667, 1, -0.15831874, 0.046738375, 0.07243548, 0.4, 1, -0.15831876, 0.04476542, 0.069022715, 0.43333334, 1, -0.15831877, 0.042937417, 0.065860696, 0.46666667, 1, -0.15831876, 0.041592598, 0.06353443, 0.5, 1, -0.15831876, 0.04106916, 0.06262902)
|
||||||
|
tracks/13/type = "rotation_3d"
|
||||||
|
tracks/13/imported = true
|
||||||
|
tracks/13/enabled = true
|
||||||
|
tracks/13/path = NodePath("GeneralSkeleton:RightUpperLeg")
|
||||||
|
tracks/13/interp = 1
|
||||||
|
tracks/13/loop_wrap = true
|
||||||
|
tracks/13/keys = PackedFloat32Array(0, 1, 0.9408831, -0.0027364467, 0.01118454, 0.33853588, 0.033333335, 1, 0.9295263, -0.0023758565, 0.0112666255, 0.36857602, 0.06666667, 1, 0.89747906, -0.0014777216, 0.011419137, 0.44090685, 0.1, 1, 0.8488037, -0.0003265249, 0.011509653, 0.52858275, 0.13333334, 1, 0.794415, 0.0007746947, 0.0114881275, 0.6072662, 0.16666667, 1, 0.753141, 0.001521891, 0.011413154, 0.6577584, 0.2, 1, 0.7328909, 0.0018665802, 0.011361854, 0.68024874, 0.23333333, 1, 0.72670186, 0.0019693715, 0.011344478, 0.6868565, 0.26666668, 1, 0.73394585, 0.0018489419, 0.011364738, 0.6791104, 0.3, 1, 0.753141, 0.0015218906, 0.011413154, 0.6577584, 0.33333334, 1, 0.7872135, 0.0009098337, 0.011478209, 0.61657304, 0.36666667, 1, 0.8318815, 3.3089607e-05, 0.011514217, 0.5548337, 0.4, 1, 0.8757436, -0.00093888794, 0.011475979, 0.48263916, 0.43333334, 1, 0.91081107, -0.0018336351, 0.011367436, 0.41266286, 0.46666667, 1, 0.9330573, -0.0024850215, 0.011243059, 0.35954335, 0.5, 1, 0.94088304, -0.0027364467, 0.01118454, 0.33853588)
|
||||||
|
tracks/14/type = "rotation_3d"
|
||||||
|
tracks/14/imported = true
|
||||||
|
tracks/14/enabled = true
|
||||||
|
tracks/14/path = NodePath("GeneralSkeleton:RightLowerLeg")
|
||||||
|
tracks/14/interp = 1
|
||||||
|
tracks/14/loop_wrap = true
|
||||||
|
tracks/14/keys = PackedFloat32Array(0, 1, 0.0102453865, -0.009662866, -0.006262624, 0.9998812, 0.033333335, 1, 0.022396868, -0.009706593, -0.0061279926, 0.99968326, 0.06666667, 1, 0.052318934, -0.009833763, -0.005804949, 0.99856514, 0.1, 1, 0.090182155, -0.010034798, -0.0054152613, 0.99586, 0.13333334, 1, 0.12617503, -0.010266847, -0.005066629, 0.9919419, 0.16666667, 1, 0.15061763, -0.010446889, -0.0048431023, 0.98852503, 0.2, 1, 0.16192855, -0.010536185, -0.0047435127, 0.98673487, 0.23333333, 1, 0.16530792, -0.010563652, -0.0047142715, 0.98617417, 0.26666668, 1, 0.16134892, -0.010531581, -0.0047485135, 0.9868299, 0.3, 1, 0.15061763, -0.010446888, -0.004843102, 0.98852503, 0.33333334, 1, 0.13059099, -0.010297978, -0.0050254907, 0.99137014, 0.36666667, 1, 0.10194602, -0.0101064015, -0.005298909, 0.9947245, 0.4, 1, 0.07009181, -0.009922613, -0.0056192903, 0.9974754, 0.43333334, 1, 0.040512785, -0.009780071, -0.005930932, 0.99911356, 0.46666667, 1, 0.01872768, -0.009692917, -0.0061684684, 0.99975866, 0.5, 1, 0.0102453865, -0.009662866, -0.006262624, 0.9998812)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_xciuw"]
|
||||||
|
length = 0.53333336
|
||||||
|
tracks/0/type = "position_3d"
|
||||||
|
tracks/0/imported = true
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = PackedFloat32Array(0, 1, 3.953068e-15, 0.05906236, 4.1416266e-09, 0.033333335, 1, 3.953068e-15, 0.05906236, 4.1416266e-09, 0.06666667, 1, -1.9968326e-10, 0.058797363, 0.00022272498, 0.1, 1, -7.1775574e-10, 0.058109824, 0.0008005711, 0.13333334, 1, -1.4327217e-09, 0.057161, 0.0015980205, 0.16666667, 1, -2.2230955e-09, 0.056112114, 0.0024795649, 0.2, 1, -2.9673803e-09, 0.05512437, 0.0033097274, 0.23333333, 1, -3.5441032e-09, 0.05435902, 0.003952971, 0.26666668, 1, -3.831766e-09, 0.05397725, 0.004273831, 0.3, 1, -3.745699e-09, 0.054091476, 0.0041778344, 0.33333334, 1, -3.348519e-09, 0.05461856, 0.0037348378, 0.36666667, 1, -2.739646e-09, 0.055426586, 0.0030557234, 0.4, 1, -2.018518e-09, 0.056383602, 0.0022513932, 0.43333334, 1, -1.2845572e-09, 0.05735763, 0.0014327582, 0.46666667, 1, -6.37204e-10, 0.058216736, 0.00071071676, 0.5, 1, -1.7587007e-10, 0.058828965, 0.00019616645, 0.53333336, 1, 3.953068e-15, 0.05906236, 4.1416266e-09)
|
||||||
|
tracks/1/type = "rotation_3d"
|
||||||
|
tracks/1/imported = true
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/1/interp = 0
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = PackedFloat32Array(0, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.033333335, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.06666667, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.1, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.13333334, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.16666667, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.2, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.23333333, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.26666668, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.3, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.33333334, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.36666667, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.4, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.43333334, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.46666667, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.5, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.53333336, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262)
|
||||||
|
tracks/2/type = "position_3d"
|
||||||
|
tracks/2/imported = true
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("GeneralSkeleton:Head")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = PackedFloat32Array(0, 1, -4.6746674e-14, 0.2846942, 4.029311e-08, 0.033333335, 1, -4.6746674e-14, 0.2846942, 4.029311e-08, 0.06666667, 1, 1.8372835e-11, 0.28409952, -4.25255e-05, 0.1, 1, 6.628614e-11, 0.28255674, -0.00015297998, 0.13333334, 1, 1.3236509e-10, 0.28042763, -0.00030540815, 0.16666667, 1, 2.0540808e-10, 0.2780739, -0.0004739114, 0.2, 1, 2.7420188e-10, 0.27585748, -0.0006325992, 0.23333333, 1, 3.274454e-10, 0.2741401, -0.00075552636, 0.26666668, 1, 3.5398307e-10, 0.2732835, -0.0008168635, 0.3, 1, 3.4606162e-10, 0.27353978, -0.00079850736, 0.33333334, 1, 3.0935515e-10, 0.2747225, -0.000713845, 0.36666667, 1, 2.5311647e-10, 0.2765357, -0.0005840312, 0.4, 1, 1.8652813e-10, 0.27868313, -0.0004302963, 0.43333334, 1, 1.1868731e-10, 0.2808688, -0.0002738157, 0.46666667, 1, 5.888155e-11, 0.28279662, -0.0001358146, 0.5, 1, 1.6273892e-11, 0.28417036, -3.7479695e-05, 0.53333336, 1, -4.6746674e-14, 0.2846942, 4.029311e-08)
|
||||||
|
tracks/3/type = "rotation_3d"
|
||||||
|
tracks/3/imported = true
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("GeneralSkeleton:Head")
|
||||||
|
tracks/3/interp = 0
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = PackedFloat32Array(0, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.033333335, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.06666667, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.1, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.13333334, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.16666667, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.2, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.23333333, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.26666668, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.3, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.33333334, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.36666667, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.4, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.43333334, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.46666667, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.5, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.53333336, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635)
|
||||||
|
tracks/4/type = "position_3d"
|
||||||
|
tracks/4/imported = true
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/4/interp = 0
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = PackedFloat32Array(0, 1, 0.09795613, 0.42777258, 0.016737785, 0.033333335, 1, 0.09795613, 0.42777258, 0.016737785, 0.06666667, 1, 0.09795613, 0.42777258, 0.016737785, 0.1, 1, 0.09795613, 0.42777258, 0.016737785, 0.13333334, 1, 0.09795613, 0.42777258, 0.016737785, 0.16666667, 1, 0.09795613, 0.42777258, 0.016737785, 0.2, 1, 0.09795613, 0.42777258, 0.016737785, 0.23333333, 1, 0.09795613, 0.42777258, 0.016737785, 0.26666668, 1, 0.09795613, 0.42777258, 0.016737785, 0.3, 1, 0.09795613, 0.42777258, 0.016737785, 0.33333334, 1, 0.09795613, 0.42777258, 0.016737785, 0.36666667, 1, 0.09795613, 0.42777258, 0.016737785, 0.4, 1, 0.09795613, 0.42777258, 0.016737785, 0.43333334, 1, 0.09795613, 0.42777258, 0.016737785, 0.46666667, 1, 0.09795613, 0.42777258, 0.016737785, 0.5, 1, 0.09795613, 0.42777258, 0.016737785, 0.53333336, 1, 0.09795613, 0.42777258, 0.016737785)
|
||||||
|
tracks/5/type = "rotation_3d"
|
||||||
|
tracks/5/imported = true
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/5/interp = 0
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = PackedFloat32Array(0, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.033333335, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.06666667, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.1, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.13333334, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.16666667, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.2, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.23333333, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.26666668, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.3, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.33333334, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.36666667, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.4, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.43333334, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.46666667, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.5, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.53333336, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432)
|
||||||
|
tracks/6/type = "position_3d"
|
||||||
|
tracks/6/imported = true
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = PackedFloat32Array(0, 1, -0.0016287166, 0.14501561, 0.00025157674, 0.033333335, 1, -0.0016287166, 0.14501561, 0.00025157674, 0.06666667, 1, -0.0017734149, 0.14506163, -0.0003335565, 0.1, 1, -0.0021488192, 0.14518102, -0.0018515008, 0.13333334, 1, -0.0026668992, 0.1453458, -0.0039463816, 0.16666667, 1, -0.0032396442, 0.14552797, -0.006262323, 0.2, 1, -0.0037789438, 0.1456995, -0.008443098, 0.23333333, 1, -0.004196892, 0.14583242, -0.010132994, 0.26666668, 1, -0.0044053355, 0.14589871, -0.010975973, 0.3, 1, -0.0043429704, 0.14587888, -0.0107237045, 0.33333334, 1, -0.0040551536, 0.14578734, -0.009559953, 0.36666667, 1, -0.0036139528, 0.14564702, -0.007775792, 0.4, 1, -0.003091374, 0.14548081, -0.0056629023, 0.43333334, 1, -0.0025595534, 0.14531165, -0.0035123436, 0.46666667, 1, -0.0020904627, 0.14516246, -0.0016155058, 0.5, 1, -0.0017561435, 0.14505613, -0.00026364537, 0.53333336, 1, -0.0016287166, 0.14501561, 0.00025157674)
|
||||||
|
tracks/7/type = "rotation_3d"
|
||||||
|
tracks/7/imported = true
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/7/interp = 0
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = PackedFloat32Array(0, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.033333335, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.06666667, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.1, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.13333334, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.16666667, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.2, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.23333333, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.26666668, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.3, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.33333334, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.36666667, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.4, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.43333334, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.46666667, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.5, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.53333336, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397)
|
||||||
|
tracks/8/type = "rotation_3d"
|
||||||
|
tracks/8/imported = true
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("GeneralSkeleton:LeftLowerArm")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = PackedFloat32Array(0, 1, 0.33293048, -0.3350286, -0.27948672, 0.8359428, 0.033333335, 1, 0.33293048, -0.3350286, -0.27948672, 0.8359428, 0.06666667, 1, 0.3333426, -0.33511743, -0.27944934, 0.8357554, 0.1, 1, 0.33441046, -0.3353484, -0.27935344, 0.8352681, 0.13333334, 1, 0.33588165, -0.3356686, -0.27922368, 0.8345923, 0.16666667, 1, 0.337504, -0.3360242, -0.27908355, 0.8338412, 0.2, 1, 0.3390282, -0.33636126, -0.27895495, 0.8331297, 0.23333333, 1, 0.34020686, -0.33662364, -0.27885735, 0.8325758, 0.26666668, 1, 0.34079418, -0.33675486, -0.2788096, 0.83229846, 0.3, 1, 0.3406185, -0.33671555, -0.2788239, 0.8323815, 0.33333334, 1, 0.33980745, -0.3365345, -0.27889028, 0.83276385, 0.36666667, 1, 0.33856225, -0.33625814, -0.27899405, 0.83334774, 0.4, 1, 0.33708444, -0.3359321, -0.27911958, 0.83403593, 0.43333334, 1, 0.33557707, -0.33560196, -0.2792504, 0.83473265, 0.46666667, 1, 0.3342446, -0.3353123, -0.27936825, 0.835344, 0.5, 1, 0.33329365, -0.33510682, -0.27945387, 0.8357777, 0.53333336, 1, 0.33293048, -0.3350286, -0.27948672, 0.8359428)
|
||||||
|
tracks/9/type = "position_3d"
|
||||||
|
tracks/9/imported = true
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("GeneralSkeleton:RightShoulder")
|
||||||
|
tracks/9/interp = 0
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = PackedFloat32Array(0, 1, -0.09795646, 0.42777103, 0.016737178, 0.033333335, 1, -0.09795646, 0.42777103, 0.016737178, 0.06666667, 1, -0.09795646, 0.42777103, 0.016737178, 0.1, 1, -0.09795646, 0.42777103, 0.016737178, 0.13333334, 1, -0.09795646, 0.42777103, 0.016737178, 0.16666667, 1, -0.09795646, 0.42777103, 0.016737178, 0.2, 1, -0.09795646, 0.42777103, 0.016737178, 0.23333333, 1, -0.09795646, 0.42777103, 0.016737178, 0.26666668, 1, -0.09795646, 0.42777103, 0.016737178, 0.3, 1, -0.09795646, 0.42777103, 0.016737178, 0.33333334, 1, -0.09795646, 0.42777103, 0.016737178, 0.36666667, 1, -0.09795646, 0.42777103, 0.016737178, 0.4, 1, -0.09795646, 0.42777103, 0.016737178, 0.43333334, 1, -0.09795646, 0.42777103, 0.016737178, 0.46666667, 1, -0.09795646, 0.42777103, 0.016737178, 0.5, 1, -0.09795646, 0.42777103, 0.016737178, 0.53333336, 1, -0.09795646, 0.42777103, 0.016737178)
|
||||||
|
tracks/10/type = "rotation_3d"
|
||||||
|
tracks/10/imported = true
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("GeneralSkeleton:RightShoulder")
|
||||||
|
tracks/10/interp = 0
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = PackedFloat32Array(0, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.033333335, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.06666667, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.1, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.13333334, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.16666667, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.2, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.23333333, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.26666668, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.3, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.33333334, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.36666667, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.4, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.43333334, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.46666667, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.5, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.53333336, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513)
|
||||||
|
tracks/11/type = "position_3d"
|
||||||
|
tracks/11/imported = true
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("GeneralSkeleton:RightUpperArm")
|
||||||
|
tracks/11/interp = 1
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = PackedFloat32Array(0, 1, 0.00162871, 0.14501564, 0.00025160934, 0.033333335, 1, 0.00162871, 0.14501564, 0.00025160934, 0.06666667, 1, 0.0017734237, 0.14506167, -0.00033363982, 0.1, 1, 0.0021488585, 0.14518107, -0.0018515768, 0.13333334, 1, 0.002666969, 0.14534588, -0.003946391, 0.16666667, 1, 0.0032397194, 0.14552808, -0.0062623858, 0.2, 1, 0.0037791107, 0.14569964, -0.008443264, 0.23333333, 1, 0.0041970327, 0.14583257, -0.010133039, 0.26666668, 1, 0.0044054757, 0.14589885, -0.010975776, 0.3, 1, 0.004343134, 0.14587903, -0.010723805, 0.33333334, 1, 0.0040552947, 0.14578746, -0.009559882, 0.36666667, 1, 0.0036140687, 0.14564712, -0.007775907, 0.4, 1, 0.003091463, 0.1454809, -0.005662904, 0.43333334, 1, 0.0025596116, 0.14531171, -0.003512355, 0.46666667, 1, 0.0020904616, 0.14516251, -0.0016154677, 0.5, 1, 0.001756152, 0.14505614, -0.00026373038, 0.53333336, 1, 0.00162871, 0.14501564, 0.00025160934)
|
||||||
|
tracks/12/type = "rotation_3d"
|
||||||
|
tracks/12/imported = true
|
||||||
|
tracks/12/enabled = true
|
||||||
|
tracks/12/path = NodePath("GeneralSkeleton:RightUpperArm")
|
||||||
|
tracks/12/interp = 0
|
||||||
|
tracks/12/loop_wrap = true
|
||||||
|
tracks/12/keys = PackedFloat32Array(0, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.033333335, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.06666667, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.1, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.13333334, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.16666667, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.2, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.23333333, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.26666668, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.3, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.33333334, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.36666667, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.4, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.43333334, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.46666667, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.5, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.53333336, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673)
|
||||||
|
tracks/13/type = "rotation_3d"
|
||||||
|
tracks/13/imported = true
|
||||||
|
tracks/13/enabled = true
|
||||||
|
tracks/13/path = NodePath("GeneralSkeleton:RightLowerArm")
|
||||||
|
tracks/13/interp = 1
|
||||||
|
tracks/13/loop_wrap = true
|
||||||
|
tracks/13/keys = PackedFloat32Array(0, 1, 0.1464052, -0.005606344, 0.26349184, 0.9534706, 0.033333335, 1, 0.1464052, -0.005606344, 0.26349184, 0.9534706, 0.06666667, 1, 0.14572267, -0.0057624606, 0.26361868, 0.9535392, 0.1, 1, 0.14395136, -0.0061668158, 0.26394954, 0.9537142, 0.13333334, 1, 0.1415052, -0.0067227054, 0.26440892, 0.95394915, 0.16666667, 1, 0.1387989, -0.00733442, 0.26492098, 0.95420015, 0.2, 1, 0.13624829, -0.007907767, 0.2654071, 0.9544281, 0.23333333, 1, 0.13427058, -0.008350169, 0.2657863, 0.9545991, 0.26666668, 1, 0.13328372, -0.008570235, 0.26597643, 0.9546824, 0.3, 1, 0.133579, -0.008504472, 0.26591948, 0.9546577, 0.33333334, 1, 0.13494149, -0.008200373, 0.26565757, 0.95454156, 0.36666667, 1, 0.13702889, -0.007732628, 0.26525792, 0.95435923, 0.4, 1, 0.13949957, -0.007176376, 0.26478806, 0.95413613, 0.43333334, 1, 0.14201224, -0.006607715, 0.2643134, 0.9539011, 0.46666667, 1, 0.14422686, -0.0061040483, 0.26389793, 0.9536872, 0.5, 1, 0.14580408, -0.0057438863, 0.26360357, 0.95353097, 0.53333336, 1, 0.1464052, -0.005606344, 0.26349184, 0.9534706)
|
||||||
|
tracks/14/type = "rotation_3d"
|
||||||
|
tracks/14/imported = true
|
||||||
|
tracks/14/enabled = true
|
||||||
|
tracks/14/path = NodePath("GeneralSkeleton:RightHand")
|
||||||
|
tracks/14/interp = 0
|
||||||
|
tracks/14/loop_wrap = true
|
||||||
|
tracks/14/keys = PackedFloat32Array(0, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.033333335, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.06666667, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.1, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.13333334, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.16666667, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.2, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.23333333, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.26666668, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.3, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.33333334, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.36666667, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.4, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.43333334, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.46666667, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.5, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.53333336, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_3s20j"]
|
||||||
|
length = 0.53333336
|
||||||
|
tracks/0/type = "rotation_3d"
|
||||||
|
tracks/0/imported = true
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = PackedFloat32Array(0, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.033333335, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.06666667, 1, -0.36967796, 7.3622556e-07, -5.7895e-07, 0.92916, 0.1, 1, -0.3536466, 7.261619e-07, -5.915237e-07, 0.9353791, 0.13333334, 1, -0.3308425, 7.115929e-07, -6.0897213e-07, 0.94368595, 0.16666667, 1, -0.3045267, 6.5386905e-07, -5.016515e-07, 0.9525038, 0.2, 1, -0.27807885, 6.397511e-07, -5.1953555e-07, 0.96055824, 0.23333333, 1, -0.25499558, 5.93171e-07, -4.059512e-07, 0.96694225, 0.26666668, 1, -0.2388498, 5.863251e-07, -4.1577783e-07, 0.9710565, 0.3, 1, -0.22735487, 5.813696e-07, -4.2267945e-07, 0.973812, 0.33333334, 1, -0.21582797, 5.763327e-07, -4.295221e-07, 0.9764315, 0.36666667, 1, -0.20427102, 4.4086488e-07, -4.6350485e-07, 0.9789144, 0.4, 1, -0.19268551, 4.0969752e-07, -3.3802095e-07, 0.9812606, 0.43333334, 1, -0.2062531, 4.1433833e-07, -3.32316e-07, 0.9784987, 0.46666667, 1, -0.25086355, 3.002275e-07, -3.4639e-07, 0.9680225, 0.5, 1, -0.2977699, 3.1676177e-07, -3.3133762e-07, 0.95463765, 0.53333336, 1, -0.31937245, 3.2420442e-07, -3.240586e-07, 0.9476293)
|
||||||
|
tracks/1/type = "rotation_3d"
|
||||||
|
tracks/1/imported = true
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("GeneralSkeleton:Head")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = PackedFloat32Array(0, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.033333335, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.06666667, 1, -0.13616242, -3.6564734e-07, -2.2701663e-07, 0.99068654, 0.1, 1, -0.13362825, -3.6622666e-07, -2.2608072e-07, 0.9910315, 0.13333334, 1, -0.13035151, -3.669721e-07, -2.248688e-07, 0.99146783, 0.16666667, 1, -0.12710795, -3.6770567e-07, -2.2366741e-07, 0.9918889, 0.2, 1, -0.12467444, -3.6825315e-07, -2.2276468e-07, 0.9921977, 0.23333333, 1, -0.12382844, -3.6844298e-07, -2.2245058e-07, 0.99230367, 0.26666668, 1, -0.12534747, -3.6810195e-07, -2.2301448e-07, 0.9921129, 0.3, 1, -0.12830727, -3.6743478e-07, -2.2411179e-07, 0.99173445, 0.33333334, 1, -0.13126573, -3.6676465e-07, -2.2520717e-07, 0.9913472, 0.36666667, 1, -0.13422312, -3.660909e-07, -2.2630046e-07, 0.9909511, 0.4, 1, -0.1371792, -3.6541425e-07, -2.2739191e-07, 0.99054635, 0.43333334, 1, -0.14537111, -3.6351997e-07, -2.3040775e-07, 0.9893772, 0.46666667, 1, -0.1595296, -3.6018184e-07, -2.3559174e-07, 0.98719317, 0.5, 1, -0.17292085, -3.5694953e-07, -2.4046133e-07, 0.9849357, 0.53333336, 1, -0.17886382, -3.554912e-07, -2.4261178e-07, 0.9838739)
|
||||||
|
tracks/2/type = "position_3d"
|
||||||
|
tracks/2/imported = true
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = PackedFloat32Array(0, 1, 0.09795606, 0.42777258, 0.016737644, 0.033333335, 1, 0.09795606, 0.42777258, 0.016737644, 0.06666667, 1, 0.09795607, 0.42421684, 0.020088926, 0.1, 1, 0.097956106, 0.41464573, 0.028476259, 0.13333334, 1, 0.097956106, 0.4007034, 0.039399832, 0.16666667, 1, 0.097956136, 0.38403395, 0.050359886, 0.2, 1, 0.09795614, 0.36628148, 0.058856595, 0.23333333, 1, 0.097956166, 0.34909016, 0.06239014, 0.26666668, 1, 0.09795618, 0.33410403, 0.05846077, 0.3, 1, 0.09795617, 0.3207686, 0.049966685, 0.33333334, 1, 0.09795619, 0.30743313, 0.0414726, 0.36666667, 1, 0.097956195, 0.29409772, 0.032978475, 0.4, 1, 0.09795618, 0.2807622, 0.024484418, 0.43333334, 1, 0.09795621, 0.26867792, 0.005453726, 0.46666667, 1, 0.09795625, 0.25942847, -0.025371455, 0.5, 1, 0.097956285, 0.2535129, -0.05407312, 0.53333336, 1, 0.09795629, 0.2514301, -0.06673322)
|
||||||
|
tracks/3/type = "rotation_3d"
|
||||||
|
tracks/3/imported = true
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = PackedFloat32Array(0, 1, -0.5634961, -0.5175467, -0.4692957, 0.4408844, 0.033333335, 1, -0.5634961, -0.5175467, -0.4692957, 0.4408844, 0.06666667, 1, -0.5618199, -0.5157629, -0.4712554, 0.4430185, 0.1, 1, -0.55747676, -0.5111468, -0.4762584, 0.4484715, 0.13333334, 1, -0.55148923, -0.5047953, -0.48298517, 0.45581424, 0.16666667, 1, -0.5449203, -0.49784282, -0.49014834, 0.46364757, 0.2, 1, -0.5389022, -0.49148715, -0.49652106, 0.47062904, 0.23333333, 1, -0.53463346, -0.4869863, -0.5009361, 0.47547287, 0.26666668, 1, -0.53334117, -0.48562515, -0.50225556, 0.47692227, 0.3, 1, -0.53394127, -0.48625684, -0.5016437, 0.47625047, 0.33333334, 1, -0.5345404, -0.48688808, -0.50103104, 0.4755781, 0.36666667, 1, -0.53513885, -0.4875184, -0.50041753, 0.47490478, 0.4, 1, -0.5357363, -0.48814803, -0.49980325, 0.47423083, 0.43333334, 1, -0.536072, -0.48850176, -0.49945736, 0.47385153, 0.46666667, 1, -0.53603464, -0.48846242, -0.4994959, 0.47389376, 0.5, 1, -0.5358482, -0.4882659, -0.499688, 0.47410452, 0.53333336, 1, -0.5357362, -0.4881478, -0.49980345, 0.47423097)
|
||||||
|
tracks/4/type = "rotation_3d"
|
||||||
|
tracks/4/imported = true
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = PackedFloat32Array(0, 1, 0.26007843, -0.25464654, -0.41803232, 0.8323241, 0.033333335, 1, 0.26007843, -0.25464654, -0.41803235, 0.83232415, 0.06666667, 1, 0.24971879, -0.20328517, -0.43762603, 0.8395232, 0.1, 1, 0.21116517, -0.07128535, -0.48414907, 0.8461249, 0.13333334, 1, 0.13162777, 0.10219297, -0.53379804, 0.8290298, 0.16666667, 1, 0.013870682, 0.2720369, -0.5621905, 0.780862, 0.2, 1, -0.11568749, 0.40197676, -0.55814457, 0.71659315, 0.23333333, 1, -0.21642955, 0.47949043, -0.5322373, 0.6633028, 0.26666668, 1, -0.24785833, 0.5131917, -0.5098564, 0.6443966, 0.3, 1, -0.23239258, 0.5287811, -0.49749705, 0.6472101, 0.33333334, 1, -0.21700865, 0.5440421, -0.48460624, 0.6496785, 0.36666667, 1, -0.20171244, 0.558955, -0.47119418, 0.6518109, 0.4, 1, -0.18650949, 0.5734997, -0.45727274, 0.6536161, 0.43333334, 1, -0.17619722, 0.60820436, -0.4277, 0.64506954, 0.46666667, 1, -0.17903416, 0.65429705, -0.37320814, 0.6328964, 0.5, 1, -0.18871939, 0.68050295, -0.31707093, 0.6330614, 0.53333336, 1, -0.1933885, 0.6864816, -0.29205528, 0.6372187)
|
||||||
|
tracks/5/type = "rotation_3d"
|
||||||
|
tracks/5/imported = true
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("GeneralSkeleton:LeftLowerArm")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = PackedFloat32Array(0, 1, 0.33293042, -0.3350286, -0.27948675, 0.8359428, 0.033333335, 1, 0.33293042, -0.3350286, -0.27948675, 0.8359428, 0.06666667, 1, 0.33085424, -0.2879859, -0.2495471, 0.8633226, 0.1, 1, 0.33277813, -0.19278057, -0.1798883, 0.905392, 0.13333334, 1, 0.3414656, -0.1229935, -0.11785664, 0.9243288, 0.16666667, 1, 0.34658283, -0.13292721, -0.11471051, 0.9214403, 0.2, 1, 0.34295627, -0.19729088, -0.15663618, 0.90494335, 0.23333333, 1, 0.3315716, -0.2731308, -0.20802294, 0.8787413, 0.26666668, 1, 0.31103367, -0.3194728, -0.2388278, 0.8626451, 0.3, 1, 0.28403708, -0.33828527, -0.25181448, 0.8610897, 0.33333334, 1, 0.25837436, -0.3583114, -0.2628925, 0.85775477, 0.36666667, 1, 0.23416834, -0.37935832, -0.27195826, 0.8528137, 0.4, 1, 0.21152318, -0.4012257, -0.27892646, 0.846449, 0.43333334, 1, 0.21728747, -0.40819582, -0.28302902, 0.84027195, 0.46666667, 1, 0.2578459, -0.39516732, -0.28460988, 0.8344793, 0.5, 1, 0.30433705, -0.3782101, -0.28324544, 0.8271083, 0.53333336, 1, 0.32670256, -0.37022257, -0.28168663, 0.822711)
|
||||||
|
tracks/6/type = "rotation_3d"
|
||||||
|
tracks/6/imported = true
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("GeneralSkeleton:LeftHand")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = PackedFloat32Array(0, 1, 0.054798976, 0.029264985, -0.022636263, 0.9978118, 0.033333335, 1, 0.054798976, 0.029264985, -0.022636263, 0.9978118, 0.06666667, 1, 0.035692558, 0.036994714, -0.02514671, 0.99836123, 0.1, 1, -0.0025422238, 0.050300736, -0.030165289, 0.9982752, 0.13333334, 1, -0.031003604, 0.05497338, -0.032022428, 0.9974925, 0.16666667, 1, -0.028284498, 0.041944828, -0.025529142, 0.99839324, 0.2, 1, -0.0028360884, 0.019648211, -0.016126882, 0.99967295, 0.23333333, 1, 0.029949106, 0.0014368766, -0.011277324, 0.9994868, 0.26666668, 1, 0.055185083, 0.00177473, -0.015854234, 0.9983487, 0.3, 1, 0.07141648, 0.016476596, -0.02605073, 0.99697024, 0.33333334, 1, 0.08728358, 0.031500954, -0.03574671, 0.99504346, 0.36666667, 1, 0.102768786, 0.046826404, -0.04492779, 0.9925862, 0.4, 1, 0.117854774, 0.062430847, -0.053580325, 0.98961705, 0.43333334, 1, 0.114068925, 0.06436284, -0.06035373, 0.98954695, 0.46666667, 1, 0.08645135, 0.04792511, -0.06390355, 0.9930487, 0.5, 1, 0.05488873, 0.027503965, -0.06406692, 0.99605536, 0.53333336, 1, 0.039765034, 0.0175447, -0.06324014, 0.9970515)
|
||||||
|
tracks/7/type = "position_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.09795654, 0.427771, 0.016736992, 0.033333335, 1, -0.09795654, 0.427771, 0.016736992, 0.06666667, 1, -0.09795653, 0.4242153, 0.020088295, 0.1, 1, -0.09795649, 0.4146445, 0.028475666, 0.13333334, 1, -0.09795648, 0.40070233, 0.039399277, 0.16666667, 1, -0.097956434, 0.38403314, 0.05035938, 0.2, 1, -0.097956404, 0.36628097, 0.058856145, 0.23333333, 1, -0.09795639, 0.3490899, 0.062389754, 0.26666668, 1, -0.09795636, 0.33410388, 0.058460437, 0.3, 1, -0.09795634, 0.32076842, 0.049966346, 0.33333334, 1, -0.097956315, 0.30743298, 0.0414723, 0.36666667, 1, -0.097956285, 0.29409763, 0.032978233, 0.4, 1, -0.09795628, 0.2807622, 0.024484178, 0.43333334, 1, -0.09795624, 0.26867783, 0.0054535493, 0.46666667, 1, -0.097956195, 0.25942838, -0.02537162, 0.5, 1, -0.097956166, 0.25351283, -0.05407324, 0.53333336, 1, -0.09795614, 0.25142995, -0.06673332)
|
||||||
|
tracks/8/type = "rotation_3d"
|
||||||
|
tracks/8/imported = true
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("GeneralSkeleton:RightShoulder")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = PackedFloat32Array(0, 1, -0.56349707, 0.51754564, 0.46929502, 0.44088522, 0.033333335, 1, -0.56349707, 0.51754564, 0.46929502, 0.44088522, 0.06666667, 1, -0.56182086, 0.5157621, 0.47125453, 0.44301927, 0.1, 1, -0.55747765, 0.51114595, 0.47625732, 0.44847232, 0.13333334, 1, -0.5514903, 0.50479436, 0.4829841, 0.45581532, 0.16666667, 1, -0.5449211, 0.49784204, 0.49014723, 0.4636486, 0.2, 1, -0.53890306, 0.49148646, 0.49651986, 0.47063, 0.23333333, 1, -0.53463405, 0.4869857, 0.50093496, 0.47547415, 0.26666668, 1, -0.5333416, 0.4856247, 0.50225466, 0.47692326, 0.3, 1, -0.53394175, 0.48625645, 0.501643, 0.4762513, 0.33333334, 1, -0.53454065, 0.48688763, 0.5010305, 0.47557873, 0.36666667, 1, -0.53513896, 0.48751822, 0.50041705, 0.47490525, 0.4, 1, -0.53573626, 0.48814777, 0.49980304, 0.47423133, 0.43333334, 1, -0.5360719, 0.48850173, 0.49945736, 0.47385168, 0.46666667, 1, -0.5360345, 0.4884623, 0.49949577, 0.47389406, 0.5, 1, -0.5358481, 0.48826578, 0.49968788, 0.47410482, 0.53333336, 1, -0.53573644, 0.48814774, 0.49980313, 0.47423118)
|
||||||
|
tracks/9/type = "rotation_3d"
|
||||||
|
tracks/9/imported = true
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("GeneralSkeleton:RightUpperArm")
|
||||||
|
tracks/9/interp = 1
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = PackedFloat32Array(0, 1, 0.34200707, 0.44325665, 0.4187797, 0.71496737, 0.033333335, 1, 0.34200707, 0.44325665, 0.4187797, 0.71496737, 0.06666667, 1, 0.32266635, 0.40435496, 0.4252238, 0.74267644, 0.1, 1, 0.26417178, 0.3005553, 0.44319165, 0.8021602, 0.13333334, 1, 0.16661951, 0.15397716, 0.46914375, 0.85348296, 0.16666667, 1, 0.043385305, -0.006389546, 0.49589142, 0.86727655, 0.2, 1, -0.07779677, -0.1499918, 0.51495457, 0.84039986, 0.23333333, 1, -0.16532344, -0.25342304, 0.52268153, 0.797025, 0.26666668, 1, -0.19151108, -0.30252397, 0.52378297, 0.7729516, 0.3, 1, -0.17850281, -0.32083347, 0.5242831, 0.7683294, 0.33333334, 1, -0.16603486, -0.33918947, 0.52395576, 0.76344836, 0.36666667, 1, -0.15410993, -0.35755152, 0.5228025, 0.7583434, 0.4, 1, -0.14272915, -0.37587813, 0.52082676, 0.7530496, 0.43333334, 1, -0.14458878, -0.42246723, 0.49131805, 0.7478116, 0.46666667, 1, -0.1606452, -0.4975168, 0.42435122, 0.73932153, 0.5, 1, -0.17590855, -0.56358916, 0.3530673, 0.72578716, 0.53333336, 1, -0.18218514, -0.59135014, 0.31963477, 0.7175983)
|
||||||
|
tracks/10/type = "rotation_3d"
|
||||||
|
tracks/10/imported = true
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("GeneralSkeleton:RightLowerArm")
|
||||||
|
tracks/10/interp = 1
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = PackedFloat32Array(0, 1, 0.1464052, -0.005606344, 0.26349184, 0.9534706, 0.033333335, 1, 0.1464052, -0.005606344, 0.26349184, 0.9534706, 0.06666667, 1, 0.16711237, -0.092408836, 0.27905077, 0.9410976, 0.1, 1, 0.18883477, -0.25989813, 0.28400955, 0.90340084, 0.13333334, 1, 0.18760929, -0.37102276, 0.26770863, 0.86918175, 0.16666667, 1, 0.18746763, -0.34727156, 0.2757198, 0.87649125, 0.2, 1, 0.18395366, -0.22805114, 0.29191846, 0.91046, 0.23333333, 1, 0.16378748, -0.08490535, 0.28366727, 0.94100887, 0.26666668, 1, 0.14640523, -0.005606342, 0.2634918, 0.9534706, 0.3, 1, 0.14316308, 0.012822501, 0.25040475, 0.9574118, 0.33333334, 1, 0.13935933, 0.031166645, 0.23698667, 0.96096045, 0.36666667, 1, 0.1349994, 0.049406018, 0.2232496, 0.9641026, 0.4, 1, 0.13008946, 0.067520894, 0.20920633, 0.96682495, 0.43333334, 1, 0.1304123, 0.06639273, 0.2100928, 0.9666673, 0.46666667, 1, 0.13724855, 0.040300634, 0.2301574, 0.9625831, 0.5, 1, 0.14381385, 0.0093729785, 0.25288403, 0.95670235, 0.53333336, 1, 0.1464052, -0.005606346, 0.2634918, 0.9534706)
|
||||||
|
tracks/11/type = "rotation_3d"
|
||||||
|
tracks/11/imported = true
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("GeneralSkeleton:RightHand")
|
||||||
|
tracks/11/interp = 1
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = PackedFloat32Array(0, 1, 0.04333622, -0.010644132, -0.03354829, 0.9984404, 0.033333335, 1, 0.04333622, -0.010644132, -0.03354829, 0.9984404, 0.06666667, 1, 0.044219602, -0.009219363, -0.036498897, 0.99831235, 0.1, 1, 0.046446763, -0.0057345415, -0.043565124, 0.99795395, 0.13333334, 1, 0.04939583, -0.0013772314, -0.05206887, 0.99742025, 0.16666667, 1, 0.052507885, 0.002629281, -0.059351422, 0.99685174, 0.2, 1, 0.055298142, 0.0050138743, -0.062783554, 0.9964814, 0.23333333, 1, 0.05729863, 0.004474045, -0.05975459, 0.99655724, 0.26666668, 1, 0.05793665, -0.00028415132, -0.047641885, 0.99718285, 0.3, 1, 0.05751865, -0.0075615332, -0.030090205, 0.9978622, 0.33333334, 1, 0.056855816, -0.014821759, -0.012521596, 0.99819386, 0.36666667, 1, 0.055948958, -0.022058496, 0.005056339, 0.9981772, 0.4, 1, 0.054798845, -0.029264959, 0.022636168, 0.99781173, 0.43333334, 1, 0.07116226, -0.018269766, 0.037932504, 0.99657583, 0.46666667, 1, 0.109233595, 0.014599728, 0.05051025, 0.99262464, 0.5, 1, 0.14758325, 0.04861738, 0.061251696, 0.9859533, 0.53333336, 1, 0.16493511, 0.064204015, 0.06619427, 0.981984)
|
||||||
|
tracks/12/type = "rotation_3d"
|
||||||
|
tracks/12/imported = true
|
||||||
|
tracks/12/enabled = true
|
||||||
|
tracks/12/path = NodePath("GeneralSkeleton:RightUpperLeg")
|
||||||
|
tracks/12/interp = 1
|
||||||
|
tracks/12/loop_wrap = true
|
||||||
|
tracks/12/keys = PackedFloat32Array(0, 1, 0.94088304, -0.0027364467, 0.01118454, 0.33853588, 0.033333335, 1, 0.94088304, -0.0027364467, 0.01118454, 0.33853588, 0.06666667, 1, 0.9408587, -0.0028563386, 0.012739576, 0.33854756, 0.1, 1, 0.94079083, -0.003154481, 0.016613804, 0.3385658, 0.13333334, 1, 0.9406875, -0.0035385666, 0.02162078, 0.33856624, 0.16666667, 1, 0.94056827, -0.0039171306, 0.0265743, 0.33854076, 0.2, 1, 0.94046783, -0.0042000404, 0.03028882, 0.3385045, 0.23333333, 1, 0.94043064, -0.0042981454, 0.031579543, 0.3384886, 0.26666668, 1, 0.9404966, -0.004121874, 0.029261455, 0.33851597, 0.3, 1, 0.94061434, -0.003777354, 0.024743179, 0.3385531, 0.33333334, 1, 0.9407181, -0.0034315728, 0.020224167, 0.33856866, 0.36666667, 1, 0.94080764, -0.0030845825, 0.015704568, 0.3385629, 0.4, 1, 0.94088304, -0.0027364467, 0.01118454, 0.33853588, 0.43333334, 1, 0.9409193, -0.0025401327, 0.008641876, 0.33851126, 0.46666667, 1, 0.9409155, -0.002561962, 0.0089244, 0.3385142, 0.5, 1, 0.9408957, -0.0026710439, 0.010336994, 0.33852825, 0.53333336, 1, 0.94088304, -0.0027364467, 0.01118454, 0.33853588)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_58ei7"]
|
||||||
|
length = 0.5
|
||||||
|
tracks/0/type = "position_3d"
|
||||||
|
tracks/0/imported = true
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = PackedFloat32Array(0, 1, 3.953068e-15, 0.05906236, 4.1416266e-09, 0.033333335, 1, -1.4647608e-09, 0.057118475, 0.0016337278, 0.06666667, 1, -4.997991e-09, 0.05242952, 0.005574529, 0.1, 1, -9.3081205e-09, 0.046709538, 0.010381852, 0.13333334, 1, -1.31035645e-08, 0.04167261, 0.014615107, 0.16666667, 1, -1.5354924e-08, 0.038684823, 0.017126173, 0.2, 1, -1.6081481e-08, 0.037720617, 0.017936535, 0.23333333, 1, -1.5564696e-08, 0.038406435, 0.017360143, 0.26666668, 1, -1.40860195e-08, 0.040368788, 0.015710896, 0.3, 1, -1.192691e-08, 0.043234147, 0.013302729, 0.33333334, 1, -9.36883e-09, 0.046628986, 0.010449554, 0.36666667, 1, -6.6896706e-09, 0.0501845, 0.007461346, 0.4, 1, -4.1530988e-09, 0.053550776, 0.00463218, 0.43333334, 1, -2.0192281e-09, 0.05638263, 0.0022521617, 0.46666667, 1, -5.481533e-10, 0.058334902, 0.0006113926, 0.5, 1, 3.953068e-15, 0.05906236, 4.1416266e-09)
|
||||||
|
tracks/1/type = "rotation_3d"
|
||||||
|
tracks/1/imported = true
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = PackedFloat32Array(0, 1, -0.15310273, 2.6419679e-07, -3.745965e-07, 0.9882103, 0.033333335, 1, -0.15298694, 2.6415293e-07, -3.7462746e-07, 0.98822826, 0.06666667, 1, -0.15279372, 2.437341e-07, -2.4308463e-07, 0.9882582, 0.1, 1, -0.15275522, 2.437245e-07, -2.43094e-07, 0.9882641, 0.13333334, 1, -0.15310273, 2.6419679e-07, -3.745965e-07, 0.9882103, 0.16666667, 1, -0.15398592, 2.6453148e-07, -3.7436016e-07, 0.98807305, 0.2, 1, -0.1552239, 2.6500035e-07, -3.7402836e-07, 0.98787934, 0.23333333, 1, -0.15655327, 2.6550353e-07, -3.7367147e-07, 0.9876695, 0.26666668, 1, -0.15771152, 2.6594165e-07, -3.7335977e-07, 0.98748523, 0.3, 1, -0.15843585, 3.9769162e-07, -3.5206764e-07, 0.9873693, 0.33333334, 1, -0.15846334, 3.9770137e-07, -3.520565e-07, 0.9873649, 0.36666667, 1, -0.15764487, 2.6591647e-07, -3.7337787e-07, 0.98749596, 0.4, 1, -0.1562831, 2.6540135e-07, -3.7374411e-07, 0.9877123, 0.43333334, 1, -0.15479425, 2.6483772e-07, -3.7414378e-07, 0.9879468, 0.46666667, 1, -0.15359506, 2.6438346e-07, -3.7446486e-07, 0.9881339, 0.5, 1, -0.15310273, 2.6419679e-07, -3.745965e-07, 0.9882103)
|
||||||
|
tracks/2/type = "rotation_3d"
|
||||||
|
tracks/2/imported = true
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("GeneralSkeleton:Head")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = PackedFloat32Array(0, 1, -0.038782123, -3.8090184e-07, -3.2328833e-07, 0.9992478, 0.033333335, 1, -0.03733501, -3.813695e-07, -3.227365e-07, 0.9993028, 0.06666667, 1, -0.03384413, -2.494127e-07, -3.1689564e-07, 0.99942714, 0.1, 1, -0.029584767, -2.5076096e-07, -3.1583002e-07, 0.99956226, 0.13333334, 1, -0.025833834, -2.5194424e-07, -3.148867e-07, 0.9996663, 0.16666667, 1, -0.023608679, -2.526446e-07, -3.1432518e-07, 0.9997213, 0.2, 1, -0.022890637, -2.528702e-07, -3.141437e-07, 0.999738, 0.23333333, 1, -0.023401411, -2.5270973e-07, -3.1427277e-07, 0.99972624, 0.26666668, 1, -0.024862792, -2.5225006e-07, -3.1464185e-07, 0.9996909, 0.3, 1, -0.026996708, -2.5157775e-07, -3.1517962e-07, 0.9996355, 0.33333334, 1, -0.02952495, -2.5077983e-07, -3.158149e-07, 0.99956405, 0.36666667, 1, -0.032172438, -2.4994236e-07, -3.1647804e-07, 0.99948233, 0.4, 1, -0.03467895, -3.8222592e-07, -3.217217e-07, 0.9993985, 0.43333334, 1, -0.036787357, -3.8154624e-07, -3.225273e-07, 0.9993231, 0.46666667, 1, -0.038240682, -3.8107677e-07, -3.230818e-07, 0.9992686, 0.5, 1, -0.038782123, -3.8090184e-07, -3.2328833e-07, 0.9992478)
|
||||||
|
tracks/3/type = "rotation_3d"
|
||||||
|
tracks/3/imported = true
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/3/interp = 0
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = PackedFloat32Array(0, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.033333335, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.06666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.1, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.13333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.16666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.2, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.23333333, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.26666668, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.3, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.33333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.36666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.4, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.43333334, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.46666667, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077, 0.5, 1, -0.5357364, -0.4881479, -0.4998033, 0.47423077)
|
||||||
|
tracks/4/type = "position_3d"
|
||||||
|
tracks/4/imported = true
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = PackedFloat32Array(0, 1, 0.109395266, 0.09644507, 0.09388505, 0.033333335, 1, 0.10873134, 0.09647804, 0.09365002, 0.06666667, 1, 0.107129805, 0.09655751, 0.09308313, 0.1, 1, 0.10517614, 0.0966545, 0.09239171, 0.13333334, 1, 0.10345574, 0.09673988, 0.09178278, 0.16666667, 1, 0.10243526, 0.09679054, 0.091421545, 0.2, 1, 0.102105945, 0.096806884, 0.09130508, 0.23333333, 1, 0.102340184, 0.096795246, 0.091387846, 0.26666668, 1, 0.10301048, 0.096761994, 0.091625154, 0.3, 1, 0.103989094, 0.096713394, 0.09197152, 0.33333334, 1, 0.1051486, 0.09665585, 0.09238194, 0.36666667, 1, 0.10636303, 0.096595585, 0.09281177, 0.4, 1, 0.10751275, 0.0965385, 0.093218796, 0.43333334, 1, 0.10847999, 0.0964905, 0.0935611, 0.46666667, 1, 0.10914679, 0.0964574, 0.09379704, 0.5, 1, 0.109395266, 0.09644507, 0.09388505)
|
||||||
|
tracks/5/type = "rotation_3d"
|
||||||
|
tracks/5/imported = true
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/5/interp = 0
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = PackedFloat32Array(0, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.033333335, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.06666667, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.1, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.13333334, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.16666667, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.2, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.23333333, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.26666668, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.3, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.33333334, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.36666667, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.4, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.43333334, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.46666667, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989, 0.5, 1, 0.08012859, 0.7689236, -0.32719037, 0.5433989)
|
||||||
|
tracks/6/type = "rotation_3d"
|
||||||
|
tracks/6/imported = true
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("GeneralSkeleton:LeftLowerArm")
|
||||||
|
tracks/6/interp = 0
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = PackedFloat32Array(0, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.033333335, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.06666667, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.1, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.13333334, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.16666667, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.2, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.23333333, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.26666668, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.3, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.33333334, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.36666667, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.4, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.43333334, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.46666667, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254, 0.5, 1, 0.4769912, -0.057332925, -0.1145337, 0.8695254)
|
||||||
|
tracks/7/type = "rotation_3d"
|
||||||
|
tracks/7/imported = true
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("GeneralSkeleton:LeftHand")
|
||||||
|
tracks/7/interp = 1
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = PackedFloat32Array(0, 1, -0.04124398, -0.014288548, -0.20468448, 0.9778543, 0.033333335, 1, -0.045763314, -0.015985224, -0.21295965, 0.9758578, 0.06666667, 1, -0.05654992, -0.020397484, -0.23280536, 0.9706636, 0.1, 1, -0.06946979, -0.026384218, -0.25677553, 0.96361, 0.13333334, 1, -0.08060926, -0.03219738, -0.27764395, 0.95675457, 0.16666667, 1, -0.087104075, -0.03588133, -0.2899084, 0.9524067, 0.2, 1, -0.089181215, -0.037107363, -0.2938473, 0.95095927, 0.23333333, 1, -0.08770474, -0.03623347, -0.29104644, 0.9519911, 0.26666668, 1, -0.08345422, -0.0337834, -0.28300682, 0.95488286, 0.3, 1, -0.0771809, -0.030341359, -0.2711996, 0.95894384, 0.33333334, 1, -0.06964965, -0.026473112, -0.25711116, 0.963505, 0.36666667, 1, -0.061653353, -0.022668604, -0.24224627, 0.96798855, 0.4, 1, -0.05398573, -0.019301528, -0.22807495, 0.97195417, 0.43333334, 1, -0.04746696, -0.016647873, -0.21608491, 0.975078, 0.46666667, 1, -0.042938363, -0.014914412, -0.20778432, 0.977118, 0.5, 1, -0.04124398, -0.014288548, -0.20468448, 0.9778543)
|
||||||
|
tracks/8/type = "rotation_3d"
|
||||||
|
tracks/8/imported = true
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("GeneralSkeleton:RightShoulder")
|
||||||
|
tracks/8/interp = 0
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = PackedFloat32Array(0, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.033333335, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.06666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.1, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.13333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.16666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.2, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.23333333, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.26666668, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.3, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.33333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.36666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.4, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.43333334, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.46666667, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115, 0.5, 1, -0.5357364, 0.48814785, 0.499803, 0.47423115)
|
||||||
|
tracks/9/type = "position_3d"
|
||||||
|
tracks/9/imported = true
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("GeneralSkeleton:RightUpperArm")
|
||||||
|
tracks/9/interp = 0
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = PackedFloat32Array(0, 1, -0.1550847, 0.13723695, 0.055721395, 0.033333335, 1, -0.1550847, 0.13723695, 0.055721395, 0.06666667, 1, -0.1550847, 0.13723695, 0.055721395, 0.1, 1, -0.1550847, 0.13723695, 0.055721395, 0.13333334, 1, -0.1550847, 0.13723695, 0.055721395, 0.16666667, 1, -0.1550847, 0.13723695, 0.055721395, 0.2, 1, -0.1550847, 0.13723695, 0.055721395, 0.23333333, 1, -0.1550847, 0.13723695, 0.055721395, 0.26666668, 1, -0.1550847, 0.13723695, 0.055721395, 0.3, 1, -0.1550847, 0.13723695, 0.055721395, 0.33333334, 1, -0.1550847, 0.13723695, 0.055721395, 0.36666667, 1, -0.1550847, 0.13723695, 0.055721395, 0.4, 1, -0.1550847, 0.13723695, 0.055721395, 0.43333334, 1, -0.1550847, 0.13723695, 0.055721395, 0.46666667, 1, -0.1550847, 0.13723695, 0.055721395, 0.5, 1, -0.1550847, 0.13723695, 0.055721395)
|
||||||
|
tracks/10/type = "rotation_3d"
|
||||||
|
tracks/10/imported = true
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("GeneralSkeleton:RightUpperArm")
|
||||||
|
tracks/10/interp = 1
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = PackedFloat32Array(0, 1, 0.24238195, -0.7944401, 0.4211927, 0.36429754, 0.033333335, 1, 0.24292542, -0.7972732, 0.41583258, 0.36390382, 0.06666667, 1, 0.24424846, -0.80393916, 0.40282777, 0.3629799, 0.1, 1, 0.24588719, -0.81174755, 0.38682398, 0.3619015, 0.13333334, 1, 0.24735492, -0.8183271, 0.3726105, 0.36099544, 0.16666667, 1, 0.24823706, -0.82209814, 0.36412847, 0.3604767, 0.2, 1, 0.24852364, -0.8232941, 0.3613835, 0.36031213, 0.23333333, 1, 0.24831973, -0.82244456, 0.36333653, 0.3604287, 0.26666668, 1, 0.24773856, -0.819985, 0.36891365, 0.36076728, 0.3, 1, 0.24689735, -0.81631726, 0.37702858, 0.36127177, 0.33333334, 1, 0.24591061, -0.8118549, 0.3865974, 0.36188677, 0.36666667, 1, 0.24488823, -0.8070464, 0.39656428, 0.36255026, 0.4, 1, 0.24393053, -0.80236673, 0.40594703, 0.3631977, 0.43333334, 1, 0.24313186, -0.798335, 0.41379878, 0.36375648, 0.46666667, 1, 0.24258497, -0.79550517, 0.4191889, 0.36414942, 0.5, 1, 0.24238195, -0.7944401, 0.4211927, 0.36429754)
|
||||||
|
tracks/11/type = "rotation_3d"
|
||||||
|
tracks/11/imported = true
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("GeneralSkeleton:RightLowerArm")
|
||||||
|
tracks/11/interp = 0
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = PackedFloat32Array(0, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.033333335, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.06666667, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.1, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.13333334, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.16666667, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.2, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.23333333, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.26666668, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.3, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.33333334, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.36666667, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.4, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.43333334, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.46666667, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495, 0.5, 1, 0.48328775, -0.005284329, 0.021367019, 0.87518495)
|
||||||
|
tracks/12/type = "rotation_3d"
|
||||||
|
tracks/12/imported = true
|
||||||
|
tracks/12/enabled = true
|
||||||
|
tracks/12/path = NodePath("GeneralSkeleton:RightHand")
|
||||||
|
tracks/12/interp = 1
|
||||||
|
tracks/12/loop_wrap = true
|
||||||
|
tracks/12/keys = PackedFloat32Array(0, 1, 0.06955129, 0.14858216, 0.32042038, 0.9329613, 0.033333335, 1, 0.074181356, 0.14804049, 0.3218476, 0.9321992, 0.06666667, 1, 0.08533331, 0.14669017, 0.32529262, 0.93026066, 0.1, 1, 0.098903455, 0.14495859, 0.32949924, 0.9277044, 0.13333334, 1, 0.11081992, 0.14335713, 0.33320582, 0.9252792, 0.16666667, 1, 0.117872715, 0.1423731, 0.3354051, 0.9237637, 0.2, 1, 0.1201462, 0.14205006, 0.33611473, 0.9232625, 0.23333333, 1, 0.11852922, 0.14228007, 0.33561, 0.92361957, 0.26666668, 1, 0.1138991, 0.1429309, 0.33416563, 0.92462486, 0.3, 1, 0.10712908, 0.14386135, 0.3320567, 0.9260484, 0.33333334, 1, 0.09909437, 0.14493366, 0.32955852, 0.92766684, 0.36666667, 1, 0.09066407, 0.14602166, 0.32694325, 0.9292824, 0.4, 1, 0.08266873, 0.14701869, 0.32446852, 0.93073714, 0.43333334, 1, 0.07593294, 0.1478327, 0.3223879, 0.9319044, 0.46666667, 1, 0.07128445, 0.1483807, 0.3209544, 0.93267894, 0.5, 1, 0.06955129, 0.14858216, 0.32042038, 0.9329613)
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_stu12"]
|
||||||
|
length = 0.53333336
|
||||||
|
tracks/0/type = "position_3d"
|
||||||
|
tracks/0/imported = true
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = PackedFloat32Array(0, 1, 3.953068e-15, 0.05906236, 4.1416266e-09, 0.033333335, 1, 3.953068e-15, 0.05906236, 4.1416266e-09, 0.06666667, 1, -1.9968326e-10, 0.058797363, 0.00022272498, 0.1, 1, -7.1775574e-10, 0.058109824, 0.0008005711, 0.13333334, 1, -1.4327217e-09, 0.057161, 0.0015980205, 0.16666667, 1, -2.2230955e-09, 0.056112114, 0.0024795649, 0.2, 1, -2.9673803e-09, 0.05512437, 0.0033097274, 0.23333333, 1, -3.5441032e-09, 0.05435902, 0.003952971, 0.26666668, 1, -3.831766e-09, 0.05397725, 0.004273831, 0.3, 1, -3.745699e-09, 0.054091476, 0.0041778344, 0.33333334, 1, -3.348519e-09, 0.05461856, 0.0037348378, 0.36666667, 1, -2.739646e-09, 0.055426586, 0.0030557234, 0.4, 1, -2.018518e-09, 0.056383602, 0.0022513932, 0.43333334, 1, -1.2845572e-09, 0.05735763, 0.0014327582, 0.46666667, 1, -6.37204e-10, 0.058216736, 0.00071071676, 0.5, 1, -1.7587007e-10, 0.058828965, 0.00019616645, 0.53333336, 1, 3.953068e-15, 0.05906236, 4.1416266e-09)
|
||||||
|
tracks/1/type = "rotation_3d"
|
||||||
|
tracks/1/imported = true
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("GeneralSkeleton:Spine1")
|
||||||
|
tracks/1/interp = 0
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = PackedFloat32Array(0, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.033333335, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.06666667, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.1, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.13333334, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.16666667, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.2, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.23333333, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.26666668, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.3, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.33333334, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.36666667, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.4, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.43333334, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.46666667, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.5, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262, 0.53333336, 1, -0.37573725, 7.399904e-07, -5.741303e-07, 0.9267262)
|
||||||
|
tracks/2/type = "position_3d"
|
||||||
|
tracks/2/imported = true
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("GeneralSkeleton:Head")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = PackedFloat32Array(0, 1, -4.6746674e-14, 0.2846942, 4.029311e-08, 0.033333335, 1, -4.6746674e-14, 0.2846942, 4.029311e-08, 0.06666667, 1, 1.8372835e-11, 0.28409952, -4.25255e-05, 0.1, 1, 6.628614e-11, 0.28255674, -0.00015297998, 0.13333334, 1, 1.3236509e-10, 0.28042763, -0.00030540815, 0.16666667, 1, 2.0540808e-10, 0.2780739, -0.0004739114, 0.2, 1, 2.7420188e-10, 0.27585748, -0.0006325992, 0.23333333, 1, 3.274454e-10, 0.2741401, -0.00075552636, 0.26666668, 1, 3.5398307e-10, 0.2732835, -0.0008168635, 0.3, 1, 3.4606162e-10, 0.27353978, -0.00079850736, 0.33333334, 1, 3.0935515e-10, 0.2747225, -0.000713845, 0.36666667, 1, 2.5311647e-10, 0.2765357, -0.0005840312, 0.4, 1, 1.8652813e-10, 0.27868313, -0.0004302963, 0.43333334, 1, 1.1868731e-10, 0.2808688, -0.0002738157, 0.46666667, 1, 5.888155e-11, 0.28279662, -0.0001358146, 0.5, 1, 1.6273892e-11, 0.28417036, -3.7479695e-05, 0.53333336, 1, -4.6746674e-14, 0.2846942, 4.029311e-08)
|
||||||
|
tracks/3/type = "rotation_3d"
|
||||||
|
tracks/3/imported = true
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("GeneralSkeleton:Head")
|
||||||
|
tracks/3/interp = 0
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = PackedFloat32Array(0, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.033333335, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.06666667, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.1, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.13333334, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.16666667, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.2, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.23333333, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.26666668, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.3, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.33333334, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.36666667, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.4, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.43333334, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.46666667, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.5, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635, 0.53333336, 1, -0.1371792, -3.6541434e-07, -2.2739195e-07, 0.99054635)
|
||||||
|
tracks/4/type = "position_3d"
|
||||||
|
tracks/4/imported = true
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/4/interp = 0
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = PackedFloat32Array(0, 1, 0.09795613, 0.42777258, 0.016737785, 0.033333335, 1, 0.09795613, 0.42777258, 0.016737785, 0.06666667, 1, 0.09795613, 0.42777258, 0.016737785, 0.1, 1, 0.09795613, 0.42777258, 0.016737785, 0.13333334, 1, 0.09795613, 0.42777258, 0.016737785, 0.16666667, 1, 0.09795613, 0.42777258, 0.016737785, 0.2, 1, 0.09795613, 0.42777258, 0.016737785, 0.23333333, 1, 0.09795613, 0.42777258, 0.016737785, 0.26666668, 1, 0.09795613, 0.42777258, 0.016737785, 0.3, 1, 0.09795613, 0.42777258, 0.016737785, 0.33333334, 1, 0.09795613, 0.42777258, 0.016737785, 0.36666667, 1, 0.09795613, 0.42777258, 0.016737785, 0.4, 1, 0.09795613, 0.42777258, 0.016737785, 0.43333334, 1, 0.09795613, 0.42777258, 0.016737785, 0.46666667, 1, 0.09795613, 0.42777258, 0.016737785, 0.5, 1, 0.09795613, 0.42777258, 0.016737785, 0.53333336, 1, 0.09795613, 0.42777258, 0.016737785)
|
||||||
|
tracks/5/type = "rotation_3d"
|
||||||
|
tracks/5/imported = true
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("GeneralSkeleton:LeftShoulder")
|
||||||
|
tracks/5/interp = 0
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = PackedFloat32Array(0, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.033333335, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.06666667, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.1, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.13333334, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.16666667, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.2, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.23333333, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.26666668, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.3, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.33333334, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.36666667, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.4, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.43333334, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.46666667, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.5, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432, 0.53333336, 1, -0.5634963, -0.51754683, -0.46929562, 0.44088432)
|
||||||
|
tracks/6/type = "position_3d"
|
||||||
|
tracks/6/imported = true
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = PackedFloat32Array(0, 1, -0.0016287166, 0.14501561, 0.00025157674, 0.033333335, 1, -0.0016287166, 0.14501561, 0.00025157674, 0.06666667, 1, -0.0017734149, 0.14506163, -0.0003335565, 0.1, 1, -0.0021488192, 0.14518102, -0.0018515008, 0.13333334, 1, -0.0026668992, 0.1453458, -0.0039463816, 0.16666667, 1, -0.0032396442, 0.14552797, -0.006262323, 0.2, 1, -0.0037789438, 0.1456995, -0.008443098, 0.23333333, 1, -0.004196892, 0.14583242, -0.010132994, 0.26666668, 1, -0.0044053355, 0.14589871, -0.010975973, 0.3, 1, -0.0043429704, 0.14587888, -0.0107237045, 0.33333334, 1, -0.0040551536, 0.14578734, -0.009559953, 0.36666667, 1, -0.0036139528, 0.14564702, -0.007775792, 0.4, 1, -0.003091374, 0.14548081, -0.0056629023, 0.43333334, 1, -0.0025595534, 0.14531165, -0.0035123436, 0.46666667, 1, -0.0020904627, 0.14516246, -0.0016155058, 0.5, 1, -0.0017561435, 0.14505613, -0.00026364537, 0.53333336, 1, -0.0016287166, 0.14501561, 0.00025157674)
|
||||||
|
tracks/7/type = "rotation_3d"
|
||||||
|
tracks/7/imported = true
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("GeneralSkeleton:LeftUpperArm")
|
||||||
|
tracks/7/interp = 0
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = PackedFloat32Array(0, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.033333335, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.06666667, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.1, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.13333334, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.16666667, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.2, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.23333333, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.26666668, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.3, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.33333334, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.36666667, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.4, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.43333334, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.46666667, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.5, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397, 0.53333336, 1, 0.26007834, -0.25464663, -0.41803253, 0.83232397)
|
||||||
|
tracks/8/type = "rotation_3d"
|
||||||
|
tracks/8/imported = true
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("GeneralSkeleton:LeftLowerArm")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = PackedFloat32Array(0, 1, 0.33293048, -0.3350286, -0.27948672, 0.8359428, 0.033333335, 1, 0.33293048, -0.3350286, -0.27948672, 0.8359428, 0.06666667, 1, 0.3333426, -0.33511743, -0.27944934, 0.8357554, 0.1, 1, 0.33441046, -0.3353484, -0.27935344, 0.8352681, 0.13333334, 1, 0.33588165, -0.3356686, -0.27922368, 0.8345923, 0.16666667, 1, 0.337504, -0.3360242, -0.27908355, 0.8338412, 0.2, 1, 0.3390282, -0.33636126, -0.27895495, 0.8331297, 0.23333333, 1, 0.34020686, -0.33662364, -0.27885735, 0.8325758, 0.26666668, 1, 0.34079418, -0.33675486, -0.2788096, 0.83229846, 0.3, 1, 0.3406185, -0.33671555, -0.2788239, 0.8323815, 0.33333334, 1, 0.33980745, -0.3365345, -0.27889028, 0.83276385, 0.36666667, 1, 0.33856225, -0.33625814, -0.27899405, 0.83334774, 0.4, 1, 0.33708444, -0.3359321, -0.27911958, 0.83403593, 0.43333334, 1, 0.33557707, -0.33560196, -0.2792504, 0.83473265, 0.46666667, 1, 0.3342446, -0.3353123, -0.27936825, 0.835344, 0.5, 1, 0.33329365, -0.33510682, -0.27945387, 0.8357777, 0.53333336, 1, 0.33293048, -0.3350286, -0.27948672, 0.8359428)
|
||||||
|
tracks/9/type = "position_3d"
|
||||||
|
tracks/9/imported = true
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("GeneralSkeleton:RightShoulder")
|
||||||
|
tracks/9/interp = 0
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = PackedFloat32Array(0, 1, -0.09795646, 0.42777103, 0.016737178, 0.033333335, 1, -0.09795646, 0.42777103, 0.016737178, 0.06666667, 1, -0.09795646, 0.42777103, 0.016737178, 0.1, 1, -0.09795646, 0.42777103, 0.016737178, 0.13333334, 1, -0.09795646, 0.42777103, 0.016737178, 0.16666667, 1, -0.09795646, 0.42777103, 0.016737178, 0.2, 1, -0.09795646, 0.42777103, 0.016737178, 0.23333333, 1, -0.09795646, 0.42777103, 0.016737178, 0.26666668, 1, -0.09795646, 0.42777103, 0.016737178, 0.3, 1, -0.09795646, 0.42777103, 0.016737178, 0.33333334, 1, -0.09795646, 0.42777103, 0.016737178, 0.36666667, 1, -0.09795646, 0.42777103, 0.016737178, 0.4, 1, -0.09795646, 0.42777103, 0.016737178, 0.43333334, 1, -0.09795646, 0.42777103, 0.016737178, 0.46666667, 1, -0.09795646, 0.42777103, 0.016737178, 0.5, 1, -0.09795646, 0.42777103, 0.016737178, 0.53333336, 1, -0.09795646, 0.42777103, 0.016737178)
|
||||||
|
tracks/10/type = "rotation_3d"
|
||||||
|
tracks/10/imported = true
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("GeneralSkeleton:RightShoulder")
|
||||||
|
tracks/10/interp = 0
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = PackedFloat32Array(0, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.033333335, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.06666667, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.1, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.13333334, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.16666667, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.2, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.23333333, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.26666668, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.3, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.33333334, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.36666667, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.4, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.43333334, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.46666667, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.5, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513, 0.53333336, 1, -0.56349725, 0.5175456, 0.4692949, 0.44088513)
|
||||||
|
tracks/11/type = "position_3d"
|
||||||
|
tracks/11/imported = true
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("GeneralSkeleton:RightUpperArm")
|
||||||
|
tracks/11/interp = 1
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = PackedFloat32Array(0, 1, 0.00162871, 0.14501564, 0.00025160934, 0.033333335, 1, 0.00162871, 0.14501564, 0.00025160934, 0.06666667, 1, 0.0017734237, 0.14506167, -0.00033363982, 0.1, 1, 0.0021488585, 0.14518107, -0.0018515768, 0.13333334, 1, 0.002666969, 0.14534588, -0.003946391, 0.16666667, 1, 0.0032397194, 0.14552808, -0.0062623858, 0.2, 1, 0.0037791107, 0.14569964, -0.008443264, 0.23333333, 1, 0.0041970327, 0.14583257, -0.010133039, 0.26666668, 1, 0.0044054757, 0.14589885, -0.010975776, 0.3, 1, 0.004343134, 0.14587903, -0.010723805, 0.33333334, 1, 0.0040552947, 0.14578746, -0.009559882, 0.36666667, 1, 0.0036140687, 0.14564712, -0.007775907, 0.4, 1, 0.003091463, 0.1454809, -0.005662904, 0.43333334, 1, 0.0025596116, 0.14531171, -0.003512355, 0.46666667, 1, 0.0020904616, 0.14516251, -0.0016154677, 0.5, 1, 0.001756152, 0.14505614, -0.00026373038, 0.53333336, 1, 0.00162871, 0.14501564, 0.00025160934)
|
||||||
|
tracks/12/type = "rotation_3d"
|
||||||
|
tracks/12/imported = true
|
||||||
|
tracks/12/enabled = true
|
||||||
|
tracks/12/path = NodePath("GeneralSkeleton:RightUpperArm")
|
||||||
|
tracks/12/interp = 0
|
||||||
|
tracks/12/loop_wrap = true
|
||||||
|
tracks/12/keys = PackedFloat32Array(0, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.033333335, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.06666667, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.1, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.13333334, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.16666667, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.2, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.23333333, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.26666668, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.3, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.33333334, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.36666667, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.4, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.43333334, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.46666667, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.5, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673, 0.53333336, 1, 0.3420072, 0.44325665, 0.4187797, 0.7149673)
|
||||||
|
tracks/13/type = "rotation_3d"
|
||||||
|
tracks/13/imported = true
|
||||||
|
tracks/13/enabled = true
|
||||||
|
tracks/13/path = NodePath("GeneralSkeleton:RightLowerArm")
|
||||||
|
tracks/13/interp = 1
|
||||||
|
tracks/13/loop_wrap = true
|
||||||
|
tracks/13/keys = PackedFloat32Array(0, 1, 0.1464052, -0.005606344, 0.26349184, 0.9534706, 0.033333335, 1, 0.1464052, -0.005606344, 0.26349184, 0.9534706, 0.06666667, 1, 0.14572267, -0.0057624606, 0.26361868, 0.9535392, 0.1, 1, 0.14395136, -0.0061668158, 0.26394954, 0.9537142, 0.13333334, 1, 0.1415052, -0.0067227054, 0.26440892, 0.95394915, 0.16666667, 1, 0.1387989, -0.00733442, 0.26492098, 0.95420015, 0.2, 1, 0.13624829, -0.007907767, 0.2654071, 0.9544281, 0.23333333, 1, 0.13427058, -0.008350169, 0.2657863, 0.9545991, 0.26666668, 1, 0.13328372, -0.008570235, 0.26597643, 0.9546824, 0.3, 1, 0.133579, -0.008504472, 0.26591948, 0.9546577, 0.33333334, 1, 0.13494149, -0.008200373, 0.26565757, 0.95454156, 0.36666667, 1, 0.13702889, -0.007732628, 0.26525792, 0.95435923, 0.4, 1, 0.13949957, -0.007176376, 0.26478806, 0.95413613, 0.43333334, 1, 0.14201224, -0.006607715, 0.2643134, 0.9539011, 0.46666667, 1, 0.14422686, -0.0061040483, 0.26389793, 0.9536872, 0.5, 1, 0.14580408, -0.0057438863, 0.26360357, 0.95353097, 0.53333336, 1, 0.1464052, -0.005606344, 0.26349184, 0.9534706)
|
||||||
|
tracks/14/type = "rotation_3d"
|
||||||
|
tracks/14/imported = true
|
||||||
|
tracks/14/enabled = true
|
||||||
|
tracks/14/path = NodePath("GeneralSkeleton:RightHand")
|
||||||
|
tracks/14/interp = 0
|
||||||
|
tracks/14/loop_wrap = true
|
||||||
|
tracks/14/keys = PackedFloat32Array(0, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.033333335, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.06666667, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.1, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.13333334, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.16666667, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.2, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.23333333, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.26666668, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.3, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.33333334, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.36666667, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.4, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.43333334, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.46666667, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.5, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404, 0.53333336, 1, 0.04333621, -0.010644135, -0.03354829, 0.9984404)
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
_data = {
|
||||||
|
&"dasher_getting_hit": SubResource("Animation_pebao"),
|
||||||
|
&"dasher_hit": SubResource("Animation_p0uhi"),
|
||||||
|
&"dasher_hold": SubResource("Animation_xciuw"),
|
||||||
|
&"dasher_put": SubResource("Animation_3s20j"),
|
||||||
|
&"dasher_stun": SubResource("Animation_58ei7"),
|
||||||
|
&"dasher_take": SubResource("Animation_stu12")
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://bhaoe16cwuhgn"
|
||||||
|
path="res://.godot/imported/ted_mesh.glb-3a244082b66ad864a2330884dc3cfef0.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/characters/tektons/ted_mesh.glb"
|
||||||
|
dest_files=["res://.godot/imported/ted_mesh.glb-3a244082b66ad864a2330884dc3cfef0.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 432 KiB |
@@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d3pkw7elxf3uj"
|
||||||
|
path.s3tc="res://.godot/imported/ted_mesh_Ted_tex.png-4d174c9da5478cc8fa9a7dc133c769a9.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/ted_mesh_Ted_tex.png-4d174c9da5478cc8fa9a7dc133c769a9.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "ad130a61dfc420142fb25fb3f8aa3c6f"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/characters/tektons/ted_mesh_Ted_tex.png"
|
||||||
|
dest_files=["res://.godot/imported/ted_mesh_Ted_tex.png-4d174c9da5478cc8fa9a7dc133c769a9.s3tc.ctex", "res://.godot/imported/ted_mesh_Ted_tex.png-4d174c9da5478cc8fa9a7dc133c769a9.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://crj13iq2laas2"
|
||||||
|
path="res://.godot/imported/tekton_chuck.glb-635c14eb795891e496e379a5e8e8da76.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/characters/tektons/tekton_chuck.glb"
|
||||||
|
dest_files=["res://.godot/imported/tekton_chuck.glb-635c14eb795891e496e379a5e8e8da76.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 227 KiB |
@@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cuvid5ung2t00"
|
||||||
|
path.s3tc="res://.godot/imported/tekton_chuck_Chuck_Tex.png-e0045591d28f0268fdd766f2957b1ef1.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/tekton_chuck_Chuck_Tex.png-e0045591d28f0268fdd766f2957b1ef1.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "73774d4b25b8bce2a6b7098b17cf4dc5"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/characters/tektons/tekton_chuck_Chuck_Tex.png"
|
||||||
|
dest_files=["res://.godot/imported/tekton_chuck_Chuck_Tex.png-e0045591d28f0268fdd766f2957b1ef1.s3tc.ctex", "res://.godot/imported/tekton_chuck_Chuck_Tex.png-e0045591d28f0268fdd766f2957b1ef1.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://fno6pom1orvl"
|
||||||
|
path="res://.godot/imported/tekton_nest.glb-36c2a8dfaddd466203be329bdc5cb237.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/characters/tektons/tekton_nest.glb"
|
||||||
|
dest_files=["res://.godot/imported/tekton_nest.glb-36c2a8dfaddd466203be329bdc5cb237.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 524 KiB |
@@ -0,0 +1,45 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bsidqfrr4rfbe"
|
||||||
|
path.s3tc="res://.godot/imported/tekton_nest_Nest_Tex.png-35ffaafebbf3b41a5eb925ccb6a1d73e.s3tc.ctex"
|
||||||
|
path.etc2="res://.godot/imported/tekton_nest_Nest_Tex.png-35ffaafebbf3b41a5eb925ccb6a1d73e.etc2.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc", "etc2_astc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
generator_parameters={
|
||||||
|
"md5": "a0e413b66e1f7568f7bc7e985cd740a2"
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/characters/tektons/tekton_nest_Nest_Tex.png"
|
||||||
|
dest_files=["res://.godot/imported/tekton_nest_Nest_Tex.png-35ffaafebbf3b41a5eb925ccb6a1d73e.s3tc.ctex", "res://.godot/imported/tekton_nest_Nest_Tex.png-35ffaafebbf3b41a5eb925ccb6a1d73e.etc2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="scene"
|
||||||
|
importer_version=1
|
||||||
|
type="PackedScene"
|
||||||
|
uid="uid://b7w0ygo6ar0g1"
|
||||||
|
path="res://.godot/imported/tekton_throwing_tiles.glb-ed040127419938b4e0975d9058b97819.scn"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/characters/tektons/tekton_throwing_tiles.glb"
|
||||||
|
dest_files=["res://.godot/imported/tekton_throwing_tiles.glb-ed040127419938b4e0975d9058b97819.scn"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
nodes/root_type=""
|
||||||
|
nodes/root_name=""
|
||||||
|
nodes/root_script=null
|
||||||
|
nodes/apply_root_scale=true
|
||||||
|
nodes/root_scale=1.0
|
||||||
|
nodes/import_as_skeleton_bones=false
|
||||||
|
nodes/use_name_suffixes=true
|
||||||
|
nodes/use_node_type_suffixes=true
|
||||||
|
meshes/ensure_tangents=true
|
||||||
|
meshes/generate_lods=true
|
||||||
|
meshes/create_shadow_meshes=true
|
||||||
|
meshes/light_baking=1
|
||||||
|
meshes/lightmap_texel_size=0.2
|
||||||
|
meshes/force_disable_compression=false
|
||||||
|
skins/use_named_skins=true
|
||||||
|
animation/import=true
|
||||||
|
animation/fps=30
|
||||||
|
animation/trimming=false
|
||||||
|
animation/remove_immutable_tracks=true
|
||||||
|
animation/import_rest_as_RESET=false
|
||||||
|
import_script/path=""
|
||||||
|
materials/extract=0
|
||||||
|
materials/extract_format=0
|
||||||
|
materials/extract_path=""
|
||||||
|
_subresources={}
|
||||||
|
gltf/naming_version=2
|
||||||
|
gltf/embedded_image_handling=1
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 173 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cmoyhmh4jpep0"
|
||||||
|
path="res://.godot/imported/playerboard_scatter.png-56acbbf1272f9ca0a0f4c05748cbb311.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/playerboard_scatter.png"
|
||||||
|
dest_files=["res://.godot/imported/playerboard_scatter.png-56acbbf1272f9ca0a0f4c05748cbb311.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cvv33rheu02jt"
|
||||||
|
path="res://.godot/imported/spawn_baruu.png-070f37821844382ed2de00e4868812a2.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/spawn_baruu.png"
|
||||||
|
dest_files=["res://.godot/imported/spawn_baruu.png-070f37821844382ed2de00e4868812a2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 209 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cwmqu5wsing63"
|
||||||
|
path="res://.godot/imported/take_powerup.png-9020da02d6cb4ea40dac3fd7cd66fcef.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/take_powerup.png"
|
||||||
|
dest_files=["res://.godot/imported/take_powerup.png-9020da02d6cb4ea40dac3fd7cd66fcef.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
+6
-1
@@ -1254,7 +1254,12 @@ func _create_tekton(pos: Vector2i, tekton_id: int, is_static: bool = false):
|
|||||||
var node_name = "Tekton_%d" % tekton_id
|
var node_name = "Tekton_%d" % tekton_id
|
||||||
if has_node(node_name): return
|
if has_node(node_name): return
|
||||||
|
|
||||||
var tekton_scene = load("res://scenes/tekton.tscn")
|
var tekton_scene
|
||||||
|
if is_static:
|
||||||
|
tekton_scene = load("res://scenes/static_tekton.tscn")
|
||||||
|
else:
|
||||||
|
tekton_scene = load("res://scenes/tekton.tscn")
|
||||||
|
|
||||||
var tekton = tekton_scene.instantiate()
|
var tekton = tekton_scene.instantiate()
|
||||||
tekton.name = node_name
|
tekton.name = node_name
|
||||||
add_child(tekton)
|
add_child(tekton)
|
||||||
|
|||||||
+35
-44
@@ -247,8 +247,10 @@ func _ready():
|
|||||||
# Visible to all human players. Green for local player, Red for others.
|
# Visible to all human players. Green for local player, Red for others.
|
||||||
var pointer = get_node_or_null("CharacterPointer")
|
var pointer = get_node_or_null("CharacterPointer")
|
||||||
|
|
||||||
# === Dynamically load new Dasher animations ===
|
# === Dasher animations are loaded statically via player.tscn ext_resource ===
|
||||||
_load_dasher_animations()
|
# The dasher-pack.tres AnimationLibrary is referenced on the AnimationPlayer
|
||||||
|
# node as a second library ("dasher-pack"). See tools/convert_dasher_animations.gd
|
||||||
|
# and tools/build_dasher_pack.gd to regenerate the .tres from the source .glb files.
|
||||||
if pointer:
|
if pointer:
|
||||||
pointer.visible = true
|
pointer.visible = true
|
||||||
|
|
||||||
@@ -374,45 +376,10 @@ func _init_floor_spawn_anchor():
|
|||||||
floor_spawn_top.reparent(floor_spawn_anchor, false)
|
floor_spawn_top.reparent(floor_spawn_anchor, false)
|
||||||
|
|
||||||
func _load_dasher_animations():
|
func _load_dasher_animations():
|
||||||
"""Dynamically loads dasher animations from GLB files and adds them to the AnimationPlayer."""
|
# Deprecated: dasher animations are now loaded statically via the
|
||||||
if not anim_player: return
|
# dasher-pack.tres AnimationLibrary referenced on the AnimationPlayer node
|
||||||
|
# in player.tscn. Keep this stub for backward compatibility / no-op.
|
||||||
var anim_library = anim_player.get_animation_library("animation-pack")
|
pass
|
||||||
if not anim_library:
|
|
||||||
anim_library = AnimationLibrary.new()
|
|
||||||
anim_player.add_animation_library("animation-pack", anim_library)
|
|
||||||
|
|
||||||
var dasher_files = [
|
|
||||||
{"path": "res://assets/characters/dashers/dasher_getting_hit.glb", "name": "dasher_getting_hit"},
|
|
||||||
{"path": "res://assets/characters/dashers/dasher_hit.glb", "name": "dasher_hit"},
|
|
||||||
{"path": "res://assets/characters/dashers/dasher_hold.glb", "name": "dasher_hold"},
|
|
||||||
{"path": "res://assets/characters/dashers/dasher_put.glb", "name": "dasher_put"},
|
|
||||||
{"path": "res://assets/characters/dashers/dasher_stun.glb", "name": "dasher_stun"},
|
|
||||||
{"path": "res://assets/characters/dashers/dasher_take.glb", "name": "dasher_take"}
|
|
||||||
]
|
|
||||||
|
|
||||||
for file_data in dasher_files:
|
|
||||||
var gltf_doc = GLTFDocument.new()
|
|
||||||
var gltf_state = GLTFState.new()
|
|
||||||
var error = gltf_doc.append_from_file(file_data.path, gltf_state)
|
|
||||||
|
|
||||||
if error == OK:
|
|
||||||
var anim_player_node = gltf_state.get_animation_player(0)
|
|
||||||
# Godot's GLTF importer creates an AnimationPlayer inside the scene
|
|
||||||
var scene = gltf_doc.generate_scene(gltf_state)
|
|
||||||
if scene:
|
|
||||||
var scene_anim_player = scene.find_child("AnimationPlayer", true, false)
|
|
||||||
if scene_anim_player:
|
|
||||||
var libs = scene_anim_player.get_animation_library_list()
|
|
||||||
for lib_name in libs:
|
|
||||||
var temp_lib = scene_anim_player.get_animation_library(lib_name)
|
|
||||||
for anim_name in temp_lib.get_animation_list():
|
|
||||||
var anim = temp_lib.get_animation(anim_name)
|
|
||||||
if not anim_library.has_animation(file_data.name):
|
|
||||||
anim_library.add_animation(file_data.name, anim)
|
|
||||||
scene.queue_free()
|
|
||||||
|
|
||||||
print("[Player] Dasher animations loaded into 'animation-pack'.")
|
|
||||||
|
|
||||||
@onready var floor_spawn_bot: AnimatedSprite3D = $floor_spawn_bot
|
@onready var floor_spawn_bot: AnimatedSprite3D = $floor_spawn_bot
|
||||||
@onready var floor_spawn_top: AnimatedSprite3D = $floor_spawn_top
|
@onready var floor_spawn_top: AnimatedSprite3D = $floor_spawn_top
|
||||||
@@ -684,6 +651,8 @@ const ANIMATION_SPEED: float = 2.0
|
|||||||
|
|
||||||
func play_walk_animation() -> void:
|
func play_walk_animation() -> void:
|
||||||
"""Play walking animation at increased speed."""
|
"""Play walking animation at increased speed."""
|
||||||
|
if is_carrying_tekton and anim_player and anim_player.has_animation("dasher-pack/dasher_hold"):
|
||||||
|
return # Let dasher_hold keep playing
|
||||||
if anim_player and anim_player.has_animation("animation-pack/walk_forward"):
|
if anim_player and anim_player.has_animation("animation-pack/walk_forward"):
|
||||||
anim_player.play("animation-pack/walk_forward", -1, ANIMATION_SPEED)
|
anim_player.play("animation-pack/walk_forward", -1, ANIMATION_SPEED)
|
||||||
|
|
||||||
@@ -704,6 +673,8 @@ func play_special_animation() -> void:
|
|||||||
|
|
||||||
func play_idle_animation() -> void:
|
func play_idle_animation() -> void:
|
||||||
"""Play idle animation at normal speed."""
|
"""Play idle animation at normal speed."""
|
||||||
|
if is_carrying_tekton and anim_player and anim_player.has_animation("dasher-pack/dasher_hold"):
|
||||||
|
return # Let dasher_hold keep playing
|
||||||
if anim_player and anim_player.has_animation("animation-pack/idle"):
|
if anim_player and anim_player.has_animation("animation-pack/idle"):
|
||||||
anim_player.play("animation-pack/idle")
|
anim_player.play("animation-pack/idle")
|
||||||
|
|
||||||
@@ -1002,6 +973,10 @@ func apply_stagger(duration: float = 1.5):
|
|||||||
|
|
||||||
# Play knock VFX sequence on the receiver
|
# Play knock VFX sequence on the receiver
|
||||||
_play_knock_vfx()
|
_play_knock_vfx()
|
||||||
|
if anim_player and anim_player.has_animation("dasher-pack/dasher_getting_hit"):
|
||||||
|
anim_player.play("dasher-pack/dasher_getting_hit")
|
||||||
|
if anim_player.has_animation("dasher-pack/dasher_stun"):
|
||||||
|
anim_player.queue("dasher-pack/dasher_stun")
|
||||||
|
|
||||||
# Set immunity (3 seconds as requested)
|
# Set immunity (3 seconds as requested)
|
||||||
immunity_timer = 3.0
|
immunity_timer = 3.0
|
||||||
@@ -1019,6 +994,7 @@ func apply_stagger(duration: float = 1.5):
|
|||||||
|
|
||||||
is_frozen = false
|
is_frozen = false
|
||||||
_refresh_player_visuals()
|
_refresh_player_visuals()
|
||||||
|
play_idle_animation()
|
||||||
|
|
||||||
func _play_knock_vfx() -> void:
|
func _play_knock_vfx() -> void:
|
||||||
"""Plays the three knock receiver VFX concurrently.
|
"""Plays the three knock receiver VFX concurrently.
|
||||||
@@ -2439,7 +2415,10 @@ func sync_snatch_tekton(carrier_path: NodePath, tekton_path: NodePath):
|
|||||||
is_charged_strike = false
|
is_charged_strike = false
|
||||||
|
|
||||||
SfxManager.play("pick_up_tekton_roaming")
|
SfxManager.play("pick_up_tekton_roaming")
|
||||||
play_pickup_animation()
|
if anim_player and anim_player.has_animation("dasher-pack/dasher_take"):
|
||||||
|
anim_player.play("dasher-pack/dasher_take")
|
||||||
|
if anim_player.has_animation("dasher-pack/dasher_hold"):
|
||||||
|
anim_player.queue("dasher-pack/dasher_hold")
|
||||||
|
|
||||||
# Visual feedback for the victim
|
# Visual feedback for the victim
|
||||||
if carrier.has_method("sync_bump"):
|
if carrier.has_method("sync_bump"):
|
||||||
@@ -2452,6 +2431,11 @@ func sync_snatch_tekton(carrier_path: NodePath, tekton_path: NodePath):
|
|||||||
func sync_grab_tekton(tekton_path: NodePath):
|
func sync_grab_tekton(tekton_path: NodePath):
|
||||||
var tekton = get_node_or_null(tekton_path)
|
var tekton = get_node_or_null(tekton_path)
|
||||||
if tekton:
|
if tekton:
|
||||||
|
if anim_player and anim_player.has_animation("dasher-pack/dasher_take"):
|
||||||
|
anim_player.play("dasher-pack/dasher_take")
|
||||||
|
if anim_player.has_animation("dasher-pack/dasher_hold"):
|
||||||
|
anim_player.queue("dasher-pack/dasher_hold")
|
||||||
|
|
||||||
carried_tekton = tekton
|
carried_tekton = tekton
|
||||||
self.is_carrying_tekton = true
|
self.is_carrying_tekton = true
|
||||||
tekton.set_carried(true, self )
|
tekton.set_carried(true, self )
|
||||||
@@ -2461,7 +2445,6 @@ func sync_grab_tekton(tekton_path: NodePath):
|
|||||||
is_charged_strike = false
|
is_charged_strike = false
|
||||||
|
|
||||||
SfxManager.play("pick_up_tekton_roaming")
|
SfxManager.play("pick_up_tekton_roaming")
|
||||||
play_pickup_animation()
|
|
||||||
print("[Player %s] Grabbed Tekton %s" % [name, tekton.name])
|
print("[Player %s] Grabbed Tekton %s" % [name, tekton.name])
|
||||||
|
|
||||||
func throw_tekton():
|
func throw_tekton():
|
||||||
@@ -2499,6 +2482,8 @@ func throw_tekton():
|
|||||||
|
|
||||||
@rpc("any_peer", "call_local", "reliable")
|
@rpc("any_peer", "call_local", "reliable")
|
||||||
func sync_throw_tekton(target_pos: Vector2i):
|
func sync_throw_tekton(target_pos: Vector2i):
|
||||||
|
if anim_player and anim_player.has_animation("dasher-pack/dasher_put"):
|
||||||
|
anim_player.play("dasher-pack/dasher_put")
|
||||||
if carried_tekton:
|
if carried_tekton:
|
||||||
var tekton = carried_tekton
|
var tekton = carried_tekton
|
||||||
carried_tekton = null
|
carried_tekton = null
|
||||||
@@ -2582,6 +2567,8 @@ func drop_tekton():
|
|||||||
|
|
||||||
@rpc("any_peer", "call_local", "reliable")
|
@rpc("any_peer", "call_local", "reliable")
|
||||||
func sync_drop_tekton():
|
func sync_drop_tekton():
|
||||||
|
if anim_player and anim_player.has_animation("dasher-pack/dasher_put"):
|
||||||
|
anim_player.play("dasher-pack/dasher_put")
|
||||||
if carried_tekton:
|
if carried_tekton:
|
||||||
var tekton = carried_tekton
|
var tekton = carried_tekton
|
||||||
carried_tekton = null
|
carried_tekton = null
|
||||||
@@ -2619,6 +2606,8 @@ func update_active_player_indicator():
|
|||||||
@rpc("any_peer", "call_local", "unreliable")
|
@rpc("any_peer", "call_local", "unreliable")
|
||||||
func sync_bump(target_pos: Vector2i, is_soft: bool = false):
|
func sync_bump(target_pos: Vector2i, is_soft: bool = false):
|
||||||
"""Visual attack 'bump' or collision animation."""
|
"""Visual attack 'bump' or collision animation."""
|
||||||
|
if not is_soft and anim_player and anim_player.has_animation("dasher-pack/dasher_hit"):
|
||||||
|
anim_player.play("dasher-pack/dasher_hit")
|
||||||
# Always return to LOGICAL position to prevent character drift!
|
# Always return to LOGICAL position to prevent character drift!
|
||||||
var original_pos = grid_to_world(current_position)
|
var original_pos = grid_to_world(current_position)
|
||||||
var target_world = grid_to_world(target_pos)
|
var target_world = grid_to_world(target_pos)
|
||||||
@@ -2650,7 +2639,7 @@ func knock_tekton():
|
|||||||
# Consume Boost if we haven't already (or just consume it now if we are in mode)
|
# Consume Boost if we haven't already (or just consume it now if we are in mode)
|
||||||
if powerup_manager:
|
if powerup_manager:
|
||||||
powerup_manager.consume_boost(100.0)
|
powerup_manager.consume_boost(100.0)
|
||||||
|
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
rpc("sync_knock_tekton", tekton.get_path())
|
rpc("sync_knock_tekton", tekton.get_path())
|
||||||
|
|
||||||
@@ -2665,6 +2654,8 @@ func knock_tekton():
|
|||||||
|
|
||||||
@rpc("any_peer", "call_local", "reliable")
|
@rpc("any_peer", "call_local", "reliable")
|
||||||
func sync_knock_tekton(tekton_path: NodePath):
|
func sync_knock_tekton(tekton_path: NodePath):
|
||||||
|
if anim_player and anim_player.has_animation("dasher-pack/dasher_hit"):
|
||||||
|
anim_player.play("dasher-pack/dasher_hit")
|
||||||
var tekton = get_node_or_null(tekton_path)
|
var tekton = get_node_or_null(tekton_path)
|
||||||
if tekton:
|
if tekton:
|
||||||
# Intensity 2.0 for knock (drops 200% tiles) + Shrink/Recover
|
# Intensity 2.0 for knock (drops 200% tiles) + Shrink/Recover
|
||||||
|
|||||||
+3
-2
@@ -6,6 +6,7 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://1vk0mjnwkngi" path="res://assets/characters/Masbro.glb" id="2_mjsl8"]
|
[ext_resource type="PackedScene" uid="uid://1vk0mjnwkngi" path="res://assets/characters/Masbro.glb" id="2_mjsl8"]
|
||||||
[ext_resource type="PackedScene" uid="uid://d4cul3w3wem5w" path="res://assets/characters/Gatot.glb" id="4_3tlf6"]
|
[ext_resource type="PackedScene" uid="uid://d4cul3w3wem5w" path="res://assets/characters/Gatot.glb" id="4_3tlf6"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bmln7v6v5kvxg" path="res://assets/characters/Oldpop.glb" id="5_alfd1"]
|
[ext_resource type="PackedScene" uid="uid://bmln7v6v5kvxg" path="res://assets/characters/Oldpop.glb" id="5_alfd1"]
|
||||||
|
[ext_resource type="AnimationLibrary" uid="uid://nsko4grplr5m" path="res://assets/characters/animations/dasher-pack.res" id="6a_dashp"]
|
||||||
[ext_resource type="AnimationLibrary" uid="uid://c3pyopnwibckj" path="res://assets/characters/animations/animation-pack.res" id="6_5oq5w"]
|
[ext_resource type="AnimationLibrary" uid="uid://c3pyopnwibckj" path="res://assets/characters/animations/animation-pack.res" id="6_5oq5w"]
|
||||||
[ext_resource type="Script" uid="uid://cwwwixc07jc86" path="res://scripts/bot_controller.gd" id="7_botctrl"]
|
[ext_resource type="Script" uid="uid://cwwwixc07jc86" path="res://scripts/bot_controller.gd" id="7_botctrl"]
|
||||||
[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="8_y4r1p"]
|
[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="8_y4r1p"]
|
||||||
@@ -50,8 +51,9 @@ visible = false
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
|
||||||
|
|
||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1085499957]
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1085499957]
|
||||||
root_node = NodePath("../Masbro")
|
root_node = NodePath("../Oldpop")
|
||||||
libraries/animation-pack = ExtResource("6_5oq5w")
|
libraries/animation-pack = ExtResource("6_5oq5w")
|
||||||
|
libraries/dasher-pack = ExtResource("6a_dashp")
|
||||||
|
|
||||||
[node name="CharacterPointer" type="MeshInstance3D" parent="." unique_id=1262762501]
|
[node name="CharacterPointer" type="MeshInstance3D" parent="." unique_id=1262762501]
|
||||||
transform = Transform3D(0.3535534, 0, 0.35355335, 0, 0.5, 0, -0.35355335, 0, 0.3535534, 0, -0.468462, 0)
|
transform = Transform3D(0.3535534, 0, 0.35355335, 0, 0.5, 0, -0.35355335, 0, 0.3535534, 0, -0.468462, 0)
|
||||||
@@ -85,7 +87,6 @@ billboard = 1
|
|||||||
no_depth_test = true
|
no_depth_test = true
|
||||||
render_priority = 2
|
render_priority = 2
|
||||||
outline_render_priority = 1
|
outline_render_priority = 1
|
||||||
modulate = Color(0.32, 0.614667, 1, 1)
|
|
||||||
text = "1st"
|
text = "1st"
|
||||||
font = ExtResource("8_y4r1p")
|
font = ExtResource("8_y4r1p")
|
||||||
font_size = 62
|
font_size = 62
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
[gd_scene format=3 uid="uid://d4mjd3tkf21xe"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://dyovwailce5tf" path="res://scripts/tekton.gd" id="1_tekton"]
|
||||||
|
[ext_resource type="Script" uid="uid://c67yq846u8y68" path="res://scripts/tekton_controller.gd" id="2_controller"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://statictektonmesh001" path="res://scenes/static_tekton_mesh.tscn" id="3_d2kpk"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://biun2yvglxgij" path="res://assets/graphics/touch_control/grab_tekton.png" id="4_grab_icon"]
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_tekton"]
|
||||||
|
size = Vector3(0.8, 1, 0.8)
|
||||||
|
|
||||||
|
[node name="Tekton" type="Node3D" unique_id=119914767 groups=["Tektons"]]
|
||||||
|
script = ExtResource("1_tekton")
|
||||||
|
|
||||||
|
[node name="TektonController" type="Node" parent="." unique_id=1658331083]
|
||||||
|
script = ExtResource("2_controller")
|
||||||
|
|
||||||
|
[node name="Visuals" type="Node3D" parent="." unique_id=1698719440]
|
||||||
|
|
||||||
|
[node name="tekton" parent="Visuals" unique_id=2052742928 instance=ExtResource("3_d2kpk")]
|
||||||
|
|
||||||
|
[node name="HitArea" type="Area3D" parent="." unique_id=2139590311]
|
||||||
|
collision_layer = 4
|
||||||
|
collision_mask = 2
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="HitArea" unique_id=818146069]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
|
shape = SubResource("BoxShape3D_tekton")
|
||||||
|
|
||||||
|
[node name="InteractionPrompt" type="Node3D" parent="." unique_id=855764577]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.4, 0)
|
||||||
|
|
||||||
|
[node name="PromptIcon" type="Sprite3D" parent="InteractionPrompt" unique_id=11135903]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3731489, 0)
|
||||||
|
pixel_size = 0.002
|
||||||
|
billboard = 1
|
||||||
|
no_depth_test = true
|
||||||
|
render_priority = 1
|
||||||
|
texture = ExtResource("4_grab_icon")
|
||||||
|
|
||||||
|
[node name="KeyLabel" type="Label3D" parent="InteractionPrompt" unique_id=1816493043]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.30466843, 0)
|
||||||
|
pixel_size = 0.01
|
||||||
|
billboard = 1
|
||||||
|
no_depth_test = true
|
||||||
|
render_priority = 2
|
||||||
|
outline_render_priority = 1
|
||||||
|
modulate = Color(0.1, 1, 0.2, 1)
|
||||||
|
text = "[ G ]"
|
||||||
|
font_size = 48
|
||||||
|
outline_size = 18
|
||||||
|
|
||||||
|
[node name="ActionLabel" type="Label3D" parent="InteractionPrompt" unique_id=848495007]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.79176676, 0)
|
||||||
|
pixel_size = 0.01
|
||||||
|
billboard = 1
|
||||||
|
no_depth_test = true
|
||||||
|
render_priority = 2
|
||||||
|
outline_render_priority = 1
|
||||||
|
text = "LIFT TEKTON"
|
||||||
|
font_size = 38
|
||||||
|
outline_size = 10
|
||||||
File diff suppressed because one or more lines are too long
@@ -167,6 +167,9 @@ func _process(delta: float) -> void:
|
|||||||
if not is_active:
|
if not is_active:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if not multiplayer.has_multiplayer_peer() or multiplayer.multiplayer_peer == null:
|
||||||
|
return
|
||||||
|
|
||||||
elapsed_time += delta
|
elapsed_time += delta
|
||||||
|
|
||||||
# Phase escalation
|
# Phase escalation
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ func handle_unhandled_input(event):
|
|||||||
if event.is_action_pressed("action_knock_tekton"):
|
if event.is_action_pressed("action_knock_tekton"):
|
||||||
if player.powerup_manager:
|
if player.powerup_manager:
|
||||||
player.powerup_manager.use_special_effect()
|
player.powerup_manager.use_special_effect()
|
||||||
if player.is_attack_mode and player.has_method("enter_attack_mode"):
|
if player.get("is_attack_mode") and player.has_method("enter_attack_mode"):
|
||||||
player.enter_attack_mode()
|
player.enter_attack_mode()
|
||||||
get_viewport().set_input_as_handled()
|
get_viewport().set_input_as_handled()
|
||||||
|
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ func can_use_special() -> bool:
|
|||||||
|
|
||||||
func enable_attack_mode():
|
func enable_attack_mode():
|
||||||
"""Enable Attack Mode without consuming boost."""
|
"""Enable Attack Mode without consuming boost."""
|
||||||
player.is_attack_mode = true
|
player.set("is_attack_mode", true)
|
||||||
NotificationManager.send_message(player, NotificationManager.MESSAGES.ATTACK_MODE_READY, NotificationManager.MessageType.POWERUP)
|
NotificationManager.send_message(player, NotificationManager.MESSAGES.ATTACK_MODE_READY, NotificationManager.MessageType.POWERUP)
|
||||||
print("[PowerUp] Attack Mode Enabled (Free).")
|
print("[PowerUp] Attack Mode Enabled (Free).")
|
||||||
|
|
||||||
@@ -177,7 +177,7 @@ func consume_boost(amount: float):
|
|||||||
current_boost -= amount
|
current_boost -= amount
|
||||||
if current_boost <= 0:
|
if current_boost <= 0:
|
||||||
current_boost = 0.0
|
current_boost = 0.0
|
||||||
player.is_attack_mode = false # Out of fuel
|
player.set("is_attack_mode", false) # Out of fuel
|
||||||
emit_signal("boost_reset") # UI update for empty
|
emit_signal("boost_reset") # UI update for empty
|
||||||
print("[PowerUp] Boost depleted. Attack Mode OFF.")
|
print("[PowerUp] Boost depleted. Attack Mode OFF.")
|
||||||
|
|
||||||
|
|||||||
@@ -317,16 +317,11 @@ func is_controller_button_used(button_index: int) -> String:
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
func get_control_keycode(action_name: String) -> int:
|
func get_control_keycode(action_name: String) -> int:
|
||||||
# Map friendly names to their internal settings.controls keys
|
# settings.controls stores keys by the same name callers pass in
|
||||||
var mapped_name = action_name
|
# (e.g. "tekton_grab", "attack_mode", "grab"). The InputMap action name
|
||||||
if action_name == "tekton_grab":
|
# (e.g. "action_grab_tekton") is a separate concept handled by
|
||||||
mapped_name = "action_grab_tekton"
|
# apply_control_settings(). Do NOT remap here.
|
||||||
elif action_name == "attack_mode":
|
return settings.controls.get(action_name, -1)
|
||||||
mapped_name = "action_knock_tekton"
|
|
||||||
elif action_name == "grab":
|
|
||||||
mapped_name = "action_grab"
|
|
||||||
|
|
||||||
return settings.controls.get(mapped_name, -1)
|
|
||||||
|
|
||||||
func get_control_text(action_name: String) -> String:
|
func get_control_text(action_name: String) -> String:
|
||||||
var code = get_control_keycode(action_name)
|
var code = get_control_keycode(action_name)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ extends Node
|
|||||||
# Handles spawning and placement of Static Tektons in restricted zones.
|
# Handles spawning and placement of Static Tektons in restricted zones.
|
||||||
|
|
||||||
const STAND_SCENE_PATH = "res://scenes/static_tekton_stand.tscn"
|
const STAND_SCENE_PATH = "res://scenes/static_tekton_stand.tscn"
|
||||||
const TEKTON_SCENE_PATH = "res://scenes/tekton.tscn"
|
const TEKTON_SCENE_PATH = "res://scenes/static_tekton.tscn"
|
||||||
const STATIC_CONTROLLER_SCRIPT = "res://scripts/static_tekton_controller.gd"
|
const STATIC_CONTROLLER_SCRIPT = "res://scripts/static_tekton_controller.gd"
|
||||||
const PERIMETER_BUFFER = 1 # 1-tile safe zone on all sides (matches main.gd)
|
const PERIMETER_BUFFER = 1 # 1-tile safe zone on all sides (matches main.gd)
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,9 @@ func _process(delta):
|
|||||||
if not is_active:
|
if not is_active:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if not multiplayer.has_multiplayer_peer() or multiplayer.multiplayer_peer == null:
|
||||||
|
return
|
||||||
|
|
||||||
# Decrement timer locally for all peers (smoother HUD than waiting for RPC)
|
# Decrement timer locally for all peers (smoother HUD than waiting for RPC)
|
||||||
phase_timer -= delta
|
phase_timer -= delta
|
||||||
|
|
||||||
|
|||||||
+35
-12
@@ -97,14 +97,14 @@ func move_to(target_pos: Vector2i):
|
|||||||
var target_rot = atan2(dir.x, dir.z)
|
var target_rot = atan2(dir.x, dir.z)
|
||||||
rotation.y = target_rot
|
rotation.y = target_rot
|
||||||
|
|
||||||
play_animation("tekton_move")
|
play_animation("tekton_move" if not is_static_turret else "Armature|tekton_move")
|
||||||
|
|
||||||
tween = create_tween()
|
tween = create_tween()
|
||||||
tween.tween_property(self , "position", target_world_pos, movement_speed).set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_IN_OUT)
|
tween.tween_property(self , "position", target_world_pos, movement_speed).set_trans(Tween.TRANS_LINEAR).set_ease(Tween.EASE_IN_OUT)
|
||||||
tween.tween_callback(func():
|
tween.tween_callback(func():
|
||||||
current_position = target_pos
|
current_position = target_pos
|
||||||
is_moving = false
|
is_moving = false
|
||||||
play_animation("tekton_idle")
|
play_animation("tekton_idle" if not is_static_turret else "Armature|tekton_idle")
|
||||||
emit_signal("movement_finished")
|
emit_signal("movement_finished")
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ func set_carried(state: bool, p_carrier: Node3D = null):
|
|||||||
carrier = p_carrier
|
carrier = p_carrier
|
||||||
|
|
||||||
if is_carried:
|
if is_carried:
|
||||||
play_animation("tekton_idle")
|
play_animation("tekton_idle" if not is_static_turret else "Armature|tekton_idle")
|
||||||
|
|
||||||
is_moving = false
|
is_moving = false
|
||||||
if tween: tween.kill()
|
if tween: tween.kill()
|
||||||
@@ -242,6 +242,10 @@ func _update_prompt_label():
|
|||||||
prompt_container.visible = false
|
prompt_container.visible = false
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
# For static tekton, mark it as static
|
||||||
|
if name.begins_with("StaticTekton") or has_node("Visuals/static_tekton_mesh"):
|
||||||
|
is_static_turret = true
|
||||||
|
|
||||||
# Cache meshes and their initial scales
|
# Cache meshes and their initial scales
|
||||||
_cache_meshes(self)
|
_cache_meshes(self)
|
||||||
|
|
||||||
@@ -329,7 +333,12 @@ func on_thrown_landing(attacker: Node = null, intensity: float = 1.0):
|
|||||||
spawn_tiles_around(int(8 * intensity))
|
spawn_tiles_around(int(8 * intensity))
|
||||||
|
|
||||||
# Floor Freeze (Visual/Instant - Run on all clients locally)
|
# Floor Freeze (Visual/Instant - Run on all clients locally)
|
||||||
temporarily_change_floor(current_position, 1, 6, 3.0)
|
var mode_val = GameMode.Mode.FREEMODE
|
||||||
|
if LobbyManager:
|
||||||
|
mode_val = LobbyManager.get_game_mode()
|
||||||
|
|
||||||
|
if mode_val != GameMode.Mode.FREEMODE:
|
||||||
|
temporarily_change_floor(current_position, 1, 6, 3.0)
|
||||||
|
|
||||||
# Wait 3.0 seconds
|
# Wait 3.0 seconds
|
||||||
await get_tree().create_timer(3.0).timeout
|
await get_tree().create_timer(3.0).timeout
|
||||||
@@ -345,8 +354,8 @@ func on_thrown_landing(attacker: Node = null, intensity: float = 1.0):
|
|||||||
is_recovering = false
|
is_recovering = false
|
||||||
|
|
||||||
# Resume AI
|
# Resume AI
|
||||||
if controller and controller.has_method("_start_timer"):
|
if not is_multiplayer_authority() or not is_carried:
|
||||||
if is_multiplayer_authority() and not is_carried:
|
if controller and controller.has_method("_start_timer"):
|
||||||
controller._start_timer()
|
controller._start_timer()
|
||||||
|
|
||||||
|
|
||||||
@@ -417,22 +426,24 @@ func spawn_tiles_around(count: int = 4):
|
|||||||
|
|
||||||
# If it's a static turret, make it face the target tile it's about to spawn instead
|
# If it's a static turret, make it face the target tile it's about to spawn instead
|
||||||
if is_static_turret:
|
if is_static_turret:
|
||||||
# We don't have a specific target yet, but we can pick an average direction
|
|
||||||
# Or just let it throw randomly like the others. Wait, the user wants:
|
|
||||||
# "static tekton, should facing toward where they're going to thrown the tiles"
|
|
||||||
# We'll calculate rotation inside the spawning loop for static turrets.
|
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
rotation.y = random_angle
|
rotation.y = random_angle
|
||||||
|
|
||||||
# Play throw animation
|
# Play throw animation
|
||||||
if not is_carried and not is_thrown:
|
if not is_carried and not is_thrown and has_node("Visuals/tekton/Armature/AnimationPlayer"):
|
||||||
play_animation("tekton_throw_tile")
|
play_animation("tekton_throw_tile")
|
||||||
# Queue idle after animation finishes (approx 1.0s)
|
# Queue idle after animation finishes (approx 1.0s)
|
||||||
get_tree().create_timer(1.0).timeout.connect(func():
|
get_tree().create_timer(1.0).timeout.connect(func():
|
||||||
if not is_moving and not is_carried and not is_thrown:
|
if not is_moving and not is_carried and not is_thrown:
|
||||||
play_animation("tekton_idle")
|
play_animation("tekton_idle")
|
||||||
)
|
)
|
||||||
|
elif is_static_turret and not is_carried and not is_thrown:
|
||||||
|
play_animation("Armature|tekton_throw_tile")
|
||||||
|
get_tree().create_timer(1.0).timeout.connect(func():
|
||||||
|
if not is_moving and not is_carried and not is_thrown:
|
||||||
|
play_animation("Armature|tekton_idle")
|
||||||
|
)
|
||||||
|
|
||||||
print("[Tekton] Spawning %d tiles around %s" % [count, current_position])
|
print("[Tekton] Spawning %d tiles around %s" % [count, current_position])
|
||||||
|
|
||||||
@@ -453,6 +464,11 @@ func spawn_tiles_around(count: int = 4):
|
|||||||
var throw_dir = Vector3(x, 0, y).normalized()
|
var throw_dir = Vector3(x, 0, y).normalized()
|
||||||
if throw_dir.length_squared() > 0.01:
|
if throw_dir.length_squared() > 0.01:
|
||||||
rotation.y = atan2(throw_dir.x, throw_dir.z)
|
rotation.y = atan2(throw_dir.x, throw_dir.z)
|
||||||
|
|
||||||
|
# Also make the visuals node rotate if needed (sometimes necessary for static items)
|
||||||
|
var visuals = get_node_or_null("Visuals")
|
||||||
|
if visuals:
|
||||||
|
visuals.rotation.y = 0 # keep base at 0 since parent rotated
|
||||||
|
|
||||||
# Don't overwrite the Tekton's own cell? Or do?
|
# Don't overwrite the Tekton's own cell? Or do?
|
||||||
# Maybe avoid center.
|
# Maybe avoid center.
|
||||||
@@ -496,8 +512,10 @@ func spawn_tiles_around(count: int = 4):
|
|||||||
if LobbyManager:
|
if LobbyManager:
|
||||||
mode = LobbyManager.get_game_mode()
|
mode = LobbyManager.get_game_mode()
|
||||||
|
|
||||||
if mode == GameMode.Mode.TEKTON_DOORS:
|
if LobbyManager and LobbyManager.get_game_mode() == GameMode.Mode.TEKTON_DOORS:
|
||||||
item_id = [11, 14].pick_random()
|
item_id = [11, 14].pick_random()
|
||||||
|
elif mode == GameMode.Mode.FREEMODE:
|
||||||
|
item_id = rng.randi_range(7, 10) # No powerups in freemode either, just normal tiles
|
||||||
else:
|
else:
|
||||||
item_id = rng.randi_range(11, 14)
|
item_id = rng.randi_range(11, 14)
|
||||||
|
|
||||||
@@ -540,6 +558,11 @@ func play_animation(anim_name: String):
|
|||||||
# Try specific user path first
|
# Try specific user path first
|
||||||
var anim_player = get_node_or_null("Visuals/tekton/Armature/AnimationPlayer")
|
var anim_player = get_node_or_null("Visuals/tekton/Armature/AnimationPlayer")
|
||||||
|
|
||||||
|
if is_static_turret:
|
||||||
|
anim_player = get_node_or_null("Visuals/static_tekton_mesh/tekton_throwing_tiles/AnimationPlayer")
|
||||||
|
if not anim_player:
|
||||||
|
anim_player = get_node_or_null("Visuals/tekton_throwing_tiles/AnimationPlayer") # Check direct child just in case
|
||||||
|
|
||||||
# If not found, try finding recursive
|
# If not found, try finding recursive
|
||||||
if not anim_player:
|
if not anim_player:
|
||||||
anim_player = find_child("AnimationPlayer", true, false)
|
anim_player = find_child("AnimationPlayer", true, false)
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
# Dasher Animation Tools
|
||||||
|
|
||||||
|
The dasher character (`assets/characters/dashers/dasher_*.glb`) provides six
|
||||||
|
animation clips. They need to be retargeted to the player rig (which uses
|
||||||
|
`GeneralSkeleton` + Mixamo bone names) and packed into a single
|
||||||
|
`AnimationLibrary` that `player.tscn` can reference.
|
||||||
|
|
||||||
|
## One-time generation (headless, no editor needed)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
godot --headless --path /home/beng/Godot/Projects/tekton-enet \
|
||||||
|
--script res://tools/convert_dasher_animations_headless.gd
|
||||||
|
|
||||||
|
godot --headless --path /home/beng/Godot/Projects/tekton-enet \
|
||||||
|
--script res://tools/build_dasher_pack_headless.gd
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
- `assets/characters/animations/dasher_<name>.res` (one per glb)
|
||||||
|
- `assets/characters/animations/dasher-pack.res` (combined library)
|
||||||
|
|
||||||
|
`scenes/player.tscn` already references `dasher-pack.res` as a second
|
||||||
|
AnimationLibrary on the AnimationPlayer node, alongside the original
|
||||||
|
`animation-pack.res`.
|
||||||
|
|
||||||
|
## Or run inside the editor
|
||||||
|
|
||||||
|
Use the EditorScript variants:
|
||||||
|
- `tools/convert_dasher_animations.gd` (`@tool extends EditorScript`)
|
||||||
|
- `tools/build_dasher_pack.gd` (`@tool extends EditorScript`)
|
||||||
|
|
||||||
|
Open each in the editor and `File > Run` (`Ctrl+Shift+X`).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```gdscript
|
||||||
|
anim_player.play("dasher-pack/dasher_hit")
|
||||||
|
anim_player.play("dasher-pack/dasher_stun")
|
||||||
|
# etc.
|
||||||
|
```
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
|
Each `dasher_*.glb` contains three source animations in a single
|
||||||
|
`AnimationLibrary` (e.g. `dasher_hold.glb` has `bob-rig|Hold|Anima_Layer`,
|
||||||
|
`bob-rig|Put|Anima_Layer`, `bob-rig|bob ani|Anima_Layer`). The converter
|
||||||
|
picks the most relevant one based on the glb filename
|
||||||
|
(`ANIM_PICK` constant in `convert_dasher_animations_headless.gd`) and
|
||||||
|
retargets the bone names. The resulting `.res` has one animation per glb
|
||||||
|
named after the glb (`dasher_hold`, `dasher_hit`, etc.), retargeted to
|
||||||
|
`GeneralSkeleton:<MixamoBone>` paths so they apply against the player's
|
||||||
|
shared skeleton.
|
||||||
|
|
||||||
|
The `BONE_REMAP` table in the converter defines Blender → Mixamo bone
|
||||||
|
name translations (e.g. `head` → `Head`, `hand.L` → `LeftHand`).
|
||||||
|
Helper nodes (`head_end`, `hand.L_end`, etc.) that don't exist in the
|
||||||
|
player rig are silently dropped.
|
||||||
|
|
||||||
|
## Editing the bone remap
|
||||||
|
|
||||||
|
If a dasher animation doesn't apply correctly, the most likely cause is a
|
||||||
|
bone name in the glb that's not in `BONE_REMAP`. Add the entry in
|
||||||
|
`convert_dasher_animations_headless.gd` and re-run both tools.
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
@tool
|
||||||
|
extends EditorScript
|
||||||
|
|
||||||
|
# Editor tool: combine all dasher_<name>.tres AnimationLibrary files into a
|
||||||
|
# single dasher-pack.tres for player.tscn to reference.
|
||||||
|
#
|
||||||
|
# Run AFTER convert_dasher_animations.gd.
|
||||||
|
# File > Run (Ctrl+Shift+X) on this script.
|
||||||
|
#
|
||||||
|
# Output: res://assets/characters/animations/dasher-pack.tres
|
||||||
|
#
|
||||||
|
# Then add an ext_resource to scenes/player.tscn:
|
||||||
|
# [ext_resource type="AnimationLibrary" path="res://assets/characters/animations/dasher-pack.tres" id="..."]
|
||||||
|
# And on the AnimationPlayer node:
|
||||||
|
# libraries/dasher-pack = ExtResource("...")
|
||||||
|
|
||||||
|
const ANIM_DIR := "res://assets/characters/animations"
|
||||||
|
const OUTPUT := "res://assets/characters/animations/dasher-pack.res"
|
||||||
|
|
||||||
|
func _run() -> void:
|
||||||
|
var combined := AnimationLibrary.new()
|
||||||
|
|
||||||
|
var dir := DirAccess.open(ANIM_DIR)
|
||||||
|
if not dir:
|
||||||
|
push_error("[Build] Cannot open %s" % ANIM_DIR)
|
||||||
|
return
|
||||||
|
|
||||||
|
var loaded: Array[String] = []
|
||||||
|
for fname in dir.get_files():
|
||||||
|
if not fname.begins_with("dasher_"): continue
|
||||||
|
if not fname.ends_with(".res"): continue
|
||||||
|
if fname == "dasher-pack.res": continue
|
||||||
|
var path := "%s/%s" % [ANIM_DIR, fname]
|
||||||
|
var res: Resource = load(path)
|
||||||
|
if not res is AnimationLibrary:
|
||||||
|
push_warning("[Build] %s is not an AnimationLibrary, skipping" % fname)
|
||||||
|
continue
|
||||||
|
var lib: AnimationLibrary = res
|
||||||
|
for anim_name in lib.get_animation_list():
|
||||||
|
if combined.has_animation(anim_name):
|
||||||
|
push_warning("[Build] Duplicate anim name '%s' in %s, skipping" % [anim_name, fname])
|
||||||
|
continue
|
||||||
|
combined.add_animation(anim_name, lib.get_animation(anim_name))
|
||||||
|
loaded.append("%s/%s" % [fname, anim_name])
|
||||||
|
|
||||||
|
var err := ResourceSaver.save(combined, OUTPUT)
|
||||||
|
if err != OK:
|
||||||
|
push_error("[Build] ResourceSaver.save failed: %d" % err)
|
||||||
|
return
|
||||||
|
print("[Build] %d animation(s) written to %s" % [loaded.size(), OUTPUT])
|
||||||
|
for l in loaded:
|
||||||
|
print(" - %s" % l)
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
# Headless equivalent of build_dasher_pack.gd.
|
||||||
|
# Run from CLI AFTER convert_dasher_animations_headless.gd:
|
||||||
|
# godot --headless --path /home/beng/Godot/Projects/tekton-enet --script res://tools/build_dasher_pack_headless.gd
|
||||||
|
#
|
||||||
|
# Produces: res://assets/characters/animations/dasher-pack.tres
|
||||||
|
|
||||||
|
const ANIM_DIR := "res://assets/characters/animations"
|
||||||
|
const OUTPUT := "res://assets/characters/animations/dasher-pack.res"
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
print("[Build] Headless run starting...")
|
||||||
|
var combined := AnimationLibrary.new()
|
||||||
|
|
||||||
|
var dir := DirAccess.open(ANIM_DIR)
|
||||||
|
if not dir:
|
||||||
|
push_error("[Build] Cannot open %s" % ANIM_DIR)
|
||||||
|
quit(1)
|
||||||
|
return
|
||||||
|
|
||||||
|
var loaded: Array[String] = []
|
||||||
|
for fname in dir.get_files():
|
||||||
|
if not fname.begins_with("dasher_"): continue
|
||||||
|
if not fname.ends_with(".res"): continue
|
||||||
|
if fname == "dasher-pack.res": continue
|
||||||
|
var path := "%s/%s" % [ANIM_DIR, fname]
|
||||||
|
var res: Resource = load(path)
|
||||||
|
if not res is AnimationLibrary:
|
||||||
|
push_warning("[Build] %s is not an AnimationLibrary, skipping" % fname)
|
||||||
|
continue
|
||||||
|
var lib: AnimationLibrary = res
|
||||||
|
for anim_name in lib.get_animation_list():
|
||||||
|
if combined.has_animation(anim_name):
|
||||||
|
push_warning("[Build] Duplicate anim name '%s' in %s, skipping" % [anim_name, fname])
|
||||||
|
continue
|
||||||
|
combined.add_animation(anim_name, lib.get_animation(anim_name))
|
||||||
|
loaded.append("%s/%s" % [fname, anim_name])
|
||||||
|
|
||||||
|
var err := ResourceSaver.save(combined, OUTPUT)
|
||||||
|
if err != OK:
|
||||||
|
push_error("[Build] ResourceSaver.save failed: %d" % err)
|
||||||
|
quit(1)
|
||||||
|
return
|
||||||
|
print("[Build] Done. %d animation(s) written to %s" % [loaded.size(), OUTPUT])
|
||||||
|
for l in loaded:
|
||||||
|
print(" - %s" % l)
|
||||||
|
quit(0)
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://baco51hmps6s1
|
|
||||||
@@ -0,0 +1,185 @@
|
|||||||
|
@tool
|
||||||
|
extends EditorScript
|
||||||
|
|
||||||
|
# Editor tool: convert each dasher_*.glb into an AnimationLibrary .tres file
|
||||||
|
# with tracks retargeted to the player rig (GeneralSkeleton + Mixamo bone names).
|
||||||
|
#
|
||||||
|
# Run once in the Godot editor:
|
||||||
|
# File > Run (Ctrl+Shift+X) on this script, OR
|
||||||
|
# from a @tool script: EditorInterface.get_resource_filesystem().scan()
|
||||||
|
#
|
||||||
|
# Output:
|
||||||
|
# assets/characters/animations/dasher_<name>.tres (one per glb)
|
||||||
|
# Plus a combined library:
|
||||||
|
# assets/characters/animations/dasher-pack.tres
|
||||||
|
#
|
||||||
|
# Run build_dasher_pack.gd after this to consolidate.
|
||||||
|
|
||||||
|
const DASHER_DIR := "res://assets/characters/dashers"
|
||||||
|
const ANIM_DIR := "res://assets/characters/animations"
|
||||||
|
|
||||||
|
# Map dasher glb bone names (Blender/standard) -> player rig bone names (Mixamo).
|
||||||
|
# Tracks whose node name is not in this map are dropped (e.g. helper "head_end" empties).
|
||||||
|
const BONE_REMAP := {
|
||||||
|
"bob-hold": "Hips", # root of the dasher glb
|
||||||
|
"spine": "Hips",
|
||||||
|
"spine.001": "Spine",
|
||||||
|
"head": "Head",
|
||||||
|
"hand.L": "LeftHand",
|
||||||
|
"hand.R": "RightHand",
|
||||||
|
"forearm.L": "LeftLowerArm",
|
||||||
|
"forearm.R": "RightLowerArm",
|
||||||
|
"upper_arm.L": "LeftUpperArm",
|
||||||
|
"upper_arm.R": "RightUpperArm",
|
||||||
|
"shoulder.L": "LeftShoulder",
|
||||||
|
"shoulder.R": "RightShoulder",
|
||||||
|
"leg.L": "LeftLowerLeg",
|
||||||
|
"leg.R": "RightLowerLeg",
|
||||||
|
"thigh.L": "LeftUpperLeg",
|
||||||
|
"thigh.R": "RightUpperLeg",
|
||||||
|
"foot.L": "LeftFoot",
|
||||||
|
"foot.R": "RightFoot",
|
||||||
|
"toe.L": "LeftToeBase",
|
||||||
|
"toe.R": "RightToeBase",
|
||||||
|
}
|
||||||
|
|
||||||
|
const TRACK_TYPES := [
|
||||||
|
"position", # 3D position tracks
|
||||||
|
"rotation", # 3D rotation tracks (quaternion)
|
||||||
|
"scale", # 3D scale tracks
|
||||||
|
]
|
||||||
|
|
||||||
|
func _run() -> void:
|
||||||
|
var dasher_dir := DirAccess.open(DASHER_DIR)
|
||||||
|
if not dasher_dir:
|
||||||
|
push_error("[Convert] Cannot open %s" % DASHER_DIR)
|
||||||
|
return
|
||||||
|
|
||||||
|
var converted: Array[String] = []
|
||||||
|
for fname in dasher_dir.get_files():
|
||||||
|
if not fname.ends_with(".glb"): continue
|
||||||
|
if not fname.begins_with("dasher_"): continue
|
||||||
|
var stem := fname.get_basename() # e.g. "dasher_hold"
|
||||||
|
var out_path := "%s/%s.res" % [ANIM_DIR, stem]
|
||||||
|
var ok := _convert_one("%s/%s" % [DASHER_DIR, fname], stem, out_path)
|
||||||
|
if ok:
|
||||||
|
converted.append(out_path)
|
||||||
|
else:
|
||||||
|
push_warning("[Convert] Skipped %s" % fname)
|
||||||
|
|
||||||
|
print("[Convert] %d dasher glb(s) converted: %s" % [converted.size(), converted])
|
||||||
|
|
||||||
|
func _convert_one(glb_path: String, anim_name: String, out_path: String) -> bool:
|
||||||
|
print("[Convert] %s -> %s" % [glb_path, out_path])
|
||||||
|
var doc := GLTFDocument.new()
|
||||||
|
var state := GLTFState.new()
|
||||||
|
var err := doc.append_from_file(glb_path, state)
|
||||||
|
if err != OK:
|
||||||
|
push_error("[Convert] append_from_file failed: %d" % err)
|
||||||
|
return false
|
||||||
|
|
||||||
|
var scene := doc.generate_scene(state)
|
||||||
|
if not scene:
|
||||||
|
push_error("[Convert] generate_scene returned null")
|
||||||
|
return false
|
||||||
|
|
||||||
|
var src_player: AnimationPlayer = scene.find_child("AnimationPlayer", true, false)
|
||||||
|
if not src_player:
|
||||||
|
push_error("[Convert] No AnimationPlayer in %s" % glb_path)
|
||||||
|
scene.queue_free()
|
||||||
|
return false
|
||||||
|
|
||||||
|
var out_lib := AnimationLibrary.new()
|
||||||
|
for lib_name in src_player.get_animation_library_list():
|
||||||
|
var src_lib := src_player.get_animation_library(lib_name)
|
||||||
|
for src_anim_name in src_lib.get_animation_list():
|
||||||
|
var src_anim: Animation = src_lib.get_animation(src_anim_name)
|
||||||
|
var retargeted := _retarget(src_anim)
|
||||||
|
if retargeted and retargeted.get_track_count() > 0:
|
||||||
|
out_lib.add_animation(anim_name, retargeted)
|
||||||
|
print(" + %s (%d tracks)" % [anim_name, retargeted.get_track_count()])
|
||||||
|
else:
|
||||||
|
push_warning(" - %s produced 0 tracks after retarget" % src_anim_name)
|
||||||
|
|
||||||
|
scene.queue_free()
|
||||||
|
|
||||||
|
if out_lib.get_animation_list().is_empty():
|
||||||
|
push_error("[Convert] Output library is empty for %s" % glb_path)
|
||||||
|
return false
|
||||||
|
|
||||||
|
var save_err := ResourceSaver.save(out_lib, out_path)
|
||||||
|
if save_err != OK:
|
||||||
|
push_error("[Convert] ResourceSaver.save failed: %d" % save_err)
|
||||||
|
return false
|
||||||
|
return true
|
||||||
|
|
||||||
|
func _retarget(src: Animation) -> Animation:
|
||||||
|
var dst := Animation.new()
|
||||||
|
dst.length = src.length
|
||||||
|
dst.loop_mode = src.loop_mode
|
||||||
|
dst.step = src.step
|
||||||
|
|
||||||
|
# Map: original_track_idx -> new track path or -1 to drop
|
||||||
|
for i in src.get_track_count():
|
||||||
|
var orig_path: String = src.track_get_path(i)
|
||||||
|
var bone := _extract_bone_name(orig_path)
|
||||||
|
if not BONE_REMAP.has(bone):
|
||||||
|
# drop helper nodes like head_end, hand.L_end, etc.
|
||||||
|
continue
|
||||||
|
|
||||||
|
var new_bone: String = BONE_REMAP[bone]
|
||||||
|
var new_path := "%%GeneralSkeleton:%s" % new_bone
|
||||||
|
|
||||||
|
# Match the suffix type (:position/:rotation/:scale)
|
||||||
|
var type_suffix := ""
|
||||||
|
if orig_path.ends_with(":position"): type_suffix = "position"
|
||||||
|
elif orig_path.ends_with(":rotation"): type_suffix = "rotation"
|
||||||
|
elif orig_path.ends_with(":scale"): type_suffix = "scale"
|
||||||
|
else:
|
||||||
|
push_warning(" Unrecognized track path: %s" % orig_path)
|
||||||
|
continue
|
||||||
|
|
||||||
|
match type_suffix:
|
||||||
|
"position":
|
||||||
|
if new_bone != "Hips": continue
|
||||||
|
dst.add_track(Animation.TYPE_POSITION_3D)
|
||||||
|
"rotation":
|
||||||
|
dst.add_track(Animation.TYPE_ROTATION_3D)
|
||||||
|
"scale":
|
||||||
|
if new_bone != "Hips": continue
|
||||||
|
dst.add_track(Animation.TYPE_SCALE_3D)
|
||||||
|
|
||||||
|
var new_idx := dst.get_track_count() - 1
|
||||||
|
dst.track_set_path(new_idx, NodePath(new_path))
|
||||||
|
dst.track_set_interpolation_type(new_idx, src.track_get_interpolation_type(i))
|
||||||
|
dst.track_set_imported(new_idx, src.track_is_imported(i))
|
||||||
|
dst.track_set_enabled(new_idx, src.track_is_enabled(i))
|
||||||
|
|
||||||
|
# Copy keyframes
|
||||||
|
var key_count := src.track_get_key_count(i)
|
||||||
|
for k in key_count:
|
||||||
|
var t: float = src.track_get_key_time(i, k)
|
||||||
|
var v: Variant = src.track_get_key_value(i, k)
|
||||||
|
var trans := src.track_get_key_transition(i, k)
|
||||||
|
match type_suffix:
|
||||||
|
"position":
|
||||||
|
dst.track_insert_key(new_idx, t, v)
|
||||||
|
"rotation":
|
||||||
|
dst.track_insert_key(new_idx, t, v)
|
||||||
|
"scale":
|
||||||
|
dst.track_insert_key(new_idx, t, v)
|
||||||
|
dst.track_set_key_transition(new_idx, k, trans)
|
||||||
|
return dst
|
||||||
|
|
||||||
|
func _extract_bone_name(path: String) -> String:
|
||||||
|
# Tracks look like: "bob-hold/Skeleton3D:hand.L:rotation"
|
||||||
|
# We want the bone name "hand.L".
|
||||||
|
# Find the last ":" that precedes a type suffix; everything between the previous
|
||||||
|
# ":" (or start) and that ":" is the bone name. Easier: split on ":" and take
|
||||||
|
# the second-to-last segment.
|
||||||
|
var parts := path.split(":")
|
||||||
|
if parts.size() < 2:
|
||||||
|
return ""
|
||||||
|
# parts[-1] is the type ("rotation" etc), parts[-2] is the bone name
|
||||||
|
# but bone names can contain "." (e.g. "hand.L"), so just take parts[-2] as-is.
|
||||||
|
return parts[-2]
|
||||||
@@ -0,0 +1,256 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
# Headless: convert each dasher_*.glb into a dasher_<name>.res with proper retargeting.
|
||||||
|
# Reads rest poses from both source GLB skeleton and target GeneralSkeleton (player.tscn)
|
||||||
|
# to compute per-bone correction quaternions.
|
||||||
|
|
||||||
|
|
||||||
|
const DASHER_DIR := "res://assets/characters/dashers"
|
||||||
|
const ANIM_DIR := "res://assets/characters/animations"
|
||||||
|
|
||||||
|
const BONE_REMAP := {
|
||||||
|
"bob-hold": "Hips",
|
||||||
|
"spine": "Hips",
|
||||||
|
"spine.001": "Spine",
|
||||||
|
"head": "Head",
|
||||||
|
"hand.L": "LeftHand",
|
||||||
|
"hand.R": "RightHand",
|
||||||
|
"forearm.L": "LeftLowerArm",
|
||||||
|
"forearm.R": "RightLowerArm",
|
||||||
|
"upper_arm.L": "LeftUpperArm",
|
||||||
|
"upper_arm.R": "RightUpperArm",
|
||||||
|
"shoulder.L": "LeftShoulder",
|
||||||
|
"shoulder.R": "RightShoulder",
|
||||||
|
"leg.L": "LeftLowerLeg",
|
||||||
|
"leg.R": "RightLowerLeg",
|
||||||
|
"thigh.L": "LeftUpperLeg",
|
||||||
|
"thigh.R": "RightUpperLeg",
|
||||||
|
"foot.L": "LeftFoot",
|
||||||
|
"foot.R": "RightFoot",
|
||||||
|
"toe.L": "LeftToeBase",
|
||||||
|
"toe.R": "RightToeBase",
|
||||||
|
}
|
||||||
|
|
||||||
|
const ANIM_PICK := {
|
||||||
|
"dasher_getting_hit": "Getting Hit",
|
||||||
|
"dasher_hit": "Hit",
|
||||||
|
"dasher_hold": "Hold",
|
||||||
|
"dasher_put": "Put",
|
||||||
|
"dasher_stun": "Stun",
|
||||||
|
"dasher_take": "bob ani",
|
||||||
|
}
|
||||||
|
|
||||||
|
# Source bone rest transforms (from GLB)
|
||||||
|
var src_rest: Dictionary = {} # bone_name -> Transform3D
|
||||||
|
# Target bone rest transforms (from GeneralSkeleton)
|
||||||
|
var tgt_rest: Dictionary = {} # bone_name -> Transform3D
|
||||||
|
# Precomputed correction quaternions
|
||||||
|
var corrections: Dictionary = {} # bone_name -> Quaternion
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
print("[Convert] Headless run starting...")
|
||||||
|
|
||||||
|
# Step 1: Load target skeleton rest poses from player scene
|
||||||
|
_load_target_rest()
|
||||||
|
|
||||||
|
# Step 2: Convert each GLB
|
||||||
|
var dasher_dir := DirAccess.open(DASHER_DIR)
|
||||||
|
if not dasher_dir:
|
||||||
|
push_error("[Convert] Cannot open %s" % DASHER_DIR)
|
||||||
|
quit(1); return
|
||||||
|
|
||||||
|
var converted: Array[String] = []
|
||||||
|
for fname in dasher_dir.get_files():
|
||||||
|
if not fname.ends_with(".glb"): continue
|
||||||
|
if not fname.begins_with("dasher_"): continue
|
||||||
|
var stem := fname.get_basename()
|
||||||
|
var out_path := "%s/%s.res" % [ANIM_DIR, stem]
|
||||||
|
var ok := _convert_one("%s/%s" % [DASHER_DIR, fname], stem, out_path)
|
||||||
|
if ok:
|
||||||
|
converted.append(out_path)
|
||||||
|
else:
|
||||||
|
push_warning("[Convert] Skipped %s" % fname)
|
||||||
|
|
||||||
|
print("[Convert] Done. %d dasher glb(s) converted:" % converted.size())
|
||||||
|
for p in converted:
|
||||||
|
print(" - %s" % p)
|
||||||
|
quit(0)
|
||||||
|
|
||||||
|
func _load_target_rest() -> void:
|
||||||
|
# Load Masbro.glb directly to extract GeneralSkeleton rest poses
|
||||||
|
# (player.tscn may fail to load if dasher-pack.res doesn't exist yet)
|
||||||
|
var doc := GLTFDocument.new()
|
||||||
|
var state := GLTFState.new()
|
||||||
|
var err := doc.append_from_file("res://assets/characters/Masbro.glb", state)
|
||||||
|
if err != OK:
|
||||||
|
push_error("[Convert] Cannot load Masbro.glb: %d" % err)
|
||||||
|
return
|
||||||
|
|
||||||
|
var instance = doc.generate_scene(state)
|
||||||
|
if not instance:
|
||||||
|
push_error("[Convert] generate_scene returned null for Masbro.glb")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Find the Skeleton3D (named GeneralSkeleton in the scene tree)
|
||||||
|
var skeleton: Skeleton3D = instance.find_child("GeneralSkeleton", true, false)
|
||||||
|
if not skeleton:
|
||||||
|
# Try finding any Skeleton3D
|
||||||
|
skeleton = instance.find_child("Skeleton3D", true, false)
|
||||||
|
if not skeleton:
|
||||||
|
push_error("[Convert] No Skeleton3D in Masbro.glb")
|
||||||
|
instance.free()
|
||||||
|
return
|
||||||
|
|
||||||
|
print("[Convert] Target skeleton: '%s' with %d bones" % [skeleton.name, skeleton.get_bone_count()])
|
||||||
|
for bone_idx in skeleton.get_bone_count():
|
||||||
|
var bone_name := skeleton.get_bone_name(bone_idx)
|
||||||
|
tgt_rest[bone_name] = skeleton.get_bone_rest(bone_idx)
|
||||||
|
|
||||||
|
instance.free()
|
||||||
|
print("[Convert] Loaded %d target bone rest poses" % tgt_rest.size())
|
||||||
|
|
||||||
|
func _convert_one(glb_path: String, anim_name: String, out_path: String) -> bool:
|
||||||
|
print("[Convert] %s -> %s" % [glb_path, out_path])
|
||||||
|
var doc := GLTFDocument.new()
|
||||||
|
var state := GLTFState.new()
|
||||||
|
var err := doc.append_from_file(glb_path, state)
|
||||||
|
if err != OK:
|
||||||
|
push_error("[Convert] append_from_file failed: %d" % err)
|
||||||
|
return false
|
||||||
|
|
||||||
|
var scene: Node = doc.generate_scene(state)
|
||||||
|
if not scene:
|
||||||
|
push_error("[Convert] generate_scene returned null")
|
||||||
|
return false
|
||||||
|
|
||||||
|
# Extract source skeleton rest poses
|
||||||
|
src_rest.clear()
|
||||||
|
var src_skeleton: Skeleton3D = scene.find_child("Skeleton3D", true, false)
|
||||||
|
if src_skeleton:
|
||||||
|
for bone_idx in src_skeleton.get_bone_count():
|
||||||
|
var bone_name := src_skeleton.get_bone_name(bone_idx)
|
||||||
|
src_rest[bone_name] = src_skeleton.get_bone_rest(bone_idx)
|
||||||
|
print(" Source skeleton: %d bones" % src_rest.size())
|
||||||
|
else:
|
||||||
|
push_error("[Convert] No Skeleton3D in %s" % glb_path)
|
||||||
|
scene.queue_free()
|
||||||
|
return false
|
||||||
|
|
||||||
|
# Compute per-bone correction quaternions
|
||||||
|
corrections.clear()
|
||||||
|
for src_bone in BONE_REMAP:
|
||||||
|
var tgt_bone: String = BONE_REMAP[src_bone]
|
||||||
|
if src_rest.has(src_bone) and tgt_rest.has(tgt_bone):
|
||||||
|
var src_basis: Basis = src_rest[src_bone].basis
|
||||||
|
var tgt_basis: Basis = tgt_rest[tgt_bone].basis
|
||||||
|
# correction = tgt_rest.inverse() * src_rest
|
||||||
|
# Applied as: final_q = correction * keyframe_q
|
||||||
|
corrections[src_bone] = tgt_basis.inverse() * src_basis
|
||||||
|
# print(" Correction for %s -> %s: %s" % [src_bone, tgt_bone, str(corrections[src_bone])])
|
||||||
|
|
||||||
|
var src_player: AnimationPlayer = scene.find_child("AnimationPlayer", true, false)
|
||||||
|
if not src_player:
|
||||||
|
push_error("[Convert] No AnimationPlayer in %s" % glb_path)
|
||||||
|
scene.queue_free()
|
||||||
|
return false
|
||||||
|
|
||||||
|
# Pick the animation whose middle segment matches the keyword
|
||||||
|
var pick_keyword: String = ANIM_PICK.get(anim_name, anim_name.replace("dasher_", ""))
|
||||||
|
var picked: Animation = null
|
||||||
|
for lib_name in src_player.get_animation_library_list():
|
||||||
|
var src_lib: AnimationLibrary = src_player.get_animation_library(lib_name)
|
||||||
|
for src_anim_name in src_lib.get_animation_list():
|
||||||
|
var segments := src_anim_name.split("|")
|
||||||
|
var mid_segment: String = segments[1] if segments.size() >= 3 else src_anim_name
|
||||||
|
if pick_keyword.to_lower() == mid_segment.to_lower():
|
||||||
|
picked = src_lib.get_animation(src_anim_name)
|
||||||
|
break
|
||||||
|
if picked: break
|
||||||
|
if not picked:
|
||||||
|
for lib_name in src_player.get_animation_library_list():
|
||||||
|
var src_lib: AnimationLibrary = src_player.get_animation_library(lib_name)
|
||||||
|
if src_lib.get_animation_list().size() > 0:
|
||||||
|
picked = src_lib.get_animation(src_lib.get_animation_list()[0])
|
||||||
|
break
|
||||||
|
if not picked:
|
||||||
|
push_error("[Convert] No animations in %s" % glb_path)
|
||||||
|
scene.queue_free()
|
||||||
|
return false
|
||||||
|
|
||||||
|
var retargeted := _retarget(picked)
|
||||||
|
scene.queue_free()
|
||||||
|
|
||||||
|
if retargeted.get_track_count() == 0:
|
||||||
|
push_error("[Convert] Retarget produced 0 tracks for %s" % glb_path)
|
||||||
|
return false
|
||||||
|
|
||||||
|
var out_lib := AnimationLibrary.new()
|
||||||
|
out_lib.add_animation(anim_name, retargeted)
|
||||||
|
print(" + %s (%d tracks from %s)" % [anim_name, retargeted.get_track_count(), picked.resource_name if picked.resource_name else "<anon>"])
|
||||||
|
|
||||||
|
var save_err := ResourceSaver.save(out_lib, out_path)
|
||||||
|
if save_err != OK:
|
||||||
|
push_error("[Convert] ResourceSaver.save failed: %d" % save_err)
|
||||||
|
return false
|
||||||
|
return true
|
||||||
|
|
||||||
|
func _retarget(src: Animation) -> Animation:
|
||||||
|
var dst := Animation.new()
|
||||||
|
dst.length = src.length
|
||||||
|
dst.loop_mode = src.loop_mode
|
||||||
|
dst.step = src.step
|
||||||
|
|
||||||
|
var usable: Array[int] = []
|
||||||
|
for i in src.get_track_count():
|
||||||
|
var orig_path: String = src.track_get_path(i)
|
||||||
|
var bone := _extract_bone_name(orig_path)
|
||||||
|
if BONE_REMAP.has(bone):
|
||||||
|
usable.append(i)
|
||||||
|
|
||||||
|
for i in usable:
|
||||||
|
var orig_path: String = src.track_get_path(i)
|
||||||
|
var bone: String = _extract_bone_name(orig_path)
|
||||||
|
var new_bone: String = BONE_REMAP[bone]
|
||||||
|
var new_path := "%%GeneralSkeleton:%s" % new_bone
|
||||||
|
|
||||||
|
var track_type := src.track_get_type(i)
|
||||||
|
|
||||||
|
match track_type:
|
||||||
|
Animation.TYPE_POSITION_3D:
|
||||||
|
if new_bone != "Hips": continue
|
||||||
|
dst.add_track(Animation.TYPE_POSITION_3D)
|
||||||
|
Animation.TYPE_ROTATION_3D:
|
||||||
|
dst.add_track(Animation.TYPE_ROTATION_3D)
|
||||||
|
Animation.TYPE_SCALE_3D:
|
||||||
|
if new_bone != "Hips": continue
|
||||||
|
dst.add_track(Animation.TYPE_SCALE_3D)
|
||||||
|
Animation.TYPE_BLEND_SHAPE: continue
|
||||||
|
_: continue
|
||||||
|
|
||||||
|
var new_idx := dst.get_track_count() - 1
|
||||||
|
dst.track_set_path(new_idx, NodePath(new_path))
|
||||||
|
dst.track_set_interpolation_type(new_idx, src.track_get_interpolation_type(i))
|
||||||
|
dst.track_set_imported(new_idx, src.track_is_imported(i))
|
||||||
|
dst.track_set_enabled(new_idx, src.track_is_enabled(i))
|
||||||
|
|
||||||
|
var key_count := src.track_get_key_count(i)
|
||||||
|
for k in key_count:
|
||||||
|
var t: float = src.track_get_key_time(i, k)
|
||||||
|
var v: Variant = src.track_get_key_value(i, k)
|
||||||
|
var trans := src.track_get_key_transition(i, k)
|
||||||
|
|
||||||
|
# Apply rest-pose correction to rotation tracks
|
||||||
|
if track_type == Animation.TYPE_ROTATION_3D and corrections.has(bone):
|
||||||
|
var orig_q: Quaternion = v
|
||||||
|
var corr_q: Quaternion = corrections[bone]
|
||||||
|
v = corr_q * orig_q
|
||||||
|
|
||||||
|
dst.track_insert_key(new_idx, t, v)
|
||||||
|
dst.track_set_key_transition(new_idx, k, trans)
|
||||||
|
return dst
|
||||||
|
|
||||||
|
func _extract_bone_name(path: String) -> String:
|
||||||
|
var parts := path.split(":")
|
||||||
|
if parts.size() < 2:
|
||||||
|
return ""
|
||||||
|
return parts[-1]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dgwmo0tdt8dwl
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
const DASHER_DIR := "res://assets/characters/dashers"
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var dir := DirAccess.open(DASHER_DIR)
|
||||||
|
for fname in dir.get_files():
|
||||||
|
if not fname.ends_with(".glb"): continue
|
||||||
|
var doc = GLTFDocument.new()
|
||||||
|
var state = GLTFState.new()
|
||||||
|
doc.append_from_file("%s/%s" % [DASHER_DIR, fname], state)
|
||||||
|
var scene = doc.generate_scene(state)
|
||||||
|
var ap: AnimationPlayer = scene.find_child("AnimationPlayer", true, false)
|
||||||
|
if ap:
|
||||||
|
print("=== %s ===" % fname)
|
||||||
|
for lib_name in ap.get_animation_library_list():
|
||||||
|
var lib = ap.get_animation_library(lib_name)
|
||||||
|
for anim_name in lib.get_animation_list():
|
||||||
|
print(" ", anim_name)
|
||||||
|
quit()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://cau1rt1kfa32y
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var scene = preload("res://scenes/player.tscn").instantiate()
|
||||||
|
var skel: Skeleton3D = null
|
||||||
|
|
||||||
|
# Find GeneralSkeleton anywhere in the player scene
|
||||||
|
var queue = [scene]
|
||||||
|
while queue.size() > 0:
|
||||||
|
var n = queue.pop_front()
|
||||||
|
if n is Skeleton3D and n.name == "GeneralSkeleton":
|
||||||
|
skel = n
|
||||||
|
break
|
||||||
|
for c in n.get_children():
|
||||||
|
queue.append(c)
|
||||||
|
|
||||||
|
if skel:
|
||||||
|
print("Found GeneralSkeleton! Bones:")
|
||||||
|
for i in skel.get_bone_count():
|
||||||
|
print(" - ", skel.get_bone_name(i))
|
||||||
|
else:
|
||||||
|
print("GeneralSkeleton not found in player.tscn!")
|
||||||
|
print("Tree:")
|
||||||
|
_print_tree(scene, 0)
|
||||||
|
|
||||||
|
quit()
|
||||||
|
|
||||||
|
func _print_tree(n: Node, depth: int) -> void:
|
||||||
|
var indent = " ".repeat(depth)
|
||||||
|
print("%s- %s (%s)" % [indent, n.name, n.get_class()])
|
||||||
|
for c in n.get_children():
|
||||||
|
_print_tree(c, depth + 1)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dxxtbdm3usgdp
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
extends SceneTree
|
||||||
|
func _init() -> void:
|
||||||
|
var scene = preload("res://scenes/player.tscn").instantiate()
|
||||||
|
var masbro = scene.get_node("Masbro")
|
||||||
|
if masbro:
|
||||||
|
print("Masbro found! Children:")
|
||||||
|
_print_tree(masbro, 0)
|
||||||
|
else:
|
||||||
|
print("No Masbro")
|
||||||
|
quit()
|
||||||
|
func _print_tree(n: Node, depth: int) -> void:
|
||||||
|
var indent = " ".repeat(depth)
|
||||||
|
print("%s- %s (%s)" % [indent, n.name, n.get_class()])
|
||||||
|
for c in n.get_children():
|
||||||
|
_print_tree(c, depth + 1)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dt8bew0d4r6bp
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
print("TYPE_VALUE: ", Animation.TYPE_VALUE)
|
||||||
|
print("TYPE_POSITION_3D: ", Animation.TYPE_POSITION_3D)
|
||||||
|
print("TYPE_ROTATION_3D: ", Animation.TYPE_ROTATION_3D)
|
||||||
|
print("TYPE_SCALE_3D: ", Animation.TYPE_SCALE_3D)
|
||||||
|
quit()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dl8svqqgt6m3n
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var lib = load("res://assets/characters/animations/dasher-pack.res") as AnimationLibrary
|
||||||
|
if not lib:
|
||||||
|
quit(1)
|
||||||
|
return
|
||||||
|
|
||||||
|
var anim_name = "dasher_hit"
|
||||||
|
if lib.has_animation(anim_name):
|
||||||
|
var anim = lib.get_animation(anim_name)
|
||||||
|
print("Animation: ", anim_name)
|
||||||
|
var has_pos = 0
|
||||||
|
var has_rot = 0
|
||||||
|
var has_scale = 0
|
||||||
|
var pos_bones = []
|
||||||
|
|
||||||
|
for i in anim.get_track_count():
|
||||||
|
var type = anim.track_get_type(i)
|
||||||
|
var path = anim.track_get_path(i)
|
||||||
|
if type == Animation.TYPE_POSITION_3D:
|
||||||
|
has_pos += 1
|
||||||
|
pos_bones.append(str(path))
|
||||||
|
elif type == Animation.TYPE_ROTATION_3D:
|
||||||
|
has_rot += 1
|
||||||
|
elif type == Animation.TYPE_SCALE_3D:
|
||||||
|
has_scale += 1
|
||||||
|
|
||||||
|
print(" Positions: ", has_pos, " (", pos_bones, ")")
|
||||||
|
print(" Rotations: ", has_rot)
|
||||||
|
print(" Scales: ", has_scale)
|
||||||
|
|
||||||
|
quit(0)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bleaj3miugqrm
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var lib = load("res://assets/characters/animations/dasher-pack.res") as AnimationLibrary
|
||||||
|
for anim_name in lib.get_animation_list():
|
||||||
|
var anim = lib.get_animation(anim_name)
|
||||||
|
print("=== %s (%d tracks) ===" % [anim_name, anim.get_track_count()])
|
||||||
|
for i in anim.get_track_count():
|
||||||
|
var type = anim.track_get_type(i)
|
||||||
|
var path = anim.track_get_path(i)
|
||||||
|
var type_str = ["VALUE","POSITION","ROTATION","SCALE"][type]
|
||||||
|
print(" [%d] type=%s path=%s" % [i, type_str, path])
|
||||||
|
quit()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://yyhb801dk5ve
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var lib = load("res://assets/characters/animations/dasher-pack.res") as AnimationLibrary
|
||||||
|
if not lib:
|
||||||
|
print("Failed to load dasher-pack.res")
|
||||||
|
quit(1)
|
||||||
|
return
|
||||||
|
|
||||||
|
var anim_name = lib.get_animation_list()[0]
|
||||||
|
var anim = lib.get_animation(anim_name)
|
||||||
|
print("First animation: ", anim_name)
|
||||||
|
for i in min(anim.get_track_count(), 5):
|
||||||
|
print(" Track ", i, " path: ", anim.track_get_path(i))
|
||||||
|
|
||||||
|
quit(0)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://ce58ow1re1l24
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var doc = GLTFDocument.new()
|
||||||
|
var state = GLTFState.new()
|
||||||
|
var err = doc.append_from_file("res://assets/characters/dashers/dasher_hit.glb", state)
|
||||||
|
var scene = doc.generate_scene(state)
|
||||||
|
var ap: AnimationPlayer = scene.find_child("AnimationPlayer", true, false)
|
||||||
|
|
||||||
|
var lib = ap.get_animation_library("")
|
||||||
|
var anim_name = "dasher_take|Hit|Anima_Layer"
|
||||||
|
if lib.has_animation(anim_name):
|
||||||
|
var anim = lib.get_animation(anim_name)
|
||||||
|
print("=== RAW TRACKS ===")
|
||||||
|
for i in anim.get_track_count():
|
||||||
|
var type = anim.track_get_type(i)
|
||||||
|
var path = anim.track_get_path(i)
|
||||||
|
print(" Track ", i, " type: ", type, " path: ", path)
|
||||||
|
quit()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dcoduco766d6w
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var lib = load("res://assets/characters/animations/animation-pack.res") as AnimationLibrary
|
||||||
|
if not lib:
|
||||||
|
print("Failed to load animation-pack.res")
|
||||||
|
quit(1)
|
||||||
|
return
|
||||||
|
|
||||||
|
var anim_name = "walk_forward"
|
||||||
|
if lib.has_animation(anim_name):
|
||||||
|
var anim = lib.get_animation(anim_name)
|
||||||
|
print("Animation: ", anim_name)
|
||||||
|
var has_pos = 0
|
||||||
|
var has_rot = 0
|
||||||
|
var has_scale = 0
|
||||||
|
var pos_bones = []
|
||||||
|
|
||||||
|
for i in anim.get_track_count():
|
||||||
|
var type = anim.track_get_type(i)
|
||||||
|
var path = anim.track_get_path(i)
|
||||||
|
if type == Animation.TYPE_POSITION_3D:
|
||||||
|
has_pos += 1
|
||||||
|
pos_bones.append(str(path))
|
||||||
|
elif type == Animation.TYPE_ROTATION_3D:
|
||||||
|
has_rot += 1
|
||||||
|
elif type == Animation.TYPE_SCALE_3D:
|
||||||
|
has_scale += 1
|
||||||
|
|
||||||
|
print(" Positions: ", has_pos, " (", pos_bones, ")")
|
||||||
|
print(" Rotations: ", has_rot)
|
||||||
|
print(" Scales: ", has_scale)
|
||||||
|
|
||||||
|
quit(0)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://c1boh2egfnnfu
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
extends SceneTree
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
var lib = load("res://assets/characters/animations/animation-pack.res") as AnimationLibrary
|
||||||
|
var anim = lib.get_animation("walk_forward")
|
||||||
|
print("=== walk_forward tracks ===")
|
||||||
|
for i in anim.get_track_count():
|
||||||
|
var type = anim.track_get_type(i)
|
||||||
|
var path = anim.track_get_path(i)
|
||||||
|
var type_str = ["VALUE","POSITION","ROTATION","SCALE"][type]
|
||||||
|
print(" [%d] type=%s path=%s" % [i, type_str, path])
|
||||||
|
quit()
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://dajp15327baah
|
||||||
Reference in New Issue
Block a user