generated from Persson-dev/Godot-Xmake
Compare commits
11 Commits
39b9e6039c
...
remy
| Author | SHA1 | Date | |
|---|---|---|---|
| 89b62317d4 | |||
| 2353cbb2be | |||
| 3c6a3dba44 | |||
| 0d72e7f765 | |||
| 60d0a83345 | |||
| e5436241ef | |||
| b64a372af8 | |||
| 9df52e0016 | |||
| 8d12eff214 | |||
| b28fdc0a94 | |||
| 137559ad29 |
BIN
godot/Assets/Models/Weapons/pen_base.res
LFS
Normal file
BIN
godot/Assets/Models/Weapons/pen_base.res
LFS
Normal file
Binary file not shown.
BIN
godot/Assets/Models/Weapons/pen_lid.res
LFS
Normal file
BIN
godot/Assets/Models/Weapons/pen_lid.res
LFS
Normal file
Binary file not shown.
@@ -1,13 +1,14 @@
|
||||
[gd_scene load_steps=29 format=3 uid="uid://c8qr7bgsuv3fj"]
|
||||
[gd_scene load_steps=32 format=3 uid="uid://c8qr7bgsuv3fj"]
|
||||
|
||||
[ext_resource type="ArrayMesh" uid="uid://drdrjg5t6cat1" path="res://Assets/Models/Characters/Remy/Remy_Body.res" id="1_tfpbs"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://bbjd4bh4hgedm" path="res://Assets/Models/Characters/Remy/Remy_Bottoms.res" id="2_omx5l"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://d1a0omfy8b7f" path="res://Assets/Models/Characters/Remy/Remy_Eyelashes.res" id="3_fp6ml"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://dhdpeecr1i138" path="res://Assets/Models/Characters/Remy/Remy_Eyes.res" id="4_xwbnc"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://c8wpk83we6bcj" path="res://Assets/Models/Characters/Remy/Remy_Hair.res" id="5_u0ca1"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://drwk636ejndva" path="res://Assets/Models/Characters/Remy/Remy_Shoes.res" id="6_xg4n7"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://c4ng47kl3x6gv" path="res://Assets/Models/Characters/Remy/Remy_Tops.res" id="7_skjds"]
|
||||
[ext_resource type="AnimationLibrary" uid="uid://burs5yh2xo7oe" path="res://Assets/Animations/Shooter_Pack.res" id="17_0rhm1"]
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Characters/Remy/Remy_Body.res" id="1_tfpbs"]
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Characters/Remy/Remy_Bottoms.res" id="2_omx5l"]
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Characters/Remy/Remy_Eyelashes.res" id="3_fp6ml"]
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Characters/Remy/Remy_Eyes.res" id="4_xwbnc"]
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Characters/Remy/Remy_Hair.res" id="5_u0ca1"]
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Characters/Remy/Remy_Shoes.res" id="6_xg4n7"]
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Characters/Remy/Remy_Tops.res" id="7_skjds"]
|
||||
[ext_resource type="PackedScene" path="res://Scenes/Characters/remy_fpv.tscn" id="9_0cwor"]
|
||||
[ext_resource type="AnimationLibrary" path="res://Assets/Animations/Shooter_Pack.res" id="17_0rhm1"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_voxql"]
|
||||
|
||||
@@ -216,6 +217,15 @@ bind/66/name = &"mixamorig_RightToe_End"
|
||||
bind/66/bone = -1
|
||||
bind/66/pose = Transform3D(-99.0345, -0.159767, -13.8615, -13.8624, 1.14127, 99.028, -1.58735e-05, 99.9934, -1.1524, -18.7761, -41.9626, -2.95062)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8rx3k"]
|
||||
albedo_color = Color(0, 0.4, 1, 1)
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_spot0"]
|
||||
material = SubResource("StandardMaterial3D_8rx3k")
|
||||
top_radius = 0.03
|
||||
bottom_radius = 0.03
|
||||
height = 0.2
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_jv0gp"]
|
||||
animation = &"Shooter_Pack/Jump"
|
||||
|
||||
@@ -304,10 +314,16 @@ states/Start/position = Vector2(107.334, 120.683)
|
||||
transitions = ["Start", "Movement", SubResource("AnimationNodeStateMachineTransition_d2yto"), "JumpBlend", "Movement", SubResource("AnimationNodeStateMachineTransition_04hs0"), "Movement", "JumpBlend", SubResource("AnimationNodeStateMachineTransition_a4m5g")]
|
||||
graph_offset = Vector2(18, 52)
|
||||
|
||||
[node name="Player" type="CharacterBody3D"]
|
||||
[node name="Player" type="Player"]
|
||||
collision_layer = 2
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Head" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.55647, 0)
|
||||
visible = false
|
||||
|
||||
[node name="FPV" parent="Head" instance=ExtResource("9_0cwor")]
|
||||
transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 0, -1.55647, 0)
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
@@ -322,43 +338,43 @@ bones/0/name = "mixamorig_Hips"
|
||||
bones/0/parent = -1
|
||||
bones/0/rest = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, -0.0419201, -1.41641, -209.151)
|
||||
bones/0/enabled = true
|
||||
bones/0/position = Vector3(1.63677, -4.49609, -200.653)
|
||||
bones/0/rotation = Quaternion(-0.739237, -0.258205, 0.222406, 0.580857)
|
||||
bones/0/position = Vector3(1.31847, -4.02682, -200.943)
|
||||
bones/0/rotation = Quaternion(-0.737988, -0.258812, 0.222558, 0.582116)
|
||||
bones/0/scale = Vector3(1, 1, 1)
|
||||
bones/1/name = "mixamorig_Spine"
|
||||
bones/1/parent = 0
|
||||
bones/1/rest = Transform3D(0.999934, -0.0114498, -0.0011499, 0.0115074, 0.994929, 0.0999206, -3.49246e-10, -0.0999272, 0.994995, -0.194802, 19.8048, -3.88975)
|
||||
bones/1/enabled = true
|
||||
bones/1/position = Vector3(-0.194802, 19.8048, -3.88975)
|
||||
bones/1/rotation = Quaternion(0.00958157, -0.00112656, 0.00678177, 0.999931)
|
||||
bones/1/rotation = Quaternion(0.00601573, -0.00115254, 0.00737783, 0.999954)
|
||||
bones/1/scale = Vector3(1, 1, 1)
|
||||
bones/2/name = "mixamorig_Spine1"
|
||||
bones/2/parent = 1
|
||||
bones/2/rest = Transform3D(0.999971, 0.00757641, 0.000325683, -0.00754545, 0.99834, -0.0571043, -0.000757788, 0.0571002, 0.998368, -3.2684e-09, 23.6201, 1.45286e-06)
|
||||
bones/2/enabled = true
|
||||
bones/2/position = Vector3(-1.19257e-06, 23.6201, -1.8128e-06)
|
||||
bones/2/rotation = Quaternion(0.169939, -0.0004178, -0.00936946, 0.98541)
|
||||
bones/2/rotation = Quaternion(0.161755, -0.000345839, -0.00903295, 0.98679)
|
||||
bones/2/scale = Vector3(1, 1, 1)
|
||||
bones/3/name = "mixamorig_Spine2"
|
||||
bones/3/parent = 2
|
||||
bones/3/rest = Transform3D(0.99975, 0.022206, -0.00268874, -0.0223475, 0.986423, -0.162699, -0.000960642, 0.162718, 0.986672, -9.47592e-08, 27.8335, -3.24631e-07)
|
||||
bones/3/enabled = true
|
||||
bones/3/position = Vector3(-2.2861e-06, 27.8335, -9.58577e-06)
|
||||
bones/3/rotation = Quaternion(0.223162, 2.66565e-06, -0.0165778, 0.97464)
|
||||
bones/3/rotation = Quaternion(0.218357, 0.000101476, -0.0162451, 0.975734)
|
||||
bones/3/scale = Vector3(1, 1, 1)
|
||||
bones/4/name = "mixamorig_Neck"
|
||||
bones/4/parent = 3
|
||||
bones/4/rest = Transform3D(0.999597, 0.0272384, -0.00797183, -0.0281752, 0.986162, -0.163372, 0.00341151, 0.163531, 0.986532, 1.09979e-06, 31.2942, 3.40958e-06)
|
||||
bones/4/enabled = true
|
||||
bones/4/position = Vector3(5.31052e-06, 31.2941, -5.5078e-06)
|
||||
bones/4/rotation = Quaternion(0.0877753, 0.0627841, -0.0193359, 0.993972)
|
||||
bones/4/rotation = Quaternion(0.0872076, 0.0627506, -0.0194703, 0.994021)
|
||||
bones/4/scale = Vector3(1, 1, 1)
|
||||
bones/5/name = "mixamorig_Head"
|
||||
bones/5/parent = 4
|
||||
bones/5/rest = Transform3D(1, 4.02525e-09, -1.3034e-09, -4.02525e-09, 1, -2.98314e-08, 1.3034e-09, 2.98314e-08, 1, 4.17233e-07, 23.1889, -1.84905e-05)
|
||||
bones/5/enabled = true
|
||||
bones/5/position = Vector3(-5.18166e-06, 23.189, -3.23355e-06)
|
||||
bones/5/rotation = Quaternion(-0.0363722, 0.207735, 0.0345502, 0.976898)
|
||||
bones/5/rotation = Quaternion(-0.0417769, 0.207732, 0.0337613, 0.97671)
|
||||
bones/5/scale = Vector3(1, 1, 1)
|
||||
bones/6/name = "mixamorig_HeadTop_End"
|
||||
bones/6/parent = 5
|
||||
@@ -386,42 +402,42 @@ bones/9/parent = 3
|
||||
bones/9/rest = Transform3D(-0.152334, 0.987167, 0.0478953, -0.126049, 0.0286596, -0.99161, -0.980258, -0.157094, 0.120066, 12.6034, 19.3138, 0.359166)
|
||||
bones/9/enabled = true
|
||||
bones/9/position = Vector3(12.6034, 19.3138, 0.359121)
|
||||
bones/9/rotation = Quaternion(-0.239994, -0.301966, 0.662007, -0.642624)
|
||||
bones/9/rotation = Quaternion(-0.23609, -0.305407, 0.662257, -0.642186)
|
||||
bones/9/scale = Vector3(1, 1, 1)
|
||||
bones/10/name = "mixamorig_LeftArm"
|
||||
bones/10/parent = 9
|
||||
bones/10/rest = Transform3D(0.988302, -0.152444, 0.00449339, 0.15251, 0.987873, -0.0291195, 1.86963e-07, 0.0294642, 0.999566, -1.19209e-06, 26.5833, 2.22179e-05)
|
||||
bones/10/enabled = true
|
||||
bones/10/position = Vector3(-3.56706e-07, 26.5833, -3.24625e-05)
|
||||
bones/10/rotation = Quaternion(0.497358, -0.228437, 0.282363, 0.78786)
|
||||
bones/10/rotation = Quaternion(0.503659, -0.215816, 0.280938, 0.787925)
|
||||
bones/10/scale = Vector3(1, 1, 1)
|
||||
bones/11/name = "mixamorig_LeftForeArm"
|
||||
bones/11/parent = 10
|
||||
bones/11/rest = Transform3D(1, -2.10846e-08, 1.88103e-08, 2.10846e-08, 1, -2.69332e-08, -1.88103e-08, 2.69332e-08, 1, 5.1085e-05, 55.1277, -2.11076e-05)
|
||||
bones/11/enabled = true
|
||||
bones/11/position = Vector3(5.7048e-05, 55.1277, 7.05517e-06)
|
||||
bones/11/rotation = Quaternion(6.12742e-08, -1.30569e-07, 0.533777, 0.845625)
|
||||
bones/11/rotation = Quaternion(-6.44932e-08, -5.59393e-08, 0.530515, 0.847676)
|
||||
bones/11/scale = Vector3(1, 1, 1)
|
||||
bones/12/name = "mixamorig_LeftHand"
|
||||
bones/12/parent = 11
|
||||
bones/12/rest = Transform3D(1, 7.38569e-08, -7.38568e-08, -7.38568e-08, 1, 5.78276e-07, 7.38568e-08, -5.78276e-07, 1, -4.24793e-07, 52.7734, 3.75958e-05)
|
||||
bones/12/enabled = true
|
||||
bones/12/position = Vector3(-1.91235e-06, 52.7734, 1.86238e-06)
|
||||
bones/12/rotation = Quaternion(-0.130394, -0.831442, -0.241562, 0.483062)
|
||||
bones/12/rotation = Quaternion(-0.128131, -0.832138, -0.239333, 0.483578)
|
||||
bones/12/scale = Vector3(1, 1, 1)
|
||||
bones/13/name = "mixamorig_LeftHandMiddle1"
|
||||
bones/13/parent = 12
|
||||
bones/13/rest = Transform3D(1, -5.29001e-08, 5.28998e-08, 5.29001e-08, 1, 3.84015e-15, -5.28998e-08, -1.04175e-15, 1, -1.95983e-05, 27.7446, 3.00043e-05)
|
||||
bones/13/enabled = true
|
||||
bones/13/position = Vector3(-2.07878e-05, 27.7446, 2.08545e-05)
|
||||
bones/13/rotation = Quaternion(0.440789, -0.0180719, -0.0444309, 0.896328)
|
||||
bones/13/rotation = Quaternion(0.44135, -0.0180835, -0.0445141, 0.896048)
|
||||
bones/13/scale = Vector3(1, 1, 1)
|
||||
bones/14/name = "mixamorig_LeftHandMiddle2"
|
||||
bones/14/parent = 13
|
||||
bones/14/rest = Transform3D(1, -6.53159e-09, 6.53199e-09, 6.53162e-09, 1, -4.47234e-06, -6.53197e-09, 4.47234e-06, 1, -2.36411e-07, 6.9316, 2.82965e-08)
|
||||
bones/14/enabled = true
|
||||
bones/14/position = Vector3(-1.90278e-06, 6.93162, -1.75854e-05)
|
||||
bones/14/rotation = Quaternion(0.536637, 1.45957e-07, -0.0548675, 0.842027)
|
||||
bones/14/rotation = Quaternion(0.536752, 1.99106e-07, -0.0548792, 0.841954)
|
||||
bones/14/scale = Vector3(1, 1, 1)
|
||||
bones/15/name = "mixamorig_LeftHandMiddle3"
|
||||
bones/15/parent = 14
|
||||
@@ -442,14 +458,14 @@ bones/17/parent = 12
|
||||
bones/17/rest = Transform3D(0.894427, -0.447215, 3.7998e-07, 0.3873, 0.774596, -0.499999, 0.223607, 0.447213, 0.866026, -6.12881, 11.1231, 3.29153)
|
||||
bones/17/enabled = true
|
||||
bones/17/position = Vector3(-6.12881, 11.1231, 3.29155)
|
||||
bones/17/rotation = Quaternion(0.226107, -0.0329116, 0.133325, 0.964374)
|
||||
bones/17/rotation = Quaternion(0.226138, -0.0317322, 0.133707, 0.964353)
|
||||
bones/17/scale = Vector3(1, 1, 1)
|
||||
bones/18/name = "mixamorig_LeftHandThumb2"
|
||||
bones/18/parent = 17
|
||||
bones/18/rest = Transform3D(1, 5.40167e-07, -9.05024e-07, -5.40167e-07, 1, 2.06644e-07, 9.05024e-07, -2.06644e-07, 1, 1.055e-05, 11.2243, 1.47453e-05)
|
||||
bones/18/enabled = true
|
||||
bones/18/position = Vector3(-3.57633e-07, 11.2243, 7.37929e-06)
|
||||
bones/18/rotation = Quaternion(0.0132186, 0.168261, -0.0636, 0.9836)
|
||||
bones/18/rotation = Quaternion(0.0133201, 0.168602, -0.0634784, 0.983548)
|
||||
bones/18/scale = Vector3(1, 1, 1)
|
||||
bones/19/name = "mixamorig_LeftHandThumb3"
|
||||
bones/19/parent = 18
|
||||
@@ -470,7 +486,7 @@ bones/21/parent = 12
|
||||
bones/21/rest = Transform3D(1, -6.75132e-08, 4.52292e-08, 6.75132e-08, 1, 3.72461e-15, -4.52292e-08, -6.71043e-16, 1, -5.15204, 28.4902, 0.454742)
|
||||
bones/21/enabled = true
|
||||
bones/21/position = Vector3(-5.15204, 28.4902, 0.454752)
|
||||
bones/21/rotation = Quaternion(0.315946, -0.0126994, -0.0317499, 0.948161)
|
||||
bones/21/rotation = Quaternion(0.315622, -0.0126546, -0.0318108, 0.948267)
|
||||
bones/21/scale = Vector3(1, 1, 1)
|
||||
bones/22/name = "mixamorig_LeftHandIndex2"
|
||||
bones/22/parent = 21
|
||||
@@ -498,7 +514,7 @@ bones/25/parent = 12
|
||||
bones/25/rest = Transform3D(1, -7.55707e-08, 9.35739e-08, 7.55707e-08, 1, 8.50463e-15, -9.35739e-08, -1.43318e-15, 1, 4.24104, 25.4841, -0.0792854)
|
||||
bones/25/enabled = true
|
||||
bones/25/position = Vector3(4.24103, 25.4841, -0.0792398)
|
||||
bones/25/rotation = Quaternion(0.505224, -0.0258896, -0.0423763, 0.861559)
|
||||
bones/25/rotation = Quaternion(0.50551, -0.0258801, -0.0424506, 0.861387)
|
||||
bones/25/scale = Vector3(1, 1, 1)
|
||||
bones/26/name = "mixamorig_LeftHandRing2"
|
||||
bones/26/parent = 25
|
||||
@@ -526,7 +542,7 @@ bones/29/parent = 12
|
||||
bones/29/rest = Transform3D(1, 1.45895e-07, -6.80601e-08, -1.45895e-07, 1, 1.02676e-14, 6.80601e-08, -3.37994e-16, 1, 8.78095, 21.9058, 0.441009)
|
||||
bones/29/enabled = true
|
||||
bones/29/position = Vector3(8.78094, 21.9058, 0.44099)
|
||||
bones/29/rotation = Quaternion(0.590974, -0.0696128, 0.00214942, 0.803678)
|
||||
bones/29/rotation = Quaternion(0.591694, -0.0695364, 0.00180756, 0.803156)
|
||||
bones/29/scale = Vector3(1, 1, 1)
|
||||
bones/30/name = "mixamorig_LeftHandPinky2"
|
||||
bones/30/parent = 29
|
||||
@@ -561,28 +577,28 @@ bones/34/parent = 33
|
||||
bones/34/rest = Transform3D(0.979455, 0.20163, -0.00352932, -0.201661, 0.979305, -0.0171403, 2.81609e-07, 0.0174999, 0.999847, 0, 26.8919, 5.34301e-05)
|
||||
bones/34/enabled = true
|
||||
bones/34/position = Vector3(-6.16595e-06, 26.892, -2.96828e-05)
|
||||
bones/34/rotation = Quaternion(0.485652, -0.177754, -0.613444, 0.596852)
|
||||
bones/34/rotation = Quaternion(0.484551, -0.188853, -0.610398, 0.597461)
|
||||
bones/34/scale = Vector3(1, 1, 1)
|
||||
bones/35/name = "mixamorig_RightForeArm"
|
||||
bones/35/parent = 34
|
||||
bones/35/rest = Transform3D(1, -7.19568e-08, 7.54872e-08, 7.19568e-08, 1, -3.72529e-09, -7.54872e-08, 3.7253e-09, 1, -9.15826e-05, 55.8427, 1.75912e-06)
|
||||
bones/35/enabled = true
|
||||
bones/35/position = Vector3(-9.2777e-05, 55.8427, -1.47738e-05)
|
||||
bones/35/rotation = Quaternion(-9.44476e-08, 5.25878e-08, -0.757599, 0.652721)
|
||||
bones/35/rotation = Quaternion(-1.02351e-07, 3.7518e-08, -0.757914, 0.652354)
|
||||
bones/35/scale = Vector3(1, 1, 1)
|
||||
bones/36/name = "mixamorig_RightHand"
|
||||
bones/36/parent = 35
|
||||
bones/36/rest = Transform3D(1, 1.12042e-08, -1.12042e-08, -1.12042e-08, 1, 2.94192e-16, 1.12042e-08, -1.68659e-16, 1, -4.39542e-05, 50.3137, 4.89908e-07)
|
||||
bones/36/enabled = true
|
||||
bones/36/position = Vector3(-4.22876e-05, 50.3137, 3.33394e-05)
|
||||
bones/36/rotation = Quaternion(-0.158577, 0.389562, 0.246324, 0.873166)
|
||||
bones/36/rotation = Quaternion(-0.163969, 0.394819, 0.244212, 0.870398)
|
||||
bones/36/scale = Vector3(1, 1, 1)
|
||||
bones/37/name = "mixamorig_RightHandMiddle1"
|
||||
bones/37/parent = 36
|
||||
bones/37/rest = Transform3D(1, -3.32064e-08, 3.32062e-08, 3.32064e-08, 1, 1.33872e-15, -3.32062e-08, -2.36065e-16, 1, -2.4214e-05, 26.0656, -2.98921e-05)
|
||||
bones/37/enabled = true
|
||||
bones/37/position = Vector3(-1.0388e-05, 26.0655, -3.3759e-05)
|
||||
bones/37/rotation = Quaternion(0.429872, 0.000404542, 0.0693553, 0.900222)
|
||||
bones/37/rotation = Quaternion(0.430941, 0.000423647, 0.0693873, 0.899708)
|
||||
bones/37/scale = Vector3(1, 1, 1)
|
||||
bones/38/name = "mixamorig_RightHandMiddle2"
|
||||
bones/38/parent = 37
|
||||
@@ -610,21 +626,21 @@ bones/41/parent = 36
|
||||
bones/41/rest = Transform3D(0.894425, 0.447218, 2.23517e-07, -0.387301, 0.774593, -0.500004, -0.223611, 0.447216, 0.866023, 6.15705, 9.50198, 3.93002)
|
||||
bones/41/enabled = true
|
||||
bones/41/position = Vector3(6.15705, 9.50198, 3.93002)
|
||||
bones/41/rotation = Quaternion(0.34914, 0.0279037, -0.147904, 0.924904)
|
||||
bones/41/rotation = Quaternion(0.349264, 0.0275473, -0.150638, 0.924426)
|
||||
bones/41/scale = Vector3(1, 1, 1)
|
||||
bones/42/name = "mixamorig_RightHandThumb2"
|
||||
bones/42/parent = 41
|
||||
bones/42/rest = Transform3D(1, 2.42144e-07, -2.7209e-07, -2.42144e-07, 1, 2.7867e-08, 2.7209e-07, -2.78669e-08, 1, 8.58307e-06, 10.3491, 3.84108e-05)
|
||||
bones/42/enabled = true
|
||||
bones/42/position = Vector3(2.3246e-06, 10.3491, 1.36069e-05)
|
||||
bones/42/rotation = Quaternion(-0.112075, -0.187738, 0.21096, 0.952727)
|
||||
bones/42/rotation = Quaternion(-0.11155, -0.18871, 0.210432, 0.952714)
|
||||
bones/42/scale = Vector3(1, 1, 1)
|
||||
bones/43/name = "mixamorig_RightHandThumb3"
|
||||
bones/43/parent = 42
|
||||
bones/43/rest = Transform3D(1, 3.05473e-07, 8.19067e-07, -3.05475e-07, 1, 2.80118e-06, -8.19066e-07, -2.80118e-06, 1, -2.15769e-05, 8.57471, -0.000108002)
|
||||
bones/43/enabled = true
|
||||
bones/43/position = Vector3(-2.13981e-05, 8.57471, -6.78445e-05)
|
||||
bones/43/rotation = Quaternion(-0.272588, -0.0182208, 0.407744, 0.871268)
|
||||
bones/43/rotation = Quaternion(-0.273034, -0.0182039, 0.407636, 0.871179)
|
||||
bones/43/scale = Vector3(1, 1, 1)
|
||||
bones/44/name = "mixamorig_RightHandThumb4"
|
||||
bones/44/parent = 43
|
||||
@@ -638,7 +654,7 @@ bones/45/parent = 36
|
||||
bones/45/rest = Transform3D(1, -1.43051e-16, 4.79928e-10, 1.43051e-16, 1, 1.10797e-16, -4.79928e-10, -1.10797e-16, 1, 5.10661, 26.6031, 0.546357)
|
||||
bones/45/enabled = true
|
||||
bones/45/position = Vector3(5.10665, 26.6031, 0.546355)
|
||||
bones/45/rotation = Quaternion(0.108986, 0.00643, -0.0153005, 0.993905)
|
||||
bones/45/rotation = Quaternion(0.108688, 0.00642474, -0.0154604, 0.993935)
|
||||
bones/45/scale = Vector3(1, 1, 1)
|
||||
bones/46/name = "mixamorig_RightHandIndex2"
|
||||
bones/46/parent = 45
|
||||
@@ -673,14 +689,14 @@ bones/50/parent = 49
|
||||
bones/50/rest = Transform3D(1, -4.956e-09, -2.68422e-09, 4.95601e-09, 1, 4.46457e-06, 2.68419e-09, -4.46457e-06, 1, 2.38981e-06, 6.85748, 1.26784e-06)
|
||||
bones/50/enabled = true
|
||||
bones/50/position = Vector3(2.40837e-05, 6.85748, 6.28673e-06)
|
||||
bones/50/rotation = Quaternion(0.762352, 1.82162e-07, 0.0620213, 0.644184)
|
||||
bones/50/rotation = Quaternion(0.762141, 1.57438e-07, 0.0620041, 0.644435)
|
||||
bones/50/scale = Vector3(1, 1, 1)
|
||||
bones/51/name = "mixamorig_RightHandRing3"
|
||||
bones/51/parent = 50
|
||||
bones/51/rest = Transform3D(1, -2.03137e-07, 2.03137e-07, 2.03138e-07, 1, -4.46457e-06, -2.03136e-07, 4.46457e-06, 1, 2.34412e-05, 6.83549, 2.72178e-05)
|
||||
bones/51/enabled = true
|
||||
bones/51/position = Vector3(3.05916e-05, 6.8355, 3.4144e-05)
|
||||
bones/51/rotation = Quaternion(0.425904, -1.16653e-09, 0.0346494, 0.904105)
|
||||
bones/51/rotation = Quaternion(0.425588, 4.01725e-08, 0.0346237, 0.904254)
|
||||
bones/51/scale = Vector3(1, 1, 1)
|
||||
bones/52/name = "mixamorig_RightHandRing4"
|
||||
bones/52/parent = 51
|
||||
@@ -722,21 +738,21 @@ bones/57/parent = 0
|
||||
bones/57/rest = Transform3D(-0.999989, -0.00476803, -9.59866e-07, 0.0047673, -0.999832, -0.0177226, 8.35421e-05, -0.0177224, 0.999843, 18.5244, -13.8385, 2.66202)
|
||||
bones/57/enabled = true
|
||||
bones/57/position = Vector3(18.5244, -13.8385, 2.66202)
|
||||
bones/57/rotation = Quaternion(0.395484, 0.0621892, 0.905082, -0.143361)
|
||||
bones/57/rotation = Quaternion(0.397643, 0.0598779, 0.904218, -0.143821)
|
||||
bones/57/scale = Vector3(1, 1, 1)
|
||||
bones/58/name = "mixamorig_LeftLeg"
|
||||
bones/58/parent = 57
|
||||
bones/58/rest = Transform3D(0.99995, -0.0100314, -0.000204796, 0.010031, 0.999049, 0.0424205, -0.000220934, -0.0424205, 0.9991, 1.7493e-06, 85.2457, -8.76553e-08)
|
||||
bones/58/enabled = true
|
||||
bones/58/position = Vector3(-9.96835e-07, 85.2457, -8.22109e-07)
|
||||
bones/58/rotation = Quaternion(-0.204508, -0.00657131, -0.000334105, 0.978843)
|
||||
bones/58/rotation = Quaternion(-0.19935, -0.00148469, -0.00250753, 0.979924)
|
||||
bones/58/scale = Vector3(1, 1, 1)
|
||||
bones/59/name = "mixamorig_LeftFoot"
|
||||
bones/59/parent = 58
|
||||
bones/59/rest = Transform3D(0.996813, -0.079665, -0.00415444, 0.0457001, 0.61296, -0.788791, 0.0653856, 0.786088, 0.614647, -1.80688e-06, 85.5711, -6.67515e-07)
|
||||
bones/59/enabled = true
|
||||
bones/59/position = Vector3(1.32316e-06, 85.5711, -8.44399e-06)
|
||||
bones/59/rotation = Quaternion(0.412717, -0.0379548, 0.0173465, 0.909903)
|
||||
bones/59/rotation = Quaternion(0.411364, -0.0414975, 0.0186893, 0.910334)
|
||||
bones/59/scale = Vector3(1, 1, 1)
|
||||
bones/60/name = "mixamorig_LeftToeBase"
|
||||
bones/60/parent = 59
|
||||
@@ -757,28 +773,28 @@ bones/62/parent = 0
|
||||
bones/62/rest = Transform3D(-0.999979, 0.00647552, 1.74921e-06, -0.00647505, -0.999909, 0.0118216, 7.82998e-05, 0.0118213, 0.99993, -18.4403, -14.4117, 0.16034)
|
||||
bones/62/enabled = true
|
||||
bones/62/position = Vector3(-18.4403, -14.4117, 0.16034)
|
||||
bones/62/rotation = Quaternion(0.0471555, -0.0284774, 0.997446, 0.0454587)
|
||||
bones/62/rotation = Quaternion(0.04734, -0.0316465, 0.997339, 0.0455322)
|
||||
bones/62/scale = Vector3(1, 1, 1)
|
||||
bones/63/name = "mixamorig_RightLeg"
|
||||
bones/63/parent = 62
|
||||
bones/63/rest = Transform3D(0.99991, 0.0134119, 0.000468956, -0.0134107, 0.997302, 0.0721754, 0.000500317, -0.0721752, 0.997392, 2.27134e-06, 84.8197, -1.21319e-07)
|
||||
bones/63/enabled = true
|
||||
bones/63/position = Vector3(2.27134e-06, 84.8197, -1.21319e-07)
|
||||
bones/63/rotation = Quaternion(-0.30181, 0.00582681, 0.00204828, 0.953348)
|
||||
bones/63/rotation = Quaternion(-0.295329, 0.0109313, 0.00223221, 0.95533)
|
||||
bones/63/scale = Vector3(1, 1, 1)
|
||||
bones/64/name = "mixamorig_RightFoot"
|
||||
bones/64/parent = 63
|
||||
bones/64/rest = Transform3D(0.995798, 0.0914117, 0.00552216, -0.0511929, 0.605643, -0.794088, -0.0759334, 0.790468, 0.607777, 2.32039e-06, 85.4194, 9.07708e-08)
|
||||
bones/64/enabled = true
|
||||
bones/64/position = Vector3(3.58406e-06, 85.4194, -2.00182e-06)
|
||||
bones/64/rotation = Quaternion(0.58465, 0.186011, -0.0323875, 0.789009)
|
||||
bones/64/rotation = Quaternion(0.583469, 0.181129, -0.0304388, 0.791094)
|
||||
bones/64/scale = Vector3(1, 1, 1)
|
||||
bones/65/name = "mixamorig_RightToeBase"
|
||||
bones/65/parent = 64
|
||||
bones/65/rest = Transform3D(0.995727, 0.06712, 0.0634238, -0.00856839, 0.751, -0.660247, -0.091947, 0.656882, 0.748366, -2.98023e-07, 32.9812, 1.88937e-06)
|
||||
bones/65/enabled = true
|
||||
bones/65/position = Vector3(-2.98023e-07, 32.9812, 1.88937e-06)
|
||||
bones/65/rotation = Quaternion(0.351882, 0.0415085, -0.0202458, 0.934904)
|
||||
bones/65/rotation = Quaternion(0.352468, 0.0415776, -0.020241, 0.934681)
|
||||
bones/65/scale = Vector3(1, 1, 1)
|
||||
bones/66/name = "mixamorig_RightToe_End"
|
||||
bones/66/parent = 65
|
||||
@@ -818,6 +834,16 @@ skin = SubResource("Skin_unkc0")
|
||||
mesh = ExtResource("7_skjds")
|
||||
skin = SubResource("Skin_unkc0")
|
||||
|
||||
[node name="Hand" type="BoneAttachment3D" parent="Armature/Skeleton3D"]
|
||||
transform = Transform3D(-0.101809, 0.0274908, 0.994424, -0.100283, 0.994242, -0.0377525, -0.989736, -0.103568, -0.0984655, -33.2805, 32.3409, -274.352)
|
||||
bone_name = "mixamorig_RightHand"
|
||||
bone_idx = 36
|
||||
|
||||
[node name="Pencil Case" type="MeshInstance3D" parent="Armature/Skeleton3D/Hand"]
|
||||
transform = Transform3D(9.99555, 15.6762, -299.423, -7.80417, 299.502, 15.4192, 299.732, 7.27518, 10.3868, 14.9476, 66.4479, 12.5163)
|
||||
mesh = SubResource("CylinderMesh_spot0")
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"Shooter_Pack": ExtResource("17_0rhm1")
|
||||
|
||||
224
godot/Scenes/Characters/remy_fpv.tscn
Normal file
224
godot/Scenes/Characters/remy_fpv.tscn
Normal file
@@ -0,0 +1,224 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://cwbg6ekri5onf"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4xaty"]
|
||||
albedo_color = Color(0, 0.4, 1, 1)
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_iro55"]
|
||||
material = SubResource("StandardMaterial3D_4xaty")
|
||||
top_radius = 0.05
|
||||
bottom_radius = 0.05
|
||||
height = 0.2
|
||||
|
||||
[sub_resource type="Skin" id="Skin_cysku"]
|
||||
resource_name = "Skin"
|
||||
bind_count = 67
|
||||
bind/0/name = &"mixamorig_Hips"
|
||||
bind/0/bone = -1
|
||||
bind/0/pose = Transform3D(100, 0, 0, 0, 100, 4.37114e-06, 0, -4.37114e-06, 100, 0.0419201, -209.151, 1.41641)
|
||||
bind/1/name = &"mixamorig_Spine"
|
||||
bind/1/bone = -1
|
||||
bind/1/pose = Transform3D(99.9934, 1.15074, 4.26326e-08, -1.14498, 99.4929, -9.99272, -0.11499, 9.99206, 99.4995, -2.39798, -228.327, -17.5981)
|
||||
bind/2/name = &"mixamorig_Spine1"
|
||||
bind/2/bone = -1
|
||||
bind/2/pose = Transform3D(99.9992, 0.392417, 6.03961e-08, -0.392055, 99.907, -4.29468, -0.0168531, 4.29465, 99.9077, -0.483516, -252.552, -3.18282)
|
||||
bind/3/name = &"mixamorig_Spine2"
|
||||
bind/3/bone = -1
|
||||
bind/3/pose = Transform3D(99.983, -1.84448, 5.68434e-08, 1.83111, 99.258, 12.0204, -0.221714, -12.0184, 99.2749, 5.78559, -277.107, 42.4792)
|
||||
bind/4/name = &"mixamorig_Neck"
|
||||
bind/4/bone = -1
|
||||
bind/4/pose = Transform3D(99.8904, -4.68136, 0, 4.49289, 95.8689, 28.0886, -1.31493, -28.0578, 95.9741, 14.6175, -297.03, 92.2453)
|
||||
bind/5/name = &"mixamorig_Head"
|
||||
bind/5/bone = -1
|
||||
bind/5/pose = Transform3D(99.8904, -4.68136, 1.13687e-07, 4.49289, 95.8689, 28.0886, -1.31493, -28.0578, 95.9741, 14.6175, -320.219, 92.2453)
|
||||
bind/6/name = &"mixamorig_HeadTop_End"
|
||||
bind/6/bone = -1
|
||||
bind/6/pose = Transform3D(99.8904, -4.68135, 4.54747e-07, 4.49289, 95.8689, 28.0886, -1.31493, -28.0578, 95.9741, 16.2573, -359.996, 92.6064)
|
||||
bind/7/name = &"mixamorig_RightEye"
|
||||
bind/7/bone = -1
|
||||
bind/7/pose = Transform3D(99.8904, -4.68136, 1.13687e-07, 4.49289, 95.8689, 28.0886, -1.31493, -28.0578, 95.9741, 21.4989, -340.362, 80.9932)
|
||||
bind/8/name = &"mixamorig_LeftEye"
|
||||
bind/8/bone = -1
|
||||
bind/8/pose = Transform3D(99.8904, -4.68135, 6.82121e-07, 4.49289, 95.8689, 28.0886, -1.31493, -28.0578, 95.9741, 9.3221, -341.245, 80.9355)
|
||||
bind/9/name = &"mixamorig_LeftShoulder"
|
||||
bind/9/bone = -1
|
||||
bind/9/pose = Transform3D(-15.2443, -0.449328, -98.8302, 98.7873, 2.9119, -15.2509, 2.94636, -99.9566, -1.79057e-05, -2.88629, -21.8424, 298.665)
|
||||
bind/10/name = &"mixamorig_LeftArm"
|
||||
bind/10/bone = -1
|
||||
bind/10/pose = Transform3D(4.12623e-05, 2.54824e-06, -100, 100, -5.83008e-05, 4.52544e-05, -5.51343e-05, -100, -4.91009e-07, -10.2379, -38.5985, 299.932)
|
||||
bind/11/name = &"mixamorig_LeftForeArm"
|
||||
bind/11/bone = -1
|
||||
bind/11/pose = Transform3D(4.33707e-05, 4.42927e-06, -100, 100, -6.09941e-05, 4.73628e-05, -5.78276e-05, -100, -2.37204e-06, -10.2379, -93.7262, 299.932)
|
||||
bind/12/name = &"mixamorig_LeftHand"
|
||||
bind/12/bone = -1
|
||||
bind/12/pose = Transform3D(3.5985e-05, -2.95641e-06, -100, 100, -3.16651e-06, 3.99771e-05, 2.30722e-12, -100, 5.01367e-06, -10.2379, -146.5, 299.932)
|
||||
bind/13/name = &"mixamorig_LeftHandMiddle1"
|
||||
bind/13/bone = -1
|
||||
bind/13/pose = Transform3D(4.1275e-05, 2.33357e-06, -100, 100, -3.16651e-06, 4.52671e-05, 4.49066e-12, -100, -2.76313e-07, -10.2379, -174.244, 299.932)
|
||||
bind/14/name = &"mixamorig_LeftHandMiddle2"
|
||||
bind/14/bone = -1
|
||||
bind/14/pose = Transform3D(4.19282e-05, 2.98677e-06, -100, 100, -0.000450401, 4.59203e-05, -0.000447234, -100, -9.29715e-07, -10.2379, -181.175, 299.933)
|
||||
bind/15/name = &"mixamorig_LeftHandMiddle3"
|
||||
bind/15/bone = -1
|
||||
bind/15/pose = Transform3D(3.87006e-05, -2.4079e-07, -100, 100, -3.1665e-06, 4.26927e-05, -2.58102e-12, -100, 2.29805e-06, -10.2379, -188, 299.932)
|
||||
bind/16/name = &"mixamorig_LeftHandMiddle4"
|
||||
bind/16/bone = -1
|
||||
bind/16/pose = Transform3D(3.87007e-05, -2.4079e-07, -100, 100, -3.1665e-06, 4.26928e-05, -2.58102e-12, -100, 2.29805e-06, -10.238, -195.392, 299.932)
|
||||
bind/17/name = &"mixamorig_LeftHandThumb1"
|
||||
bind/17/bone = -1
|
||||
bind/17/pose = Transform3D(38.73, -22.3607, -89.4426, 77.4596, -44.7213, 44.7215, -49.9999, -86.6026, -5.63887e-05, 1.60829, 12.405, 335.71)
|
||||
bind/18/name = &"mixamorig_LeftHandThumb2"
|
||||
bind/18/bone = -1
|
||||
bind/18/pose = Transform3D(38.7299, -22.3607, -89.4427, 77.4597, -44.7213, 44.7215, -50, -86.6026, 3.09228e-05, 1.60861, 1.18065, 335.71)
|
||||
bind/19/name = &"mixamorig_LeftHandThumb3"
|
||||
bind/19/bone = -1
|
||||
bind/19/pose = Transform3D(38.7299, -22.3608, -89.4427, 77.4597, -44.7212, 44.7215, -49.9999, -86.6026, 0.000112777, 1.60875, -7.77524, 335.71)
|
||||
bind/20/name = &"mixamorig_LeftHandThumb4"
|
||||
bind/20/bone = -1
|
||||
bind/20/pose = Transform3D(38.7299, -22.3608, -89.4427, 77.4597, -44.7212, 44.7215, -49.9999, -86.6026, 9.09495e-05, 1.60865, -13.5698, 335.71)
|
||||
bind/21/name = &"mixamorig_LeftHandIndex1"
|
||||
bind/21/bone = -1
|
||||
bind/21/pose = Transform3D(4.27364e-05, 1.56652e-06, -100, 100, -3.16651e-06, 4.67285e-05, 4.24015e-12, -100, 4.90744e-07, -5.08588, -174.99, 299.478)
|
||||
bind/22/name = &"mixamorig_LeftHandIndex2"
|
||||
bind/22/bone = -1
|
||||
bind/22/pose = Transform3D(4.40478e-05, 5.10635e-06, -100, 100, -3.16651e-06, 4.80399e-05, 5.79937e-12, -100, -3.04909e-06, -5.0859, -182.053, 299.478)
|
||||
bind/23/name = &"mixamorig_LeftHandIndex3"
|
||||
bind/23/bone = -1
|
||||
bind/23/pose = Transform3D(4.33923e-05, 4.4509e-06, -100, 100, -3.16651e-06, 4.73844e-05, 5.51495e-12, -100, -2.39364e-06, -5.08587, -188.548, 299.478)
|
||||
bind/24/name = &"mixamorig_LeftHandIndex4"
|
||||
bind/24/bone = -1
|
||||
bind/24/pose = Transform3D(4.33923e-05, 4.4509e-06, -100, 100, -3.16651e-06, 4.73844e-05, 5.51495e-12, -100, -2.39364e-06, -5.08584, -195.142, 299.478)
|
||||
bind/25/name = &"mixamorig_LeftHandRing1"
|
||||
bind/25/bone = -1
|
||||
bind/25/pose = Transform3D(4.35421e-05, 6.40099e-06, -100, 100, -3.16651e-06, 4.75342e-05, 6.38163e-12, -100, -4.34373e-06, -14.479, -171.984, 300.012)
|
||||
bind/26/name = &"mixamorig_LeftHandRing2"
|
||||
bind/26/bone = -1
|
||||
bind/26/pose = Transform3D(4.49878e-05, 6.04632e-06, -100, 100, -3.16651e-06, 4.89799e-05, 6.22207e-12, -100, -3.98906e-06, -14.4789, -178.294, 300.012)
|
||||
bind/27/name = &"mixamorig_LeftHandRing3"
|
||||
bind/27/bone = -1
|
||||
bind/27/pose = Transform3D(-0.000108406, -0.000147347, -100, 100, -3.1665e-06, -0.000104414, 1.66702e-10, -100, 0.000149405, -14.4782, -184.653, 300.012)
|
||||
bind/28/name = &"mixamorig_LeftHandRing4"
|
||||
bind/28/bone = -1
|
||||
bind/28/pose = Transform3D(4.06522e-05, 1.71072e-06, -100, 100, -3.16659e-06, 4.46443e-05, -8.28545e-11, -100, 3.46547e-07, -14.4789, -191.691, 300.011)
|
||||
bind/29/name = &"mixamorig_LeftHandPinky1"
|
||||
bind/29/bone = -1
|
||||
bind/29/pose = Transform3D(2.13955e-05, -9.76242e-06, -100, 100, -3.16651e-06, 2.53876e-05, 8.51037e-13, -100, 1.18197e-05, -19.0188, -168.406, 299.491)
|
||||
bind/30/name = &"mixamorig_LeftHandPinky2"
|
||||
bind/30/bone = -1
|
||||
bind/30/pose = Transform3D(0.000229854, 0.000190912, -100, 100, -0.000738696, 0.000233845, -0.000735529, -100, -0.000188856, -19.0198, -174.94, 299.493)
|
||||
bind/31/name = &"mixamorig_LeftHandPinky3"
|
||||
bind/31/bone = -1
|
||||
bind/31/pose = Transform3D(3.4283e-05, -4.65839e-06, -100, 100, -3.16654e-06, 3.82751e-05, -3.8009e-12, -100, 6.71569e-06, -19.0188, -179.091, 299.491)
|
||||
bind/32/name = &"mixamorig_LeftHandPinky4"
|
||||
bind/32/bone = -1
|
||||
bind/32/pose = Transform3D(3.4283e-05, -4.65842e-06, -100, 100, -3.16654e-06, 3.82751e-05, -3.80091e-12, -100, 6.71572e-06, -19.0188, -184.655, 299.491)
|
||||
bind/33/name = &"mixamorig_RightShoulder"
|
||||
bind/33/bone = -1
|
||||
bind/33/pose = Transform3D(-20.1629, 0.35292, 97.9456, -97.9306, 1.71404, -20.166, -1.74999, -99.9847, 1.80194e-05, 2.8144, -19.4598, 299.201)
|
||||
bind/34/name = &"mixamorig_RightArm"
|
||||
bind/34/bone = -1
|
||||
bind/34/pose = Transform3D(8.68049e-05, -1.24537e-05, 100, -100, -1.86276e-07, 8.8915e-05, -3.72535e-07, -100, -1.15962e-05, 12.104, -39.589, 299.94)
|
||||
bind/35/name = &"mixamorig_RightForeArm"
|
||||
bind/35/bone = -1
|
||||
bind/35/pose = Transform3D(7.96092e-05, -4.90495e-06, 100, -100, -5.58804e-07, 8.17193e-05, 2.57644e-13, -100, -4.0475e-06, 12.104, -95.4317, 299.94)
|
||||
bind/36/name = &"mixamorig_RightHand"
|
||||
bind/36/bone = -1
|
||||
bind/36/pose = Transform3D(8.07296e-05, -6.02537e-06, 100, -100, -5.58804e-07, 8.28397e-05, -6.43239e-13, -100, -5.16792e-06, 12.1041, -145.745, 299.94)
|
||||
bind/37/name = &"mixamorig_RightHandMiddle1"
|
||||
bind/37/bone = -1
|
||||
bind/37/pose = Transform3D(7.74089e-05, -2.70475e-06, 100, -100, -5.58804e-07, 7.95191e-05, 1.92722e-12, -100, -1.8473e-06, 12.1041, -171.811, 299.94)
|
||||
bind/38/name = &"mixamorig_RightHandMiddle2"
|
||||
bind/38/bone = -1
|
||||
bind/38/pose = Transform3D(7.86091e-05, -3.90488e-06, 100, -100, -5.58804e-07, 8.07192e-05, 1.04055e-12, -100, -3.04743e-06, 12.1041, -177.971, 299.94)
|
||||
bind/39/name = &"mixamorig_RightHandMiddle3"
|
||||
bind/39/bone = -1
|
||||
bind/39/pose = Transform3D(7.67034e-05, -1.9992e-06, 100, -100, -5.58804e-07, 7.88136e-05, 2.47705e-12, -100, -1.14175e-06, 12.104, -185.25, 299.94)
|
||||
bind/40/name = &"mixamorig_RightHandMiddle4"
|
||||
bind/40/bone = -1
|
||||
bind/40/pose = Transform3D(7.67034e-05, -1.9992e-06, 100, -100, -5.58804e-07, 7.88136e-05, 2.47705e-12, -100, -1.14175e-06, 12.1041, -192.71, 299.94)
|
||||
bind/41/name = &"mixamorig_RightHandThumb1"
|
||||
bind/41/bone = -1
|
||||
bind/41/pose = Transform3D(38.7301, 22.3611, 89.4425, -77.4593, -44.7216, 44.7218, 50.0004, -86.6023, -2.00089e-05, -0.744326, 14.7863, 333.975)
|
||||
bind/42/name = &"mixamorig_RightHandThumb2"
|
||||
bind/42/bone = -1
|
||||
bind/42/pose = Transform3D(38.7302, 22.3611, 89.4425, -77.4593, -44.7216, 44.7218, 50.0004, -86.6023, -4.72937e-05, -0.744248, 4.43724, 333.976)
|
||||
bind/43/name = &"mixamorig_RightHandThumb3"
|
||||
bind/43/bone = -1
|
||||
bind/43/pose = Transform3D(38.7302, 22.3611, 89.4425, -77.4594, -44.7214, 44.7219, 50.0002, -86.6024, 0.000150976, -0.744501, -4.13842, 333.976)
|
||||
bind/44/name = &"mixamorig_RightHandThumb4"
|
||||
bind/44/bone = -1
|
||||
bind/44/pose = Transform3D(38.73, 22.3612, 89.4426, -77.4592, -44.7218, 44.7217, 50.0006, -86.6022, 5.82077e-05, -0.744883, -10.2759, 333.976)
|
||||
bind/45/name = &"mixamorig_RightHandIndex1"
|
||||
bind/45/bone = -1
|
||||
bind/45/pose = Transform3D(8.07296e-05, -5.97738e-06, 100, -100, -5.58804e-07, 8.28397e-05, -6.04494e-13, -100, -5.11993e-06, 6.99748, -172.348, 299.393)
|
||||
bind/46/name = &"mixamorig_RightHandIndex2"
|
||||
bind/46/bone = -1
|
||||
bind/46/pose = Transform3D(7.71745e-05, -2.47024e-06, 100, -100, -5.58804e-07, 7.92846e-05, 2.12874e-12, -100, -1.61279e-06, 6.99749, -179.441, 299.393)
|
||||
bind/47/name = &"mixamorig_RightHandIndex3"
|
||||
bind/47/bone = -1
|
||||
bind/47/pose = Transform3D(7.77097e-05, -3.00546e-06, 100, -100, -5.58804e-07, 7.98198e-05, 1.72759e-12, -100, -2.14801e-06, 6.99748, -186.855, 299.393)
|
||||
bind/48/name = &"mixamorig_RightHandIndex4"
|
||||
bind/48/bone = -1
|
||||
bind/48/pose = Transform3D(7.77097e-05, -3.00546e-06, 100, -100, -5.58804e-07, 7.98198e-05, 1.72759e-12, -100, -2.14801e-06, 6.99744, -192.378, 299.393)
|
||||
bind/49/name = &"mixamorig_RightHandRing1"
|
||||
bind/49/bone = -1
|
||||
bind/49/pose = Transform3D(8.42064e-05, -8.73814e-06, 100, -100, -5.58805e-07, 8.63165e-05, -2.92757e-12, -100, -7.88069e-06, 16.0881, -169.833, 299.941)
|
||||
bind/50/name = &"mixamorig_RightHandRing2"
|
||||
bind/50/bone = -1
|
||||
bind/50/pose = Transform3D(8.37108e-05, -9.00656e-06, 100, -100, 0.000445899, 8.58209e-05, -0.000446457, -100, -8.14873e-06, 16.0881, -176.691, 299.94)
|
||||
bind/51/name = &"mixamorig_RightHandRing3"
|
||||
bind/51/bone = -1
|
||||
bind/51/pose = Transform3D(6.33971e-05, 1.13072e-05, 100, -100, -5.58695e-07, 6.55072e-05, -3.49916e-11, -100, 1.21646e-05, 16.088, -183.526, 299.941)
|
||||
bind/52/name = &"mixamorig_RightHandRing4"
|
||||
bind/52/bone = -1
|
||||
bind/52/pose = Transform3D(0.000253585, -0.000178882, 100, -100, 0.000506614, 0.000255696, -0.000507173, -100, -0.000178023, 16.0889, -189.544, 299.94)
|
||||
bind/53/name = &"mixamorig_RightHandPinky1"
|
||||
bind/53/bone = -1
|
||||
bind/53/pose = Transform3D(6.46733e-05, 1.04791e-05, 100, -100, -5.58803e-07, 6.67834e-05, 1.00308e-11, -100, 1.13366e-05, 20.6451, -166.735, 299.442)
|
||||
bind/54/name = &"mixamorig_RightHandPinky2"
|
||||
bind/54/bone = -1
|
||||
bind/54/pose = Transform3D(0.000101329, -2.66244e-05, 100, -100, -5.58805e-07, 0.000103439, -2.16801e-11, -100, -2.5767e-05, 20.6453, -172.674, 299.442)
|
||||
bind/55/name = &"mixamorig_RightHandPinky3"
|
||||
bind/55/bone = -1
|
||||
bind/55/pose = Transform3D(8.98217e-05, -1.51174e-05, 100, -100, -5.58805e-07, 9.19318e-05, -8.88232e-12, -100, -1.426e-05, 20.6452, -176.439, 299.442)
|
||||
bind/56/name = &"mixamorig_RightHandPinky4"
|
||||
bind/56/bone = -1
|
||||
bind/56/pose = Transform3D(-8.98231e-05, 0.000164526, 100, -100, -0.000958654, -8.77114e-05, 0.000958095, -100, 0.000165384, 20.6444, -182.807, 299.444)
|
||||
bind/57/name = &"mixamorig_LeftUpLeg"
|
||||
bind/57/bone = -1
|
||||
bind/57/pose = Transform3D(-99.9989, 0.47673, 0.00835485, -0.476803, -99.9831, -1.77224, -9.66054e-05, -1.77226, 99.9843, 17.5511, 195.39, 2.21604)
|
||||
bind/58/name = &"mixamorig_LeftLeg"
|
||||
bind/58/bone = -1
|
||||
bind/58/pose = Transform3D(-99.9986, -0.525834, -0.0315128, 0.526778, -99.8177, -6.01202, 0.000156614, -6.0121, 99.8191, 18.6545, 109.769, 6.88281)
|
||||
bind/59/name = &"mixamorig_LeftFoot"
|
||||
bind/59/bone = -1
|
||||
bind/59/pose = Transform3D(-99.6558, -5.47894, 6.22056, 8.2894, -65.8684, 74.7839, 1.77351e-05, 75.0422, 66.0959, 20.151, 18.7568, -14.9342)
|
||||
bind/60/name = &"mixamorig_LeftToeBase"
|
||||
bind/60/bone = -1
|
||||
bind/60/pose = Transform3D(-99.9851, -0.0227067, -1.72832, -1.72847, 1.31393, 99.9764, 8.68106e-06, 99.9914, -1.31411, 21.5432, -18.5528, -3.02252)
|
||||
bind/61/name = &"mixamorig_LeftToe_End"
|
||||
bind/61/bone = -1
|
||||
bind/61/pose = Transform3D(-99.9851, -0.022726, -1.72834, -1.72849, 1.31394, 99.9764, -1.00826e-05, 99.9914, -1.31412, 21.5432, -37.6176, -3.02251)
|
||||
bind/62/name = &"mixamorig_RightUpLeg"
|
||||
bind/62/bone = -1
|
||||
bind/62/pose = Transform3D(-99.9979, -0.647505, 0.00783087, 0.647552, -99.9909, 1.18213, 0.00017401, 1.18215, 99.993, -17.2208, 194.856, -1.04611)
|
||||
bind/63/name = &"mixamorig_RightLeg"
|
||||
bind/63/bone = -1
|
||||
bind/63/pose = Transform3D(-99.9976, 0.694097, 0.0420051, -0.695367, -99.8151, -6.03798, 1.62395e-05, -6.03812, 99.8175, -18.6954, 109.584, 6.89046)
|
||||
bind/64/name = &"mixamorig_RightFoot"
|
||||
bind/64/bone = -1
|
||||
bind/64/pose = Transform3D(-99.5418, 6.2595, -7.22856, -9.56208, -65.1618, 75.2496, -1.09139e-05, 75.596, 65.4618, -20.3771, 18.3728, -15.1041)
|
||||
bind/65/name = &"mixamorig_RightToeBase"
|
||||
bind/65/bone = -1
|
||||
bind/65/pose = Transform3D(-99.0345, -0.159739, -13.8615, -13.8624, 1.14128, 99.028, 1.17808e-05, 99.9934, -1.1524, -18.7761, -22.2602, -2.95062)
|
||||
bind/66/name = &"mixamorig_RightToe_End"
|
||||
bind/66/bone = -1
|
||||
bind/66/pose = Transform3D(-99.0345, -0.159767, -13.8615, -13.8624, 1.14127, 99.028, -1.58735e-05, 99.9934, -1.1524, -18.7761, -41.9626, -2.95062)
|
||||
|
||||
[node name="Arms" type="Node3D"]
|
||||
transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 0, 0, 0)
|
||||
|
||||
[node name="Pencil Case" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.98209, 0.177463, 0.0632861, 1.42223e-07, 0.335895, -0.941899, -0.18841, 0.92503, 0.32988, -0.376089, 1.33587, 0.356095)
|
||||
cast_shadow = 0
|
||||
mesh = SubResource("CylinderMesh_iro55")
|
||||
skin = SubResource("Skin_cysku")
|
||||
@@ -87,3 +87,5 @@ surface_material_override/0 = SubResource("StandardMaterial3D_pfpgv")
|
||||
shape = SubResource("ConcavePolygonShape3D_rit6o")
|
||||
|
||||
[node name="Players" type="Node" parent="."]
|
||||
|
||||
[node name="Entities" type="Node" parent="."]
|
||||
|
||||
20
godot/Scenes/Weapons/pen.tscn
Normal file
20
godot/Scenes/Weapons/pen.tscn
Normal file
@@ -0,0 +1,20 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c475s3klxqoej"]
|
||||
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Weapons/pen_base.res" id="1_clcko"]
|
||||
[ext_resource type="ArrayMesh" path="res://Assets/Models/Weapons/pen_lid.res" id="2_0u0nh"]
|
||||
|
||||
[node name="Stylo" type="Bullet"]
|
||||
transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, -7.45058e-09, 0)
|
||||
|
||||
[node name="Armature" type="Node3D" parent="."]
|
||||
transform = Transform3D(5, 0, 0, 0, 0.0178025, -4.99997, 0, 4.99997, 0.0178025, 0, 0, -0.0828303)
|
||||
|
||||
[node name="pen_base" type="MeshInstance3D" parent="Armature"]
|
||||
transform = Transform3D(0.140708, 0, 0, 0, -1.6822e-08, 0.140708, 0, -0.140708, -1.6822e-08, -1.12406e-11, 0.00809256, -4.84818e-06)
|
||||
mesh = ExtResource("1_clcko")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="pen_lid" type="MeshInstance3D" parent="Armature/pen_base"]
|
||||
transform = Transform3D(1.14449, 0, 0, 0, 1.14449, 0, 0, 0, 1.14449, 7.98797e-11, 5.07782e-10, -0.0671831)
|
||||
mesh = ExtResource("2_0u0nh")
|
||||
skeleton = NodePath("")
|
||||
@@ -57,3 +57,15 @@ escape={
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
shoot={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[layer_names]
|
||||
|
||||
3d_physics/layer_1="World"
|
||||
3d_physics/layer_2="No Team"
|
||||
3d_physics/layer_3="Team 1"
|
||||
3d_physics/layer_4="Team 2"
|
||||
|
||||
11
include/blitz/factory/PlayerFactory.h
Normal file
11
include/blitz/factory/PlayerFactory.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <client/Player.h>
|
||||
|
||||
namespace blitz {
|
||||
namespace PlayerFactory {
|
||||
|
||||
Player* CreateStudent();
|
||||
|
||||
} // namespace PlayerFactory
|
||||
} // namespace blitz
|
||||
11
include/blitz/factory/ProjectileFactory.h
Normal file
11
include/blitz/factory/ProjectileFactory.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <client/Bullet.h>
|
||||
|
||||
namespace blitz {
|
||||
namespace ProjectileFactory {
|
||||
|
||||
Bullet* CreatePen();
|
||||
|
||||
} // namespace ProjectileFactory
|
||||
} // namespace blitz
|
||||
@@ -25,13 +25,15 @@ class World : public godot::Node3D, public protocol::PacketHandler {
|
||||
|
||||
void HandlePacket(const protocol::packets::PlayerJoin&) override;
|
||||
void HandlePacket(const protocol::packets::PlayerLeave&) override;
|
||||
void HandlePacket(const protocol::packets::PlayerShoot&) override;
|
||||
|
||||
protected:
|
||||
NetworkInterface* m_NetworkInterface;
|
||||
godot::Node* m_Players;
|
||||
float m_PassedTime;
|
||||
|
||||
|
||||
virtual void AddProjectile(
|
||||
PlayerID a_Shooter, const godot::Vector3& a_Position, const godot::Vector3& a_Rotation, const godot::Vector3& a_Velocity);
|
||||
virtual void AddPlayer(PlayerID a_PlayerId, godot::String a_PlayerName);
|
||||
virtual void RemovePlayer(PlayerID a_PlayerId);
|
||||
virtual void SetPlayerPositionAndRotation(
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include <blitz/common/Types.h>
|
||||
#include <vector>
|
||||
#include <godot_cpp/variant/string.hpp>
|
||||
#include <godot_cpp/variant/vector3.hpp>
|
||||
#include <vector>
|
||||
|
||||
namespace blitz {
|
||||
namespace protocol {
|
||||
@@ -66,7 +66,12 @@ struct PlayerPositionAndRotation {
|
||||
godot::Vector3 m_Velocity;
|
||||
};
|
||||
|
||||
struct PlayerShoot {};
|
||||
struct PlayerShoot {
|
||||
PlayerID m_Sender;
|
||||
godot::Vector3 m_Position;
|
||||
godot::Vector3 m_Rotation;
|
||||
godot::Vector3 m_Velocity;
|
||||
};
|
||||
|
||||
} // namespace data
|
||||
} // namespace protocol
|
||||
|
||||
25
include/client/Bullet.h
Normal file
25
include/client/Bullet.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include <godot_cpp/classes/node3d.hpp>
|
||||
#include <godot_cpp/classes/ray_cast3d.hpp>
|
||||
|
||||
namespace blitz {
|
||||
|
||||
class Bullet : public godot::Node3D {
|
||||
GDCLASS(Bullet, godot::Node3D)
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
Bullet();
|
||||
~Bullet();
|
||||
void _process(float delta);
|
||||
void _ready() override;
|
||||
|
||||
private:
|
||||
bool m_Stuck;
|
||||
|
||||
void Destroy();
|
||||
};
|
||||
|
||||
} // namespace blitz
|
||||
@@ -1,17 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include <blitz/common/Types.h>
|
||||
#include <godot_cpp/classes/animation_tree.hpp>
|
||||
#include <godot_cpp/classes/character_body3d.hpp>
|
||||
#include <godot_cpp/classes/node3d.hpp>
|
||||
#include <blitz/common/Types.h>
|
||||
|
||||
namespace blitz {
|
||||
|
||||
class World;
|
||||
class PlayerController;
|
||||
|
||||
class Player : public godot::Node {
|
||||
class Player : public godot::CharacterBody3D {
|
||||
|
||||
GDCLASS(Player, godot::Node);
|
||||
GDCLASS(Player, godot::CharacterBody3D);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
@@ -39,9 +40,7 @@ class Player : public godot::Node {
|
||||
|
||||
protected:
|
||||
godot::Node3D* m_Mesh;
|
||||
godot::Node3D* m_Head;
|
||||
godot::AnimationTree* m_AnimationTree;
|
||||
godot::CharacterBody3D* m_Player;
|
||||
|
||||
godot::Vector3 m_SnapVector;
|
||||
PeerID m_PeerId;
|
||||
@@ -51,5 +50,6 @@ class Player : public godot::Node {
|
||||
void BlendAnimation(const godot::String& a_AnimationName, float a_Goal, float a_Delta);
|
||||
|
||||
friend class World;
|
||||
friend class PlayerController;
|
||||
};
|
||||
} // namespace blitz
|
||||
|
||||
@@ -5,29 +5,35 @@
|
||||
|
||||
namespace blitz {
|
||||
|
||||
class FirstPersonPlayer : public Player {
|
||||
GDCLASS(FirstPersonPlayer, godot::Node)
|
||||
class NetworkInterface;
|
||||
|
||||
class PlayerController : public godot::Node {
|
||||
GDCLASS(PlayerController, godot::Node)
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
FirstPersonPlayer();
|
||||
~FirstPersonPlayer();
|
||||
PlayerController();
|
||||
~PlayerController();
|
||||
|
||||
// Godot overrides
|
||||
void _unhandled_input(const godot::Ref<godot::InputEvent>&);
|
||||
void _physics_process(float delta) override;
|
||||
void _process(float delta);
|
||||
void _ready();
|
||||
|
||||
private:
|
||||
godot::Camera3D* m_Camera;
|
||||
float m_BobTime;
|
||||
float m_Speed;
|
||||
Player* m_Player;
|
||||
godot::Node3D* m_Head;
|
||||
NetworkInterface* m_NetworkInterface;
|
||||
|
||||
void UpdateBobbing(float delta);
|
||||
void UpdateFOV(float delta);
|
||||
void UpdateCamera(const godot::InputEventMouseMotion&);
|
||||
void UpdatePosition(float delta);
|
||||
void UpdateVelocity(float delta);
|
||||
void Shoot();
|
||||
};
|
||||
|
||||
} // namespace blitz
|
||||
17
src/blitz/factory/PlayerFactory.cpp
Normal file
17
src/blitz/factory/PlayerFactory.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <blitz/factory/PlayerFactory.h>
|
||||
|
||||
#include <godot_cpp/classes/packed_scene.hpp>
|
||||
#include <godot_cpp/classes/resource_loader.hpp>
|
||||
|
||||
namespace blitz {
|
||||
namespace PlayerFactory {
|
||||
|
||||
using namespace godot;
|
||||
|
||||
Player* CreateStudent() {
|
||||
Ref<PackedScene> scene = ResourceLoader::get_singleton()->load("res://Scenes/Characters/remy.tscn");
|
||||
return Object::cast_to<Player>(scene->instantiate());
|
||||
}
|
||||
|
||||
} // namespace PlayerFactory
|
||||
} // namespace blitz
|
||||
17
src/blitz/factory/ProjectileFactory.cpp
Normal file
17
src/blitz/factory/ProjectileFactory.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <blitz/factory/ProjectileFactory.h>
|
||||
|
||||
#include <godot_cpp/classes/packed_scene.hpp>
|
||||
#include <godot_cpp/classes/resource_loader.hpp>
|
||||
|
||||
namespace blitz {
|
||||
namespace ProjectileFactory {
|
||||
|
||||
using namespace godot;
|
||||
|
||||
Bullet* CreatePen() {
|
||||
Ref<PackedScene> bulletScene = ResourceLoader::get_singleton()->load("res://Scenes/Weapons/pen.tscn");
|
||||
return Object::cast_to<Bullet>(bulletScene->instantiate());
|
||||
}
|
||||
|
||||
} // namespace ProjectileFactory
|
||||
} // namespace blitz
|
||||
@@ -1,12 +1,12 @@
|
||||
#include <blitz/godot/World.h>
|
||||
|
||||
#include <blitz/factory/PlayerFactory.h>
|
||||
#include <blitz/factory/ProjectileFactory.h>
|
||||
#include <blitz/godot/NetworkInterface.h>
|
||||
#include <client/FirstPersonPlayer.h>
|
||||
#include <client/Player.h>
|
||||
#include <client/PlayerController.h>
|
||||
#include <godot_cpp/classes/engine.hpp>
|
||||
#include <godot_cpp/classes/multiplayer_api.hpp>
|
||||
#include <godot_cpp/classes/packed_scene.hpp>
|
||||
#include <godot_cpp/classes/resource_loader.hpp>
|
||||
#include <godot_cpp/variant/utility_functions.hpp>
|
||||
|
||||
|
||||
@@ -14,8 +14,6 @@ using namespace godot;
|
||||
|
||||
namespace blitz {
|
||||
|
||||
static const char PlayerScenePath[] = "res://Scenes/Characters/remy.tscn";
|
||||
|
||||
void World::_bind_methods() {}
|
||||
|
||||
void World::_ready() {
|
||||
@@ -31,6 +29,7 @@ void World::_ready() {
|
||||
m_NetworkInterface->RegisterHandler(protocol::PacketType::PlayerJoin, *this);
|
||||
m_NetworkInterface->RegisterHandler(protocol::PacketType::PlayerLeave, *this);
|
||||
m_NetworkInterface->RegisterHandler(protocol::PacketType::PlayerPositionAndRotation, *this);
|
||||
m_NetworkInterface->RegisterHandler(protocol::PacketType::PlayerShoot, *this);
|
||||
}
|
||||
|
||||
|
||||
@@ -63,30 +62,23 @@ void World::HandlePacket(const protocol::packets::PlayerLeave& a_PlayerLeave) {
|
||||
RemovePlayer(a_PlayerLeave.m_Data.m_PlayerId);
|
||||
}
|
||||
|
||||
void World::HandlePacket(const protocol::packets::PlayerShoot& a_PlayerShoot) {
|
||||
const protocol::data::PlayerShoot& playerShoot = a_PlayerShoot.m_Data;
|
||||
AddProjectile(playerShoot.m_Sender, playerShoot.m_Position, playerShoot.m_Rotation, playerShoot.m_Velocity);
|
||||
}
|
||||
|
||||
void World::AddPlayer(PlayerID a_PlayerId, String a_PlayerName) {
|
||||
UtilityFunctions::print("New Player with id : ", a_PlayerId, " and name ", a_PlayerName);
|
||||
|
||||
Player* player = PlayerFactory::CreateStudent();
|
||||
player->set_name(UtilityFunctions::var_to_str(a_PlayerId));
|
||||
player->m_PeerId = a_PlayerId;
|
||||
|
||||
m_Players->add_child(player);
|
||||
|
||||
if (a_PlayerId == get_multiplayer()->get_unique_id()) {
|
||||
Ref<PackedScene> serverScene = ResourceLoader::get_singleton()->load(PlayerScenePath);
|
||||
|
||||
Node* playerContent = serverScene->instantiate();
|
||||
|
||||
FirstPersonPlayer* player = memnew(FirstPersonPlayer);
|
||||
player->set_name(UtilityFunctions::var_to_str(a_PlayerId));
|
||||
player->m_PeerId = a_PlayerId;
|
||||
player->add_child(playerContent);
|
||||
|
||||
m_Players->add_child(player);
|
||||
} else {
|
||||
Ref<PackedScene> serverScene = ResourceLoader::get_singleton()->load(PlayerScenePath);
|
||||
|
||||
Node* playerContent = serverScene->instantiate();
|
||||
|
||||
Player* player = memnew(Player);
|
||||
player->set_name(UtilityFunctions::var_to_str(a_PlayerId));
|
||||
player->m_PeerId = a_PlayerId;
|
||||
player->add_child(playerContent);
|
||||
|
||||
m_Players->add_child(player);
|
||||
PlayerController* playerController = memnew(PlayerController);
|
||||
player->add_child(playerController);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,4 +100,22 @@ void World::SetPlayerPositionAndRotation(
|
||||
}
|
||||
}
|
||||
|
||||
void World::AddProjectile(
|
||||
PlayerID a_Shooter, const godot::Vector3& a_Position, const godot::Vector3& a_Rotation, const godot::Vector3& a_Velocity) {
|
||||
|
||||
Player* shooter = GetPlayerById(a_Shooter);
|
||||
if (!shooter)
|
||||
return;
|
||||
|
||||
Bullet* bullet = ProjectileFactory::CreatePen();
|
||||
|
||||
bullet->set_position(a_Position);
|
||||
Transform3D bulletTransform = bullet->get_transform();
|
||||
bulletTransform.basis.set_euler(a_Rotation);
|
||||
bullet->set_transform(bulletTransform);
|
||||
|
||||
Node* entities = get_node<Node>("WorldContent/Entities");
|
||||
entities->add_child(bullet);
|
||||
}
|
||||
|
||||
} // namespace blitz
|
||||
@@ -272,9 +272,13 @@ void Deserializer::DeserializePacketData(data::PlayerPositionAndRotation& a_Pack
|
||||
|
||||
|
||||
|
||||
void Serializer::SerializePacketData(const data::PlayerShoot& a_Packet) {}
|
||||
void Serializer::SerializePacketData(const data::PlayerShoot& a_Packet) {
|
||||
m_Buffer << a_Packet.m_Sender << a_Packet.m_Position << a_Packet.m_Rotation << a_Packet.m_Velocity;
|
||||
}
|
||||
|
||||
void Deserializer::DeserializePacketData(data::PlayerShoot& a_Packet) {}
|
||||
void Deserializer::DeserializePacketData(data::PlayerShoot& a_Packet) {
|
||||
m_Buffer >> a_Packet.m_Sender >> a_Packet.m_Position >> a_Packet.m_Rotation >> a_Packet.m_Velocity;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
63
src/client/Bullet.cpp
Normal file
63
src/client/Bullet.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
#include <client/Bullet.h>
|
||||
|
||||
#include <godot_cpp/classes/engine.hpp>
|
||||
#include <godot_cpp/classes/geometry_instance3d.hpp>
|
||||
#include <godot_cpp/classes/physics_direct_space_state3d.hpp>
|
||||
#include <godot_cpp/classes/physics_ray_query_parameters3d.hpp>
|
||||
#include <godot_cpp/classes/timer.hpp>
|
||||
#include <godot_cpp/classes/world3d.hpp>
|
||||
#include <godot_cpp/variant/utility_functions.hpp>
|
||||
|
||||
namespace blitz {
|
||||
|
||||
using namespace godot;
|
||||
|
||||
static constexpr float SPEED = 20.0f;
|
||||
static constexpr float MaxAlive = 10.0f;
|
||||
|
||||
void Bullet::_bind_methods() {}
|
||||
|
||||
Bullet::Bullet() : m_Stuck(false) {}
|
||||
|
||||
void Bullet::_ready() {
|
||||
Timer* timer = memnew(Timer);
|
||||
add_child(timer);
|
||||
timer->connect("timeout", callable_mp(this, &Bullet::Destroy));
|
||||
timer->set_wait_time(MaxAlive);
|
||||
timer->start();
|
||||
}
|
||||
|
||||
Bullet::~Bullet() {}
|
||||
|
||||
void Bullet::_process(float a_Delta) {
|
||||
if (Engine::get_singleton()->is_editor_hint()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto* head = get_node<Node3D>("Armature");
|
||||
|
||||
if (m_Stuck)
|
||||
return;
|
||||
|
||||
Vector3 start = get_position();
|
||||
Vector3 finish = start + get_transform().basis.xform(Vector3{0, 0, -SPEED * a_Delta});
|
||||
|
||||
auto query = PhysicsRayQueryParameters3D::create(start, finish, 1);
|
||||
auto result = get_world_3d()->get_direct_space_state()->intersect_ray(query);
|
||||
|
||||
if (result.is_empty()) {
|
||||
set_position(finish);
|
||||
return;
|
||||
}
|
||||
|
||||
m_Stuck = true;
|
||||
Vector3 intersectPoint = result["position"];
|
||||
|
||||
head->set_global_position(intersectPoint);
|
||||
}
|
||||
|
||||
void Bullet::Destroy() {
|
||||
queue_free();
|
||||
}
|
||||
|
||||
} // namespace blitz
|
||||
@@ -31,19 +31,13 @@ void Player::_ready() {
|
||||
return;
|
||||
}
|
||||
|
||||
m_Player = get_node<CharacterBody3D>("Player");
|
||||
DEV_ASSERT(m_Player);
|
||||
|
||||
// we set the player to an invalid position
|
||||
m_Player->set_position({-99999, -999999, -999999});
|
||||
set_position({-99999, -999999, -999999});
|
||||
|
||||
m_Head = get_node<Node3D>("Player/Head");
|
||||
DEV_ASSERT(m_Head);
|
||||
|
||||
m_Mesh = get_node<Node3D>("Player/Armature");
|
||||
m_Mesh = get_node<Node3D>("Armature");
|
||||
DEV_ASSERT(m_Mesh);
|
||||
|
||||
m_AnimationTree = get_node<AnimationTree>("Player/AnimationTree");
|
||||
m_AnimationTree = get_node<AnimationTree>("AnimationTree");
|
||||
DEV_ASSERT(m_AnimationTree);
|
||||
}
|
||||
|
||||
@@ -51,29 +45,29 @@ void Player::_physics_process(float delta) {
|
||||
if (godot::Engine::get_singleton()->is_editor_hint())
|
||||
return;
|
||||
|
||||
m_Player->move_and_slide();
|
||||
move_and_slide();
|
||||
UpdateAnimation(delta);
|
||||
}
|
||||
|
||||
Vector3 Player::GetPosition() const {
|
||||
return m_Player->get_position();
|
||||
return get_position();
|
||||
}
|
||||
|
||||
void Player::SetPosition(const Vector3& a_Position) {
|
||||
m_Player->set_position(a_Position);
|
||||
set_position(a_Position);
|
||||
}
|
||||
|
||||
Vector3 Player::GetVelocity() const {
|
||||
return m_Player->get_velocity();
|
||||
return get_velocity();
|
||||
}
|
||||
|
||||
void Player::SetVelocity(const Vector3& a_Velocity) {
|
||||
m_Player->set_velocity(a_Velocity);
|
||||
set_velocity(a_Velocity);
|
||||
}
|
||||
|
||||
void Player::UpdateAnimation(float a_Delta) {
|
||||
Vector3 velocity = m_Player->get_velocity();
|
||||
float angle = m_Player->get_rotation().y;
|
||||
Vector3 velocity = get_velocity();
|
||||
float angle = get_rotation().y;
|
||||
|
||||
Vector3 direction = velocity.rotated({0, 1, 0}, -angle);
|
||||
if (direction.length() < 1.0f) {
|
||||
@@ -91,8 +85,8 @@ void Player::UpdateAnimation(float a_Delta) {
|
||||
float ratio = 0.5f - (UtilityFunctions::absf(direction.z) - UtilityFunctions::absf(direction.x)) * 0.5f;
|
||||
BlendAnimation("parameters/Movement/Walking/blend_amount", ratio, a_Delta);
|
||||
|
||||
m_AnimationTree->set("parameters/conditions/jump", !m_Player->is_on_floor() && m_Player->get_velocity().y > 0.0f);
|
||||
m_AnimationTree->set("parameters/conditions/is_on_floor", m_Player->is_on_floor());
|
||||
m_AnimationTree->set("parameters/conditions/jump", !is_on_floor() && get_velocity().y > 0.0f);
|
||||
m_AnimationTree->set("parameters/conditions/is_on_floor", is_on_floor());
|
||||
}
|
||||
|
||||
void Player::BlendAnimation(const godot::String& a_AnimationName, float a_Goal, float a_Delta) {
|
||||
@@ -104,17 +98,24 @@ void Player::SetModelVisible(bool a_Visible) {
|
||||
auto* skeleton = m_Mesh->get_node<Skeleton3D>("Skeleton3D");
|
||||
for (int i = 0; i < skeleton->get_child_count(); i++) {
|
||||
auto* bodyPart = Object::cast_to<MeshInstance3D>(skeleton->get_child(i));
|
||||
bodyPart->set_cast_shadows_setting(a_Visible ? GeometryInstance3D::ShadowCastingSetting::SHADOW_CASTING_SETTING_ON
|
||||
if (bodyPart)
|
||||
bodyPart->set_cast_shadows_setting(a_Visible
|
||||
? GeometryInstance3D::ShadowCastingSetting::SHADOW_CASTING_SETTING_ON
|
||||
: GeometryInstance3D::ShadowCastingSetting::SHADOW_CASTING_SETTING_SHADOWS_ONLY);
|
||||
}
|
||||
|
||||
// TODO: dirty, make it recursive
|
||||
auto* pencilCase = m_Mesh->get_node<MeshInstance3D>("Skeleton3D/Hand/Pencil Case");
|
||||
pencilCase->set_cast_shadows_setting(a_Visible ? GeometryInstance3D::ShadowCastingSetting::SHADOW_CASTING_SETTING_ON
|
||||
: GeometryInstance3D::ShadowCastingSetting::SHADOW_CASTING_SETTING_SHADOWS_ONLY);
|
||||
}
|
||||
|
||||
Vector3 Player::GetCameraRotation() const {
|
||||
return m_Player->get_rotation();
|
||||
return get_rotation();
|
||||
}
|
||||
|
||||
void Player::SetCameraRotation(const Vector3& a_Rotation) {
|
||||
m_Player->set_rotation(a_Rotation);
|
||||
set_rotation(a_Rotation);
|
||||
}
|
||||
|
||||
} // namespace blitz
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include <client/FirstPersonPlayer.h>
|
||||
#include <client/PlayerController.h>
|
||||
|
||||
#include <blitz/factory/ProjectileFactory.h>
|
||||
#include <blitz/godot/NetworkInterface.h>
|
||||
#include <godot_cpp/classes/camera3d.hpp>
|
||||
#include <godot_cpp/classes/engine.hpp>
|
||||
#include <godot_cpp/classes/input.hpp>
|
||||
@@ -37,15 +39,13 @@ static constexpr float MAX_FOV_VELOCITY = SPRINT_SPEED * 2.0f;
|
||||
static const float LerpValue = 0.10;
|
||||
static const float AnimationBlend = 7.0;
|
||||
|
||||
void FirstPersonPlayer::_bind_methods() {}
|
||||
void PlayerController::_bind_methods() {}
|
||||
|
||||
FirstPersonPlayer::FirstPersonPlayer() : Player(), m_BobTime(0) {}
|
||||
PlayerController::PlayerController() : m_BobTime(0) {}
|
||||
|
||||
FirstPersonPlayer::~FirstPersonPlayer() {}
|
||||
|
||||
void FirstPersonPlayer::_ready() {
|
||||
Player::_ready();
|
||||
PlayerController::~PlayerController() {}
|
||||
|
||||
void PlayerController::_ready() {
|
||||
InputMap::get_singleton()->load_from_project_settings();
|
||||
if (!Engine::get_singleton()->is_editor_hint()) {
|
||||
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED);
|
||||
@@ -53,18 +53,28 @@ void FirstPersonPlayer::_ready() {
|
||||
return;
|
||||
}
|
||||
|
||||
m_Player = Object::cast_to<Player>(get_parent());
|
||||
|
||||
m_Head = m_Player->get_node<Node3D>("Head");
|
||||
DEV_ASSERT(m_Head);
|
||||
|
||||
m_Head->set_visible(true);
|
||||
|
||||
m_Camera = memnew(Camera3D);
|
||||
m_Camera->set_name("FirstPersonCamera");
|
||||
m_Head->add_child(m_Camera);
|
||||
m_Camera->make_current();
|
||||
|
||||
SetModelVisible(false);
|
||||
m_Player->SetModelVisible(false);
|
||||
|
||||
SetPosition({0, 100, 0});
|
||||
SetVelocity({0, 0, 0});
|
||||
m_Player->SetPosition({0, 1, 0});
|
||||
m_Player->SetVelocity({0, 0, 0});
|
||||
|
||||
m_NetworkInterface = m_Player->get_node<NetworkInterface>("../../../../Network");
|
||||
DEV_ASSERT(m_NetworkInterface);
|
||||
}
|
||||
|
||||
void FirstPersonPlayer::_unhandled_input(const godot::Ref<godot::InputEvent>& a_Event) {
|
||||
void PlayerController::_unhandled_input(const godot::Ref<godot::InputEvent>& a_Event) {
|
||||
auto* event = Object::cast_to<InputEventMouseMotion>(a_Event.ptr());
|
||||
if (event)
|
||||
UpdateCamera(*event);
|
||||
@@ -77,7 +87,7 @@ void FirstPersonPlayer::_unhandled_input(const godot::Ref<godot::InputEvent>& a_
|
||||
}
|
||||
}
|
||||
|
||||
void FirstPersonPlayer::_physics_process(float a_Delta) {
|
||||
void PlayerController::_process(float a_Delta) {
|
||||
#if DEBUG_ENABLED
|
||||
if (Engine::get_singleton()->is_editor_hint()) {
|
||||
return;
|
||||
@@ -87,25 +97,31 @@ void FirstPersonPlayer::_physics_process(float a_Delta) {
|
||||
auto* Input = Input::get_singleton();
|
||||
|
||||
if (!m_Player->is_on_floor())
|
||||
SetVelocity(GetVelocity() - Vector3{0, GRAVITY * a_Delta, 0});
|
||||
m_Player->SetVelocity(m_Player->GetVelocity() - Vector3{0, GRAVITY * a_Delta, 0});
|
||||
|
||||
if (Input->is_action_pressed("jump") && m_Player->is_on_floor())
|
||||
SetVelocity({GetVelocity().x, JUMP_VELOCITY, GetVelocity().z});
|
||||
m_Player->SetVelocity({m_Player->GetVelocity().x, JUMP_VELOCITY, m_Player->GetVelocity().z});
|
||||
|
||||
m_Speed = Input->is_action_pressed("sprint") ? SPRINT_SPEED : WALK_SPEED;
|
||||
|
||||
UpdatePosition(a_Delta);
|
||||
|
||||
UpdateFOV(a_Delta);
|
||||
UpdateBobbing(a_Delta);
|
||||
UpdateVelocity(a_Delta);
|
||||
|
||||
m_Player->move_and_slide();
|
||||
|
||||
UpdateAnimation(a_Delta);
|
||||
Shoot();
|
||||
}
|
||||
|
||||
void FirstPersonPlayer::UpdateBobbing(float a_Delta) {
|
||||
m_BobTime += a_Delta * GetVelocity().length() * m_Player->is_on_floor();
|
||||
void PlayerController::Shoot() {
|
||||
if (Input::get_singleton()->is_action_pressed("shoot")) {
|
||||
// we don't use velocity yet
|
||||
protocol::packets::PlayerShoot packet(
|
||||
{m_Player->GetId(), m_Camera->get_global_position(), m_Camera->get_global_transform().basis.get_euler(), {}});
|
||||
m_NetworkInterface->BroadcastPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerController::UpdateBobbing(float a_Delta) {
|
||||
m_BobTime += a_Delta * m_Player->GetVelocity().length() * m_Player->is_on_floor();
|
||||
|
||||
Vector3 newPos{static_cast<float>(Math::cos(m_BobTime * BOB_FREQ / 2.0) * BOB_AMP),
|
||||
static_cast<float>(Math::sin(m_BobTime * BOB_FREQ) * BOB_AMP), 0};
|
||||
@@ -113,16 +129,16 @@ void FirstPersonPlayer::UpdateBobbing(float a_Delta) {
|
||||
// m_Camera->set_transform({m_Camera->get_transform().basis, newPos});
|
||||
}
|
||||
|
||||
void FirstPersonPlayer::UpdateCamera(const InputEventMouseMotion& a_Event) {
|
||||
void PlayerController::UpdateCamera(const InputEventMouseMotion& a_Event) {
|
||||
m_Player->rotate_y(-a_Event.get_relative().x * SENSITIVITY);
|
||||
m_Camera->rotate_x(-a_Event.get_relative().y * SENSITIVITY);
|
||||
m_Head->rotate_x(-a_Event.get_relative().y * SENSITIVITY);
|
||||
|
||||
float rotationX = m_Camera->get_rotation().x;
|
||||
float rotationX = m_Head->get_rotation().x;
|
||||
rotationX = CLAMP(rotationX, Math::deg_to_rad(-80.0), Math::deg_to_rad(80.0));
|
||||
m_Camera->set_rotation({rotationX, m_Camera->get_rotation().y, m_Camera->get_rotation().z});
|
||||
m_Head->set_rotation({rotationX, m_Head->get_rotation().y, m_Head->get_rotation().z});
|
||||
}
|
||||
|
||||
void FirstPersonPlayer::UpdatePosition(float delta) {
|
||||
void PlayerController::UpdateVelocity(float delta) {
|
||||
auto* Input = Input::get_singleton();
|
||||
|
||||
Vector2 inputDirection = Input->get_vector("move_left", "move_right", "move_forwards", "move_backwards");
|
||||
@@ -130,25 +146,25 @@ void FirstPersonPlayer::UpdatePosition(float delta) {
|
||||
|
||||
if (m_Player->is_on_floor()) {
|
||||
if (!direction.is_zero_approx()) {
|
||||
SetVelocity({direction.x * m_Speed, GetVelocity().y, direction.z * m_Speed});
|
||||
m_Player->SetVelocity({direction.x * m_Speed, m_Player->GetVelocity().y, direction.z * m_Speed});
|
||||
} else {
|
||||
SetVelocity({Math::lerp(static_cast<float>(GetVelocity().x), static_cast<float>(direction.x * m_Speed),
|
||||
m_Player->SetVelocity({Math::lerp(static_cast<float>(m_Player->GetVelocity().x), static_cast<float>(direction.x * m_Speed),
|
||||
static_cast<float>(delta * GROUND_FRICTION)),
|
||||
GetVelocity().y,
|
||||
Math::lerp(static_cast<float>(GetVelocity().z), static_cast<float>(direction.z * m_Speed),
|
||||
m_Player->GetVelocity().y,
|
||||
Math::lerp(static_cast<float>(m_Player->GetVelocity().z), static_cast<float>(direction.z * m_Speed),
|
||||
static_cast<float>(delta * GROUND_FRICTION))});
|
||||
}
|
||||
} else {
|
||||
SetVelocity({Math::lerp(static_cast<float>(GetVelocity().x), static_cast<float>(direction.x * m_Speed),
|
||||
m_Player->SetVelocity({Math::lerp(static_cast<float>(m_Player->GetVelocity().x), static_cast<float>(direction.x * m_Speed),
|
||||
static_cast<float>(delta * AIR_MOVEMENT)),
|
||||
GetVelocity().y,
|
||||
Math::lerp(static_cast<float>(GetVelocity().z), static_cast<float>(direction.z * m_Speed),
|
||||
m_Player->GetVelocity().y,
|
||||
Math::lerp(static_cast<float>(m_Player->GetVelocity().z), static_cast<float>(direction.z * m_Speed),
|
||||
static_cast<float>(delta * AIR_MOVEMENT))});
|
||||
}
|
||||
}
|
||||
|
||||
void FirstPersonPlayer::UpdateFOV(float a_Delta) {
|
||||
float velocityClamped = Math::clamp(GetVelocity().length(), MIN_FOV_VELOCITY, MAX_FOV_VELOCITY);
|
||||
void PlayerController::UpdateFOV(float a_Delta) {
|
||||
float velocityClamped = Math::clamp(m_Player->GetVelocity().length(), MIN_FOV_VELOCITY, MAX_FOV_VELOCITY);
|
||||
float targetFOV = BASE_FOV + FOV_CHANGE * velocityClamped;
|
||||
m_Camera->set_fov(Math::lerp(static_cast<float>(m_Camera->get_fov()), targetFOV, a_Delta * FOV_TRANSITION));
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
#include <blitz/godot/NetworkInterface.h>
|
||||
#include <client/Bullet.h>
|
||||
#include <client/ClientWorld.h>
|
||||
#include <client/FirstPersonPlayer.h>
|
||||
#include <client/Main.h>
|
||||
#include <client/MainMenu.h>
|
||||
#include <client/Player.h>
|
||||
#include <client/PlayerController.h>
|
||||
#include <server/Server.h>
|
||||
#include <server/ServerWorld.h>
|
||||
|
||||
@@ -15,7 +16,7 @@ using namespace godot;
|
||||
|
||||
static void RegisterClasses() {
|
||||
GDREGISTER_CLASS(blitz::Player);
|
||||
GDREGISTER_CLASS(blitz::FirstPersonPlayer);
|
||||
GDREGISTER_CLASS(blitz::PlayerController);
|
||||
GDREGISTER_CLASS(blitz::MainMenu);
|
||||
GDREGISTER_CLASS(blitz::Main);
|
||||
GDREGISTER_CLASS(blitz::NetworkInterface);
|
||||
@@ -23,6 +24,7 @@ static void RegisterClasses() {
|
||||
GDREGISTER_ABSTRACT_CLASS(blitz::World);
|
||||
GDREGISTER_CLASS(blitz::ClientWorld);
|
||||
GDREGISTER_CLASS(blitz::ServerWorld);
|
||||
GDREGISTER_CLASS(blitz::Bullet);
|
||||
}
|
||||
|
||||
static void initialize_blitz_module(ModuleInitializationLevel p_level) {
|
||||
|
||||
Reference in New Issue
Block a user