diff --git a/assets/models/environment/house_modular_01.glb.import b/assets/models/environment/house_modular_01.glb.import index 8b15bd3..fdfbb77 100644 --- a/assets/models/environment/house_modular_01.glb.import +++ b/assets/models/environment/house_modular_01.glb.import @@ -32,6 +32,12 @@ animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" -_subresources={} +_subresources={ +"nodes": { +"PATH:House_Modular_01": { +"generate/physics": true +} +} +} gltf/naming_version=1 gltf/embedded_image_handling=1 diff --git a/assets/models/environment/stone_wall_bldg_04.glb.import b/assets/models/environment/stone_wall_bldg_04.glb.import index d9197ae..b0e4a0e 100644 --- a/assets/models/environment/stone_wall_bldg_04.glb.import +++ b/assets/models/environment/stone_wall_bldg_04.glb.import @@ -32,6 +32,12 @@ animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" -_subresources={} +_subresources={ +"nodes": { +"PATH:Stone_Wall_Bldg_04": { +"generate/physics": true +} +} +} gltf/naming_version=1 gltf/embedded_image_handling=1 diff --git a/assets/models/environment/turret_square_bldg_02.glb.import b/assets/models/environment/turret_square_bldg_02.glb.import index f511abd..2c9d274 100644 --- a/assets/models/environment/turret_square_bldg_02.glb.import +++ b/assets/models/environment/turret_square_bldg_02.glb.import @@ -32,6 +32,12 @@ animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" -_subresources={} +_subresources={ +"nodes": { +"PATH:Turret_Square_Bldg_02": { +"generate/physics": true +} +} +} gltf/naming_version=1 gltf/embedded_image_handling=1 diff --git a/assets/models/environment/wall_stone_gate_bldg_01.glb.import b/assets/models/environment/wall_stone_gate_bldg_01.glb.import index a8427e0..66f6593 100644 --- a/assets/models/environment/wall_stone_gate_bldg_01.glb.import +++ b/assets/models/environment/wall_stone_gate_bldg_01.glb.import @@ -32,6 +32,12 @@ animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" -_subresources={} +_subresources={ +"nodes": { +"PATH:Wall_Stone_Gate_Bldg_01": { +"generate/physics": true +} +} +} gltf/naming_version=1 gltf/embedded_image_handling=1 diff --git a/project.godot b/project.godot index 7ca6586..971f151 100644 --- a/project.godot +++ b/project.godot @@ -93,3 +93,8 @@ open_inventory={ 3d_physics/layer_2="Interaction" 3d_physics/layer_3="Player" 3d_physics/layer_4="Enemy" + +[rendering] + +lights_and_shadows/directional_shadow/soft_shadow_filter_quality=4 +anti_aliasing/quality/msaa_3d=3 diff --git a/src/resources/level_navigation_mesh.res b/src/resources/level_navigation_mesh.res index ffcf834..4a0b52e 100644 Binary files a/src/resources/level_navigation_mesh.res and b/src/resources/level_navigation_mesh.res differ diff --git a/src/resources/terrain_data/grassy_hills/terrain3d-01-01.res b/src/resources/terrain_data/grassy_hills/terrain3d-01-01.res index bb88049..a016eb3 100644 --- a/src/resources/terrain_data/grassy_hills/terrain3d-01-01.res +++ b/src/resources/terrain_data/grassy_hills/terrain3d-01-01.res @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39ed0b44e655fc69a6cf5e698cd68bb5b1ae86c43661366321d24f3eef1d525b -size 225196 +oid sha256:9b17af24b150f156bfb7f47f91f69b394b18cd41c326e5ac39b433bba0267115 +size 225193 diff --git a/src/resources/terrain_data/grassy_hills/terrain3d_00-01.res b/src/resources/terrain_data/grassy_hills/terrain3d_00-01.res index 0e6f234..8990709 100644 --- a/src/resources/terrain_data/grassy_hills/terrain3d_00-01.res +++ b/src/resources/terrain_data/grassy_hills/terrain3d_00-01.res @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8610d5109723b24dcbe6f9d3316a76694e0473e1c72d32b67fc5853346c6e37a -size 219038 +oid sha256:3129483b9a417d1802360bf8923b949d2f6bad45161b86037d481b0ddc6d66a2 +size 209253 diff --git a/src/resources/terrain_data/grassy_hills/terrain3d_00_00.res b/src/resources/terrain_data/grassy_hills/terrain3d_00_00.res index 8386bfd..fcb80cf 100644 --- a/src/resources/terrain_data/grassy_hills/terrain3d_00_00.res +++ b/src/resources/terrain_data/grassy_hills/terrain3d_00_00.res @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9e18940ef0556aafda8564006a34fba7db38002cf0efe5a2948c830e2230937d -size 222615 +oid sha256:5269fe80853f2e08bc1e5c827b9fb4d8d0ed9fb31f8b5b721e37dc343082809f +size 222605 diff --git a/src/scenes/characters/enemy.tscn b/src/scenes/characters/enemy.tscn index 1750dec..a3a9fe2 100644 --- a/src/scenes/characters/enemy.tscn +++ b/src/scenes/characters/enemy.tscn @@ -1,7 +1,9 @@ -[gd_scene load_steps=7 format=3 uid="uid://cwvrti8hmxj0k"] +[gd_scene load_steps=9 format=3 uid="uid://cwvrti8hmxj0k"] [ext_resource type="Script" uid="uid://p38hhb8jwgor" path="res://src/scripts/characters/enemy.gd" id="1_jr6vw"] +[ext_resource type="PackedScene" uid="uid://c7ahf78h5s3kx" path="res://assets/models/character/gear/tall_shield.glb" id="2_fwei0"] [ext_resource type="PackedScene" uid="uid://ckwydalda0teo" path="res://src/scenes/characters/rig.tscn" id="2_saeby"] +[ext_resource type="PackedScene" uid="uid://csdumqcs3kutf" path="res://assets/models/character/gear/short_shield.glb" id="3_aygwl"] [ext_resource type="PackedScene" uid="uid://bo62qyfwylypa" path="res://src/scenes/characters/area_attack.tscn" id="3_ljmr7"] [ext_resource type="PackedScene" uid="uid://dw8f5oy13cdtx" path="res://src/scenes/characters/health_component.tscn" id="3_r8u7w"] @@ -12,6 +14,7 @@ [node name="Enemy" type="CharacterBody3D"] collision_layer = 9 script = ExtResource("1_jr6vw") +off_hand_items = Array[PackedScene]([ExtResource("2_fwei0"), ExtResource("3_aygwl")]) [node name="NavigationAgent3D" type="NavigationAgent3D" parent="."] avoidance_enabled = true @@ -26,114 +29,37 @@ shape = SubResource("CapsuleShape3D_r8u7w") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) [node name="Skeleton3D" parent="Rig/CharacterRig/GameRig" index="0"] -bones/0/position = Vector3(1.21217e-14, 0.904557, -0.0481735) -bones/0/rotation = Quaternion(0.12582, 1.18262e-07, 1.49989e-08, 0.992053) -bones/1/rotation = Quaternion(-0.0566577, -0.00072973, -0.0117082, 0.998325) -bones/2/position = Vector3(3.20474e-09, 0.146689, -1.95578e-08) -bones/2/rotation = Quaternion(0.00298626, -0.000337833, 0.00321286, 0.99999) -bones/3/position = Vector3(-2.01263e-09, 0.202058, -2.51457e-08) -bones/3/rotation = Quaternion(-0.0921007, -0.000322983, 0.00852283, 0.995713) -bones/4/position = Vector3(3.02934e-10, 0.0925562, 3.91155e-08) -bones/4/rotation = Quaternion(0.273117, 1.52362e-08, 9.00898e-08, 0.961981) -bones/5/rotation = Quaternion(-0.0948564, -2.80691e-14, -2.26155e-08, 0.995491) -bones/6/rotation = Quaternion(-0.161142, -1.17099e-07, -2.25933e-08, 0.986931) -bones/7/position = Vector3(-4.83287e-08, 0.904557, -0.0481735) -bones/7/rotation = Quaternion(-0.0863677, -0.751104, -0.383052, 0.530711) -bones/8/position = Vector3(-4.89954e-08, 0.904557, -0.0481735) -bones/8/rotation = Quaternion(-0.0863677, 0.751104, 0.383052, 0.530711) -bones/9/position = Vector3(0.131144, 0.970761, -0.0351291) -bones/9/rotation = Quaternion(0.993706, 0.020529, -0.0311124, 0.105635) -bones/10/position = Vector3(-2.36129e-08, 0.26601, -2.14789e-08) -bones/10/rotation = Quaternion(-3.13921e-08, -0.000695086, 1.20449e-08, 1) -bones/11/position = Vector3(-4.6306e-08, 0.26601, 2.42145e-08) -bones/11/rotation = Quaternion(0.40677, -0.000698331, 0.00031109, 0.91353) -bones/12/position = Vector3(3.05151e-08, 0.22603, 5.03768e-08) -bones/12/rotation = Quaternion(-8.19226e-09, -0.00710644, 4.16102e-08, 0.999975) -bones/13/position = Vector3(-2.95495e-08, 0.22603, 2.68392e-09) -bones/13/rotation = Quaternion(-0.745799, 0.0118641, 0.0243793, 0.665619) -bones/14/position = Vector3(-3.05481e-08, 0.139877, 1.64787e-08) -bones/14/rotation = Quaternion(-9.66743e-05, 0.967474, -0.252972, -0.000383447) -bones/15/position = Vector3(-0.131144, 0.970762, -0.0351291) -bones/15/rotation = Quaternion(0.974626, -0.00550998, 0.0275111, 0.222074) -bones/16/position = Vector3(-1.10042e-08, 0.265705, -3.31989e-08) -bones/16/rotation = Quaternion(-3.43227e-08, 0.00314323, 8.33075e-10, 0.999995) -bones/17/position = Vector3(1.83545e-08, 0.265705, 6.98543e-10) -bones/17/rotation = Quaternion(0.431857, 0.0032183, -0.00154106, 0.901935) -bones/18/position = Vector3(1.2807e-08, 0.225719, -8.28774e-09) -bones/18/rotation = Quaternion(-2.29017e-08, -0.00785732, 3.30149e-08, 0.999969) -bones/19/position = Vector3(-1.27748e-08, 0.225719, 1.12004e-08) -bones/19/rotation = Quaternion(-0.682773, -0.0281637, -0.00112035, 0.730086) -bones/20/position = Vector3(-1.30142e-08, 0.139877, -2.77457e-09) -bones/20/rotation = Quaternion(-9.96472e-05, 0.967461, -0.253021, -0.000383039) -bones/21/position = Vector3(0.0251286, 1.43439, 0.0451408) -bones/21/rotation = Quaternion(-0.480154, -0.263399, -0.409656, 0.729558) -bones/22/position = Vector3(0.190243, 1.47247, -0.0159117) -bones/22/rotation = Quaternion(0.0335301, -0.162181, 0.97514, -0.147224) -bones/23/position = Vector3(-5.41331e-09, 0.143946, -2.98023e-08) -bones/23/rotation = Quaternion(9.08062e-08, -0.0292465, 1.43074e-08, 0.999572) -bones/24/position = Vector3(-6.33301e-08, 0.143946, 4.3873e-08) -bones/24/rotation = Quaternion(0.329287, -0.0292472, -0.0204915, 0.943554) -bones/25/position = Vector3(1.30385e-08, 0.127601, 6.51926e-09) -bones/25/rotation = Quaternion(1.49943e-07, -1.20606e-07, 9.91859e-08, 1) -bones/26/position = Vector3(2.06034e-08, 0.127601, 2.42761e-08) -bones/26/rotation = Quaternion(-0.00824883, -0.00027077, -0.0328667, 0.999426) -bones/28/rotation = Quaternion(0.702583, -0.000939743, -0.00133552, 0.7116) -bones/29/rotation = Quaternion(0.741121, 0.00218291, 0.00265381, 0.671363) -bones/30/rotation = Quaternion(0.32527, 0.890055, 0.295977, -0.119997) -bones/31/rotation = Quaternion(0.514882, -0.114149, 0.114482, 0.841879) -bones/32/rotation = Quaternion(0.592003, -0.0381348, -0.090699, 0.799907) -bones/34/position = Vector3(-0.00316938, 0.0987206, 0.0147918) -bones/34/rotation = Quaternion(-0.0674699, 0.718446, 0.0663966, 0.689112) -bones/35/rotation = Quaternion(0.580803, -0.000892135, -0.0014975, 0.814042) -bones/36/rotation = Quaternion(0.682777, 0.00174509, 0.00256596, 0.73062) -bones/37/rotation = Quaternion(-0.00426514, 0.736714, 0.0394785, 0.675038) -bones/38/position = Vector3(-0.00622951, 0.0926415, -0.0236344) -bones/38/rotation = Quaternion(-0.109873, 0.743351, 0.0333507, 0.658973) -bones/39/rotation = Quaternion(0.630039, 0.00151959, 0.00237944, 0.776559) -bones/40/rotation = Quaternion(0.652643, -0.00308142, -0.00421108, 0.757648) -bones/41/rotation = Quaternion(-0.0684174, 0.72411, 0.0332337, 0.685478) -bones/42/position = Vector3(-0.00715362, 0.0679857, -0.0481983) -bones/42/rotation = Quaternion(-0.120913, 0.799109, 0.0358921, 0.587807) -bones/43/rotation = Quaternion(0.498693, -0.0202705, -0.0256953, 0.866161) -bones/44/rotation = Quaternion(0.715385, 0.035306, 0.0573145, 0.695481) -bones/45/rotation = Quaternion(-0.129059, 0.728936, -0.0250259, 0.67184) -bones/46/position = Vector3(-0.0113635, 1.43439, 0.0451408) -bones/46/rotation = Quaternion(-0.488509, 0.245522, 0.397769, 0.736789) -bones/47/position = Vector3(-0.173283, 1.47296, -0.0236669) -bones/47/rotation = Quaternion(-0.0389216, -0.143036, 0.975337, 0.163535) -bones/48/position = Vector3(1.88476e-07, 0.143946, 1.02445e-08) -bones/48/rotation = Quaternion(-6.51773e-08, 0.0382053, -1.52472e-07, 0.99927) -bones/49/position = Vector3(6.5191e-09, 0.143946, -1.95094e-08) -bones/49/rotation = Quaternion(0.366679, 0.0382059, 0.0287499, 0.929118) -bones/50/position = Vector3(-1.48779e-07, 0.1276, 5.9139e-08) -bones/50/rotation = Quaternion(-8.73115e-08, 2.7474e-08, -1.28057e-07, 1) -bones/51/position = Vector3(1.9461e-07, 0.127601, 6.06248e-08) -bones/51/rotation = Quaternion(-0.00824876, 0.000270832, 0.032867, 0.999426) -bones/52/rotation = Quaternion(-0.2563, 0.855859, 0.0299184, -0.448241) -bones/53/rotation = Quaternion(0.694912, 0.107145, -0.103549, 0.703488) -bones/54/rotation = Quaternion(0.74112, -0.00218237, -0.00265409, 0.671363) -bones/55/rotation = Quaternion(-0.325269, 0.890055, 0.295977, 0.119998) -bones/56/rotation = Quaternion(0.514882, 0.11415, -0.114483, 0.841879) -bones/57/rotation = Quaternion(0.592004, 0.0381346, 0.0906992, 0.799907) -bones/59/position = Vector3(0.00316943, 0.0987207, 0.0147917) -bones/59/rotation = Quaternion(0.138771, -0.704916, 0.15571, 0.677932) -bones/60/rotation = Quaternion(0.579984, 0.0462615, -0.0308755, 0.812727) -bones/61/rotation = Quaternion(0.682777, -0.00174718, -0.00256448, 0.73062) -bones/62/rotation = Quaternion(-0.00426532, -0.736714, -0.0394788, 0.675038) -bones/63/position = Vector3(0.00622955, 0.0926417, -0.0236344) -bones/63/rotation = Quaternion(0.104095, -0.719607, 0.186262, 0.660784) -bones/64/rotation = Quaternion(0.670693, 0.0163391, -0.0185663, 0.741323) -bones/65/rotation = Quaternion(0.692499, 0.00330364, 0.00403917, 0.7214) -bones/66/rotation = Quaternion(-0.0684178, -0.72411, -0.0332339, 0.685477) -bones/67/position = Vector3(0.00715371, 0.0679859, -0.0481984) -bones/67/rotation = Quaternion(0.108364, -0.768224, 0.166291, 0.608635) -bones/68/rotation = Quaternion(0.629954, 0.0295149, 0.0177509, 0.775869) -bones/69/rotation = Quaternion(0.816678, -0.0439534, -0.0509861, 0.573155) -bones/70/rotation = Quaternion(-0.12906, -0.728937, 0.0250258, 0.67184) -bones/71/position = Vector3(0.127191, 1.35429, -0.0252785) -bones/71/rotation = Quaternion(1.988e-08, 0.604703, 0.796451, -4.61019e-08) -bones/72/position = Vector3(-0.113426, 1.35429, -0.0252785) -bones/72/rotation = Quaternion(1.98788e-08, 0.604723, 0.796436, -4.61025e-08) +bones/0/position = Vector3(1.41799e-14, 0.903864, -0.0481735) +bones/2/rotation = Quaternion(0.00254114, -0.000345045, 0.00321307, 0.999992) +bones/3/rotation = Quaternion(-0.0925045, -0.000328237, 0.00852257, 0.995676) +bones/4/rotation = Quaternion(0.273484, 1.50227e-08, 9.09987e-08, 0.961876) +bones/6/rotation = Quaternion(-0.16068, -1.17104e-07, -2.25642e-08, 0.987007) +bones/7/position = Vector3(-5.39946e-08, 0.903864, -0.0481735) +bones/8/position = Vector3(-5.91031e-08, 0.903864, -0.0481735) +bones/9/position = Vector3(0.131144, 0.970068, -0.0351291) +bones/9/rotation = Quaternion(0.993638, 0.0205636, -0.0310958, 0.106269) +bones/11/rotation = Quaternion(0.408196, -0.000698645, 0.000312532, 0.912894) +bones/13/rotation = Quaternion(-0.746414, 0.0118664, 0.0243817, 0.664929) +bones/15/position = Vector3(-0.131144, 0.970068, -0.0351291) +bones/15/rotation = Quaternion(0.974478, -0.00553855, 0.0274913, 0.222725) +bones/17/rotation = Quaternion(0.433159, 0.003226, -0.00155051, 0.901311) +bones/19/rotation = Quaternion(-0.683342, -0.0281668, -0.00108009, 0.729554) +bones/21/position = Vector3(0.0251286, 1.43374, 0.0448904) +bones/21/rotation = Quaternion(-0.481322, -0.262926, -0.408801, 0.729439) +bones/22/position = Vector3(0.19009, 1.47171, -0.0166302) +bones/22/rotation = Quaternion(0.035007, -0.161958, 0.975088, -0.14747) +bones/23/rotation = Quaternion(1.24303e-07, -0.0280484, 3.1793e-08, 0.999607) +bones/24/rotation = Quaternion(0.326585, -0.0280544, -0.0203048, 0.944533) +bones/46/position = Vector3(-0.0113635, 1.43374, 0.0448904) +bones/46/rotation = Quaternion(-0.490609, 0.243241, 0.395651, 0.73729) +bones/47/position = Vector3(-0.172762, 1.47222, -0.0251737) +bones/47/rotation = Quaternion(-0.0422729, -0.142474, 0.975197, 0.164026) +bones/48/rotation = Quaternion(-7.05598e-09, 0.0359437, -8.97213e-08, 0.999354) +bones/49/rotation = Quaternion(0.363577, 0.0359443, 0.0288099, 0.930425) +bones/71/position = Vector3(0.127191, 1.35349, -0.0253768) +bones/71/rotation = Quaternion(1.98289e-08, 0.605451, 0.795883, -4.61308e-08) +bones/72/position = Vector3(-0.113426, 1.35349, -0.0253769) +bones/72/rotation = Quaternion(1.98278e-08, 0.605468, 0.79587, -4.61313e-08) [node name="Knight_02" parent="Rig/CharacterRig/GameRig/Skeleton3D" index="1"] visible = false @@ -142,13 +68,10 @@ visible = false visible = true [node name="RightHandBone" parent="Rig" index="2"] -transform = Transform3D(-0.962343, -0.270801, -0.0237142, 0.23025, -0.858383, 0.458436, -0.144501, 0.435713, 0.888411, -0.347099, 0.999478, 0.00460035) +transform = Transform3D(-0.962343, -0.270803, -0.0237131, 0.231269, -0.861444, 0.452138, -0.142868, 0.429628, 0.891632, -0.346578, 0.997949, 0.00158512) [node name="LeftHandBone" parent="Rig" index="3"] -transform = Transform3D(-0.970513, 0.239108, 0.0305213, -0.214624, -0.914809, 0.342142, 0.10973, 0.325503, 0.939152, 0.347054, 0.984322, -0.0248196) - -[node name="tall_shield" parent="Rig/LeftHandBone/OffHandSlot" index="0"] -visible = false +transform = Transform3D(-0.970513, 0.239109, 0.0305225, -0.215283, -0.916755, 0.336472, 0.108435, 0.31998, 0.941198, 0.346901, 0.98305, -0.026914) [node name="PlayerDetector" type="ShapeCast3D" parent="Rig"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1) diff --git a/src/scenes/characters/player.tscn b/src/scenes/characters/player.tscn index 53d2720..4278139 100644 --- a/src/scenes/characters/player.tscn +++ b/src/scenes/characters/player.tscn @@ -48,53 +48,53 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) [node name="Rig" parent="RigPivot" instance=ExtResource("3_n52bt")] [node name="Skeleton3D" parent="RigPivot/Rig/CharacterRig/GameRig" index="0"] -bones/0/position = Vector3(4.44089e-15, 0.910298, -0.0481736) +bones/0/position = Vector3(7.09508e-15, 0.893464, -0.0481735) bones/0/rotation = Quaternion(0.12582, 1.18262e-07, 1.49989e-08, 0.992053) bones/1/rotation = Quaternion(-0.0566577, -0.00072973, -0.0117082, 0.998325) bones/2/position = Vector3(3.20474e-09, 0.146689, -1.95578e-08) -bones/2/rotation = Quaternion(0.00672042, -0.00027731, 0.00321123, 0.999972) +bones/2/rotation = Quaternion(-0.00413898, -0.000453312, 0.00321554, 0.999986) bones/3/position = Vector3(-2.01263e-09, 0.202058, -2.51457e-08) -bones/3/rotation = Quaternion(-0.0887967, -0.000279992, 0.00852467, 0.996013) +bones/3/rotation = Quaternion(-0.0986435, -0.000408047, 0.00851862, 0.995086) bones/4/position = Vector3(3.02934e-10, 0.0925562, 3.91155e-08) -bones/4/rotation = Quaternion(0.270076, 1.44128e-08, 9.17163e-08, 0.962839) +bones/4/rotation = Quaternion(0.279031, 1.42965e-08, 9.58451e-08, 0.960282) bones/5/rotation = Quaternion(-0.0948564, -2.80691e-14, -2.26155e-08, 0.995491) -bones/6/rotation = Quaternion(-0.164953, -1.17576e-07, -1.96639e-08, 0.986301) -bones/7/position = Vector3(-2.93098e-08, 0.910297, -0.0481735) +bones/6/rotation = Quaternion(-0.153682, -1.1805e-07, -1.66655e-08, 0.98812) +bones/7/position = Vector3(-3.73163e-08, 0.893464, -0.0481735) bones/7/rotation = Quaternion(-0.0863677, -0.751104, -0.383052, 0.530711) -bones/8/position = Vector3(-7.07406e-08, 0.910297, -0.0481735) +bones/8/position = Vector3(-6.46306e-08, 0.893464, -0.0481735) bones/8/rotation = Quaternion(-0.0863677, 0.751104, 0.383052, 0.530711) -bones/9/position = Vector3(0.131144, 0.976502, -0.0351291) -bones/9/rotation = Quaternion(0.994278, 0.0202311, -0.0312563, 0.100123) +bones/9/position = Vector3(0.131144, 0.959669, -0.0351291) +bones/9/rotation = Quaternion(0.992629, 0.0210668, -0.0308582, 0.115292) bones/10/position = Vector3(-2.36129e-08, 0.26601, -2.14789e-08) bones/10/rotation = Quaternion(-3.13921e-08, -0.000695086, 1.20449e-08, 1) bones/11/position = Vector3(-4.6306e-08, 0.26601, 2.42145e-08) -bones/11/rotation = Quaternion(0.394375, -0.000694897, 0.000298346, 0.918949) +bones/11/rotation = Quaternion(0.428685, -0.000700655, 0.000332591, 0.903454) bones/12/position = Vector3(3.05151e-08, 0.22603, 5.03768e-08) bones/12/rotation = Quaternion(-8.19226e-09, -0.00710644, 4.16102e-08, 0.999975) bones/13/position = Vector3(-2.95495e-08, 0.22603, 2.68392e-09) -bones/13/rotation = Quaternion(-0.74048, 0.0118444, 0.0243594, 0.671533) +bones/13/rotation = Quaternion(-0.755242, 0.0118989, 0.0244239, 0.654882) bones/14/position = Vector3(-3.05481e-08, 0.139877, 1.64787e-08) bones/14/rotation = Quaternion(-9.66743e-05, 0.967474, -0.252972, -0.000383447) -bones/15/position = Vector3(-0.131144, 0.976502, -0.0351291) -bones/15/rotation = Quaternion(0.975849, -0.00527174, 0.0276762, 0.216623) +bones/15/position = Vector3(-0.131144, 0.959669, -0.0351291) +bones/15/rotation = Quaternion(0.972276, -0.00595415, 0.0272024, 0.232174) bones/16/position = Vector3(-1.10042e-08, 0.265705, -3.31989e-08) bones/16/rotation = Quaternion(-3.43227e-08, 0.00314323, 8.33075e-10, 0.999995) bones/17/position = Vector3(1.83545e-08, 0.265705, 6.98543e-10) -bones/17/rotation = Quaternion(0.420637, 0.00315186, -0.00146145, 0.907222) +bones/17/rotation = Quaternion(0.452199, 0.00333857, -0.00169272, 0.891909) bones/18/position = Vector3(1.2807e-08, 0.225719, -8.28774e-09) bones/18/rotation = Quaternion(-2.29017e-08, -0.00785732, 3.30149e-08, 0.999969) bones/19/position = Vector3(-1.27748e-08, 0.225719, 1.12004e-08) -bones/19/rotation = Quaternion(-0.677933, -0.0281373, -0.00146106, 0.734584) +bones/19/rotation = Quaternion(-0.691654, -0.0282109, -0.000485535, 0.721678) bones/20/position = Vector3(-1.30142e-08, 0.139877, -2.77457e-09) bones/20/rotation = Quaternion(-9.96472e-05, 0.967461, -0.253021, -0.000383039) -bones/21/position = Vector3(0.0251286, 1.43996, 0.0472612) -bones/21/rotation = Quaternion(-0.47024, -0.267348, -0.41695, 0.730447) -bones/22/position = Vector3(0.19147, 1.47876, -0.00986401) -bones/22/rotation = Quaternion(0.0209388, -0.164068, 0.975492, -0.145118) +bones/21/position = Vector3(0.0251286, 1.42378, 0.0411122) +bones/21/rotation = Quaternion(-0.49895, -0.255619, -0.395929, 0.727288) +bones/22/position = Vector3(0.187703, 1.46001, -0.0274246) +bones/22/rotation = Quaternion(0.0571877, -0.15856, 0.974039, -0.151117) bones/23/position = Vector3(-5.41331e-09, 0.143946, -2.98023e-08) -bones/23/rotation = Quaternion(8.3167e-08, -0.0393034, 1.72858e-08, 0.999227) +bones/23/rotation = Quaternion(9.53832e-08, -0.0099599, 3.09824e-08, 0.99995) bones/24/position = Vector3(-6.33301e-08, 0.143946, 4.3873e-08) -bones/24/rotation = Quaternion(0.352208, -0.0394214, -0.0219897, 0.934833) +bones/24/rotation = Quaternion(0.285236, -0.00996051, -0.0172099, 0.958251) bones/25/position = Vector3(1.30385e-08, 0.127601, 6.51926e-09) bones/25/rotation = Quaternion(1.49943e-07, -1.20606e-07, 9.91859e-08, 1) bones/26/position = Vector3(2.06034e-08, 0.127601, 2.42761e-08) @@ -119,14 +119,14 @@ bones/42/rotation = Quaternion(-0.120913, 0.799109, 0.0358921, 0.587807) bones/43/rotation = Quaternion(0.498693, -0.0202705, -0.0256953, 0.866161) bones/44/rotation = Quaternion(0.715385, 0.035306, 0.0573145, 0.695481) bones/45/rotation = Quaternion(-0.129059, 0.728936, -0.0250259, 0.67184) -bones/46/position = Vector3(-0.0113635, 1.43996, 0.0472612) -bones/46/rotation = Quaternion(-0.470567, 0.264803, 0.415772, 0.731833) -bones/47/position = Vector3(-0.177371, 1.47902, -0.0106735) -bones/47/rotation = Quaternion(-0.0102614, -0.147777, 0.976059, 0.159264) +bones/46/position = Vector3(-0.0113635, 1.42378, 0.0411122) +bones/46/rotation = Quaternion(-0.522324, 0.208091, 0.3633, 0.742892) +bones/47/position = Vector3(-0.163825, 1.46028, -0.0475648) +bones/47/rotation = Quaternion(-0.0928796, -0.13376, 0.971684, 0.171206) bones/48/position = Vector3(1.88476e-07, 0.143946, 1.02445e-08) -bones/48/rotation = Quaternion(-1.69808e-08, 0.0574389, 1.36994e-08, 0.998349) +bones/48/rotation = Quaternion(-3.50108e-08, 0.00150091, -6.22347e-08, 0.999999) bones/49/position = Vector3(6.5191e-09, 0.143946, -1.95094e-08) -bones/49/rotation = Quaternion(0.392952, 0.0574393, 0.0278798, 0.91734) +bones/49/rotation = Quaternion(0.316005, 0.00150125, 0.0287075, 0.948322) bones/50/position = Vector3(-1.48779e-07, 0.1276, 5.9139e-08) bones/50/rotation = Quaternion(-8.73115e-08, 2.7474e-08, -1.28057e-07, 1) bones/51/position = Vector3(1.9461e-07, 0.127601, 6.06248e-08) @@ -152,19 +152,19 @@ bones/67/rotation = Quaternion(0.108364, -0.768224, 0.166291, 0.608635) bones/68/rotation = Quaternion(0.629954, 0.0295149, 0.0177509, 0.775869) bones/69/rotation = Quaternion(0.816678, -0.0439534, -0.0509861, 0.573155) bones/70/rotation = Quaternion(-0.12906, -0.728937, 0.0250258, 0.67184) -bones/71/position = Vector3(0.127191, 1.36091, -0.0244423) -bones/71/rotation = Quaternion(2.03166e-08, 0.598303, 0.80127, -4.58502e-08) -bones/72/position = Vector3(-0.113426, 1.36091, -0.0244423) -bones/72/rotation = Quaternion(2.03167e-08, 0.598303, 0.80127, -4.58501e-08) +bones/71/position = Vector3(0.127191, 1.34164, -0.0268338) +bones/71/rotation = Quaternion(1.90554e-08, 0.616731, 0.787174, -4.65543e-08) +bones/72/position = Vector3(-0.113426, 1.34164, -0.0268338) +bones/72/rotation = Quaternion(1.90555e-08, 0.616731, 0.787174, -4.65542e-08) [node name="RightHandBone" parent="RigPivot/Rig" index="2"] -transform = Transform3D(-0.962344, -0.270799, -0.0237168, 0.221117, -0.830557, 0.511158, -0.158119, 0.486665, 0.859159, -0.351187, 1.01269, 0.0302155) +transform = Transform3D(-0.962344, -0.270799, -0.0237172, 0.245247, -0.902541, 0.353942, -0.117253, 0.334797, 0.934967, -0.337641, 0.975371, -0.0443394) [node name="LeftHandBone" parent="RigPivot/Rig" index="3"] -transform = Transform3D(-0.970555, 0.238961, 0.0303579, -0.208634, -0.896912, 0.389898, 0.120399, 0.372084, 0.920357, 0.348243, 0.995264, -0.00716963) +transform = Transform3D(-0.970514, 0.239107, 0.030522, -0.224293, -0.942171, 0.249014, 0.0882979, 0.234825, 0.968019, 0.344513, 0.964664, -0.0589395) [node name="RayAttachment" type="BoneAttachment3D" parent="RigPivot/Rig"] -transform = Transform3D(-0.962344, -0.270799, -0.0237168, 0.221117, -0.830557, 0.511158, -0.158119, 0.486665, 0.859159, -0.351187, 1.01269, 0.0302155) +transform = Transform3D(-0.962344, -0.270799, -0.0237172, 0.245247, -0.902541, 0.353942, -0.117253, 0.334797, 0.934967, -0.337641, 0.975371, -0.0443394) bone_name = "DEF-hand.R" bone_idx = 51 use_external_skeleton = true diff --git a/src/scenes/characters/rig.tscn b/src/scenes/characters/rig.tscn index 86da21e..cd8dcfc 100644 --- a/src/scenes/characters/rig.tscn +++ b/src/scenes/characters/rig.tscn @@ -83,53 +83,53 @@ script = ExtResource("1_n80wy") [node name="CharacterRig" parent="." instance=ExtResource("2_ow4sk")] [node name="Skeleton3D" parent="CharacterRig/GameRig" index="0"] -bones/0/position = Vector3(3.18103e-15, 0.896159, -0.0481736) +bones/0/position = Vector3(4.44089e-15, 0.911233, -0.0481736) bones/0/rotation = Quaternion(0.12582, 1.18262e-07, 1.49989e-08, 0.992053) bones/1/rotation = Quaternion(-0.0566577, -0.00072973, -0.0117082, 0.998325) bones/2/position = Vector3(3.20474e-09, 0.146689, -1.95578e-08) -bones/2/rotation = Quaternion(-0.00244136, -0.000425799, 0.00321497, 0.999992) +bones/2/rotation = Quaternion(0.00731323, -0.000267702, 0.00321092, 0.999968) bones/3/position = Vector3(-2.01263e-09, 0.202058, -2.51457e-08) -bones/3/rotation = Quaternion(-0.0970311, -0.000387092, 0.00851971, 0.995245) +bones/3/rotation = Quaternion(-0.0881702, -0.000271837, 0.00852504, 0.996069) bones/4/position = Vector3(3.02934e-10, 0.0925562, 3.91155e-08) -bones/4/rotation = Quaternion(0.277594, 1.51297e-08, 9.23727e-08, 0.960698) +bones/4/rotation = Quaternion(0.269551, 1.43871e-08, 9.15867e-08, 0.962986) bones/5/rotation = Quaternion(-0.0948564, -2.80691e-14, -2.26155e-08, 0.995491) -bones/6/rotation = Quaternion(-0.155497, -1.17852e-07, -1.794e-08, 0.987836) -bones/7/position = Vector3(-2.24072e-08, 0.896159, -0.0481735) +bones/6/rotation = Quaternion(-0.165611, -1.17563e-07, -1.97424e-08, 0.986191) +bones/7/position = Vector3(-4.38519e-08, 0.911233, -0.0481734) bones/7/rotation = Quaternion(-0.0863677, -0.751104, -0.383052, 0.530711) -bones/8/position = Vector3(-3.50941e-08, 0.896159, -0.0481735) +bones/8/position = Vector3(-3.68681e-08, 0.911233, -0.0481735) bones/8/rotation = Quaternion(-0.0863677, 0.751104, 0.383052, 0.530711) -bones/9/position = Vector3(0.131144, 0.962364, -0.0351291) -bones/9/rotation = Quaternion(0.99289, 0.0209383, -0.030918, 0.113029) +bones/9/position = Vector3(0.131144, 0.977437, -0.0351291) +bones/9/rotation = Quaternion(0.994353, 0.0201915, -0.0312755, 0.0993843) bones/10/position = Vector3(-2.36129e-08, 0.26601, -2.14789e-08) bones/10/rotation = Quaternion(-3.13921e-08, -0.000695086, 1.20449e-08, 1) bones/11/position = Vector3(-4.6306e-08, 0.26601, 2.42145e-08) -bones/11/rotation = Quaternion(0.423501, -0.000700628, 0.0003277, 0.905895) +bones/11/rotation = Quaternion(0.392666, -0.000694321, 0.000296553, 0.919681) bones/12/position = Vector3(3.05151e-08, 0.22603, 5.03768e-08) bones/12/rotation = Quaternion(-8.19226e-09, -0.00710644, 4.16102e-08, 0.999975) bones/13/position = Vector3(-2.95495e-08, 0.22603, 2.68392e-09) -bones/13/rotation = Quaternion(-0.753007, 0.0118907, 0.0244117, 0.657452) +bones/13/rotation = Quaternion(-0.739767, 0.0118418, 0.0243569, 0.672317) bones/14/position = Vector3(-3.05481e-08, 0.139877, 1.64787e-08) bones/14/rotation = Quaternion(-9.66743e-05, 0.967474, -0.252972, -0.000383447) -bones/15/position = Vector3(-0.131144, 0.962364, -0.0351291) -bones/15/rotation = Quaternion(0.972863, -0.00584493, 0.0272785, 0.229695) +bones/15/position = Vector3(-0.131144, 0.977437, -0.0351291) +bones/15/rotation = Quaternion(0.976047, -0.00523272, 0.0277032, 0.215728) bones/16/position = Vector3(-1.10042e-08, 0.265705, -3.31989e-08) bones/16/rotation = Quaternion(-3.43227e-08, 0.00314323, 8.33075e-10, 0.999995) bones/17/position = Vector3(1.83545e-08, 0.265705, 6.98543e-10) -bones/17/rotation = Quaternion(0.447349, 0.0033099, -0.00165571, 0.894352) +bones/17/rotation = Quaternion(0.419096, 0.00314277, -0.00145078, 0.907936) bones/18/position = Vector3(1.2807e-08, 0.225719, -8.28774e-09) bones/18/rotation = Quaternion(-2.29017e-08, -0.00785732, 3.30149e-08, 0.999969) bones/19/position = Vector3(-1.27748e-08, 0.225719, 1.12004e-08) -bones/19/rotation = Quaternion(-0.68954, -0.0281998, -0.000637929, 0.723698) +bones/19/rotation = Quaternion(-0.677213, -0.0281333, -0.00151136, 0.735248) bones/20/position = Vector3(-1.30142e-08, 0.139877, -2.77457e-09) bones/20/rotation = Quaternion(-9.96472e-05, 0.967461, -0.253021, -0.000383039) -bones/21/position = Vector3(0.0251286, 1.42641, 0.0421057) -bones/21/rotation = Quaternion(-0.494312, -0.257575, -0.399305, 0.727919) -bones/22/position = Vector3(0.188352, 1.46314, -0.0245945) -bones/22/rotation = Quaternion(0.0513757, -0.159459, 0.974363, -0.150169) +bones/21/position = Vector3(0.0251286, 1.44069, 0.0475399) +bones/21/rotation = Quaternion(-0.468898, -0.267874, -0.417939, 0.730551) +bones/22/position = Vector3(0.191644, 1.47967, -0.00897597) +bones/22/rotation = Quaternion(0.0192294, -0.164322, 0.975527, -0.144831) bones/23/position = Vector3(-5.41331e-09, 0.143946, -2.98023e-08) -bones/23/rotation = Quaternion(5.49464e-08, -0.0147167, 4.65886e-08, 0.999892) +bones/23/rotation = Quaternion(6.45653e-08, -0.0407757, -6.74542e-08, 0.999168) bones/24/position = Vector3(-6.33301e-08, 0.143946, 4.3873e-08) -bones/24/rotation = Quaternion(0.29617, -0.0147174, -0.0180703, 0.954851) +bones/24/rotation = Quaternion(0.355288, -0.0407963, -0.0221793, 0.933603) bones/25/position = Vector3(1.30385e-08, 0.127601, 6.51926e-09) bones/25/rotation = Quaternion(1.49943e-07, -1.20606e-07, 9.91859e-08, 1) bones/26/position = Vector3(2.06034e-08, 0.127601, 2.42761e-08) @@ -154,14 +154,14 @@ bones/42/rotation = Quaternion(-0.120913, 0.799109, 0.0358921, 0.587807) bones/43/rotation = Quaternion(0.498693, -0.0202705, -0.0256953, 0.866161) bones/44/rotation = Quaternion(0.715385, 0.035306, 0.0573145, 0.695481) bones/45/rotation = Quaternion(-0.129059, 0.728936, -0.0250259, 0.67184) -bones/46/position = Vector3(-0.0113635, 1.42641, 0.0421056) -bones/46/rotation = Quaternion(-0.514014, 0.21743, 0.371846, 0.741784) -bones/47/position = Vector3(-0.166361, 1.46355, -0.041768) -bones/47/rotation = Quaternion(-0.0796176, -0.136082, 0.972861, 0.169366) +bones/46/position = Vector3(-0.0113635, 1.44069, 0.0475399) +bones/46/rotation = Quaternion(-0.468138, 0.267383, 0.418196, 0.731071) +bones/47/position = Vector3(-0.177868, 1.47979, -0.00892575) +bones/47/rotation = Quaternion(-0.00637871, -0.14841, 0.976092, 0.158675) bones/48/position = Vector3(1.88476e-07, 0.143946, 1.02445e-08) -bones/48/rotation = Quaternion(-1.32489e-08, 0.0105782, -3.48093e-08, 0.999944) +bones/48/rotation = Quaternion(-1.95822e-07, 0.059992, -1.87386e-07, 0.998199) bones/49/position = Vector3(6.5191e-09, 0.143946, -1.95094e-08) -bones/49/rotation = Quaternion(0.328598, 0.0105787, 0.0289164, 0.943968) +bones/49/rotation = Quaternion(0.396474, 0.06003, 0.0277139, 0.915662) bones/50/position = Vector3(-1.48779e-07, 0.1276, 5.9139e-08) bones/50/rotation = Quaternion(-8.73115e-08, 2.7474e-08, -1.28057e-07, 1) bones/51/position = Vector3(1.9461e-07, 0.127601, 6.06248e-08) @@ -187,10 +187,10 @@ bones/67/rotation = Quaternion(0.108364, -0.768224, 0.166291, 0.608635) bones/68/rotation = Quaternion(0.629954, 0.0295149, 0.0177509, 0.775869) bones/69/rotation = Quaternion(0.816678, -0.0439534, -0.0509861, 0.573155) bones/70/rotation = Quaternion(-0.12906, -0.728937, 0.0250258, 0.67184) -bones/71/position = Vector3(0.127191, 1.34471, -0.0264612) -bones/71/rotation = Quaternion(1.92581e-08, 0.613781, 0.789477, -4.64458e-08) -bones/72/position = Vector3(-0.113426, 1.34471, -0.0264613) -bones/72/rotation = Quaternion(1.92586e-08, 0.613774, 0.789482, -4.64455e-08) +bones/71/position = Vector3(0.127191, 1.36188, -0.0243187) +bones/71/rotation = Quaternion(2.03741e-08, 0.597458, 0.8019, -4.58164e-08) +bones/72/position = Vector3(-0.113426, 1.36188, -0.0243187) +bones/72/rotation = Quaternion(2.03742e-08, 0.597458, 0.8019, -4.58163e-08) [node name="Knight_01" parent="CharacterRig/GameRig/Skeleton3D" index="0"] visible = false @@ -208,7 +208,7 @@ anim_player = NodePath("../CharacterRig/AnimationPlayer") parameters/MoveSpace/blend_position = -1.0 [node name="RightHandBone" type="BoneAttachment3D" parent="."] -transform = Transform3D(-0.962342, -0.270804, -0.023713, 0.241844, -0.892723, 0.380208, -0.124131, 0.360156, 0.924597, -0.340178, 0.981195, -0.0322447) +transform = Transform3D(-0.96236, -0.270746, -0.0236708, 0.219803, -0.826584, 0.518118, -0.159844, 0.493413, 0.854981, -0.35167, 1.01449, 0.0336347) bone_name = "DEF-hand.R" bone_idx = 51 use_external_skeleton = true @@ -220,13 +220,14 @@ transform = Transform3D(0.16656, 0.0770401, -0.983017, -0.982939, 0.0918653, -0. [node name="longsword" parent="RightHandBone/WeaponSlot" instance=ExtResource("3_dka8l")] [node name="LeftHandBone" type="BoneAttachment3D" parent="."] -transform = Transform3D(-0.970513, 0.239108, 0.0305211, -0.222103, -0.936243, 0.272251, 0.0936726, 0.257444, 0.961742, 0.345163, 0.969359, -0.0504669) +transform = Transform3D(-0.970521, 0.239082, 0.0304942, -0.207845, -0.894272, 0.396332, 0.122026, 0.37831, 0.917601, 0.348448, 0.99686, -0.00473515) bone_name = "DEF-hand.L" bone_idx = 26 use_external_skeleton = true external_skeleton = NodePath("../CharacterRig/GameRig/Skeleton3D") [node name="OffHandSlot" type="Node3D" parent="LeftHandBone"] +unique_name_in_owner = true transform = Transform3D(0.10564, 0.417333, -0.902592, -0.99124, 0.116542, -0.0621291, 0.0792616, 0.90125, 0.425989, -0.084208, -0.04557, -0.025934) [node name="tall_shield" parent="LeftHandBone/OffHandSlot" instance=ExtResource("4_i4vhj")] diff --git a/src/scenes/environment/water.tscn b/src/scenes/environment/water.tscn new file mode 100644 index 0000000..6b5d569 --- /dev/null +++ b/src/scenes/environment/water.tscn @@ -0,0 +1,143 @@ +[gd_scene load_steps=6 format=3 uid="uid://jf0abtmnencg"] + +[sub_resource type="Shader" id="Shader_iudp8"] +code = "// NOTE: Shader automatically converted from Godot Engine 4.4.1.stable's StandardMaterial3D. + +shader_type spatial; +render_mode blend_mix, depth_draw_always, cull_back, diffuse_burley, specular_schlick_ggx; + +uniform vec4 albedo : source_color; +uniform sampler2D texture_albedo : source_color, filter_linear_mipmap, repeat_enable; +uniform ivec2 albedo_texture_size; +uniform float point_size : hint_range(0.1, 128.0, 0.1); + +uniform float roughness : hint_range(0.0, 1.0); +uniform sampler2D texture_metallic : hint_default_white, filter_linear_mipmap, repeat_enable; +uniform vec4 metallic_texture_channel; +uniform sampler2D texture_roughness : hint_roughness_r, filter_linear_mipmap, repeat_enable; + +uniform float specular : hint_range(0.0, 1.0, 0.01); +uniform float metallic : hint_range(0.0, 1.0, 0.01); + +uniform sampler2D texture_refraction : filter_linear_mipmap, repeat_enable; +uniform float refraction : hint_range(-1.0, 1.0, 0.001); +uniform vec4 refraction_texture_channel; +uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_linear_mipmap; +uniform sampler2D depth_texture : hint_depth_texture, repeat_disable, filter_nearest; + +uniform sampler2D texture_normal : hint_roughness_normal, filter_linear_mipmap, repeat_enable; +uniform float normal_scale : hint_range(-16.0, 16.0); +varying vec3 uv1_triplanar_pos; + +uniform float uv1_blend_sharpness : hint_range(0.0, 150.0, 0.001); +varying vec3 uv1_power_normal; + +uniform vec3 uv1_scale; +uniform vec3 uv1_offset; +uniform vec3 uv2_scale; +uniform vec3 uv2_offset; + +void vertex() { + vec3 normal = MODEL_NORMAL_MATRIX * NORMAL; + + TANGENT = vec3(0.0, 0.0, -1.0) * abs(normal.x); + TANGENT += vec3(1.0, 0.0, 0.0) * abs(normal.y); + TANGENT += vec3(1.0, 0.0, 0.0) * abs(normal.z); + TANGENT = inverse(MODEL_NORMAL_MATRIX) * normalize(TANGENT); + + BINORMAL = vec3(0.0, 1.0, 0.0) * abs(normal.x); + BINORMAL += vec3(0.0, 0.0, -1.0) * abs(normal.y); + BINORMAL += vec3(0.0, 1.0, 0.0) * abs(normal.z); + BINORMAL = inverse(MODEL_NORMAL_MATRIX) * normalize(BINORMAL); + + // UV1 Triplanar: Enabled (with World Triplanar) + uv1_power_normal = pow(abs(normal), vec3(uv1_blend_sharpness)); + uv1_triplanar_pos = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz * uv1_scale + uv1_offset + TIME * 0.03; + uv1_power_normal /= dot(uv1_power_normal, vec3(1.0)); + uv1_triplanar_pos *= vec3(1.0, -1.0, 1.0); +} + +vec4 triplanar_texture(sampler2D p_sampler, vec3 p_weights, vec3 p_triplanar_pos) { + vec4 samp = vec4(0.0); + samp += texture(p_sampler, p_triplanar_pos.xy) * p_weights.z; + samp += texture(p_sampler, p_triplanar_pos.xz) * p_weights.y; + samp += texture(p_sampler, p_triplanar_pos.zy * vec2(-1.0, 1.0)) * p_weights.x; + return samp; +} + +void fragment() { + vec4 albedo_tex = triplanar_texture(texture_albedo, uv1_power_normal, uv1_triplanar_pos); + ALBEDO = albedo.rgb * albedo_tex.rgb; + + float metallic_tex = dot(triplanar_texture(texture_metallic, uv1_power_normal, uv1_triplanar_pos), metallic_texture_channel); + METALLIC = metallic_tex * metallic; + SPECULAR = specular; + + vec4 roughness_texture_channel = vec4(1.0, 0.0, 0.0, 0.0); + float roughness_tex = dot(triplanar_texture(texture_roughness, uv1_power_normal, uv1_triplanar_pos), roughness_texture_channel); + ROUGHNESS = roughness_tex * roughness; + + // Normal Map: Enabled + NORMAL_MAP = triplanar_texture(texture_normal, uv1_power_normal, uv1_triplanar_pos).rgb; + NORMAL_MAP_DEPTH = normal_scale; + + // Refraction: Enabled (with normal map texture) + vec3 unpacked_normal = NORMAL_MAP; + unpacked_normal.xy = unpacked_normal.xy * 2.0 - 1.0; + unpacked_normal.z = sqrt(max(0.0, 1.0 - dot(unpacked_normal.xy, unpacked_normal.xy))); + vec3 ref_normal = normalize(mix( + NORMAL, + TANGENT * unpacked_normal.x + BINORMAL * unpacked_normal.y + NORMAL * unpacked_normal.z, + NORMAL_MAP_DEPTH)); + vec2 ref_ofs = SCREEN_UV - ref_normal.xy * dot(triplanar_texture(texture_refraction, uv1_power_normal, uv1_triplanar_pos), refraction_texture_channel) * refraction; + + float ref_amount = 1.0 - albedo.a * albedo_tex.a; + + float refraction_depth_tex = textureLod(depth_texture, ref_ofs, 0.0).r; + vec4 refraction_view_pos = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, refraction_depth_tex, 1.0); + refraction_view_pos.xyz /= refraction_view_pos.w; + + // If the depth buffer is lower then the model's Z position, use the refracted UV, otherwise use the normal screen UV. + // At low depth differences, decrease refraction intensity to avoid sudden discontinuities. + EMISSION += textureLod(screen_texture, mix(SCREEN_UV, ref_ofs, smoothstep(0.0, 1.0, VERTEX.z - refraction_view_pos.z)), ROUGHNESS * 8.0).rgb * ref_amount * EXPOSURE; + ALBEDO *= 1.0 - ref_amount; + // Force transparency on the material (required for refraction). + ALPHA = 1.0; +} +" + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_iudp8"] +noise_type = 3 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_scvh2"] +seamless = true +as_normal_map = true +noise = SubResource("FastNoiseLite_iudp8") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_scvh2"] +render_priority = 0 +shader = SubResource("Shader_iudp8") +shader_parameter/albedo = Color(2.69532e-06, 0.300187, 0.786334, 0.607843) +shader_parameter/albedo_texture_size = Vector2i(0, 0) +shader_parameter/point_size = 1.0 +shader_parameter/roughness = 0.0 +shader_parameter/metallic_texture_channel = Vector4(1, 0, 0, 0) +shader_parameter/specular = 0.5 +shader_parameter/metallic = 0.0 +shader_parameter/texture_refraction = SubResource("NoiseTexture2D_scvh2") +shader_parameter/refraction = 0.05 +shader_parameter/refraction_texture_channel = Vector4(1, 0, 0, 0) +shader_parameter/texture_normal = SubResource("NoiseTexture2D_scvh2") +shader_parameter/normal_scale = 1.0 +shader_parameter/uv1_blend_sharpness = 1.0 +shader_parameter/uv1_scale = Vector3(0.4, 0.4, 0.4) +shader_parameter/uv1_offset = Vector3(0, 0, 0) +shader_parameter/uv2_scale = Vector3(1, 1, 1) +shader_parameter/uv2_offset = Vector3(0, 0, 0) + +[sub_resource type="PlaneMesh" id="PlaneMesh_gkmgd"] +material = SubResource("ShaderMaterial_scvh2") +size = Vector2(2000, 2000) + +[node name="Water" type="MeshInstance3D"] +mesh = SubResource("PlaneMesh_gkmgd") diff --git a/src/scenes/levels/level.tscn b/src/scenes/levels/level.tscn index eb6d2eb..bbbfd5f 100644 --- a/src/scenes/levels/level.tscn +++ b/src/scenes/levels/level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=23 format=3 uid="uid://dw0lbkh31rofd"] +[gd_scene load_steps=28 format=3 uid="uid://dw0lbkh31rofd"] [ext_resource type="Script" uid="uid://bmywk4wvcp0lr" path="res://addons/sky_3d/src/Sky3D.gd" id="1_1jhfv"] [ext_resource type="Texture2D" uid="uid://bpamrp14tk2cp" path="res://assets/textures/terrain/sand_albedo_height.png" id="1_7iny7"] @@ -8,8 +8,13 @@ [ext_resource type="PackedScene" uid="uid://b1fe4n68iivfm" path="res://assets/models/environment/rock_cliff_env_03.glb" id="2_d2tjv"] [ext_resource type="Script" uid="uid://27fj74ofndim" path="res://addons/sky_3d/src/Skydome.gd" id="2_juj6f"] [ext_resource type="Script" uid="uid://bm0hx4mklpml" path="res://addons/sky_3d/src/TimeOfDay.gd" id="3_0eo66"] +[ext_resource type="PackedScene" uid="uid://cc8f6ggvpabbi" path="res://assets/models/environment/wall_stone_gate_bldg_01.glb" id="5_0eo66"] +[ext_resource type="PackedScene" uid="uid://blv7opxftdc6o" path="res://assets/models/environment/stone_wall_bldg_04.glb" id="6_dn2un"] [ext_resource type="PackedScene" uid="uid://cwvrti8hmxj0k" path="res://src/scenes/characters/enemy.tscn" id="6_uvsco"] +[ext_resource type="PackedScene" uid="uid://dqkuaw84gl1t2" path="res://assets/models/environment/turret_square_bldg_02.glb" id="7_7iny7"] +[ext_resource type="PackedScene" uid="uid://dv1316xdw1rxm" path="res://assets/models/environment/house_modular_01.glb" id="8_cxs0p"] [ext_resource type="PackedScene" uid="uid://6dmbuecqolod" path="res://src/scenes/structures/fire_pit.tscn" id="10_juj6f"] +[ext_resource type="PackedScene" uid="uid://jf0abtmnencg" path="res://src/scenes/environment/water.tscn" id="15_0slur"] [sub_resource type="Gradient" id="Gradient_0eo66"] offsets = PackedFloat32Array(0.2, 1) @@ -104,10 +109,14 @@ sky_material = SubResource("PhysicalSkyMaterial_dn2un") background_mode = 2 sky = SubResource("Sky_7iny7") ambient_light_source = 3 -ambient_light_color = Color(1, 1, 1, 1) +ambient_light_color = Color(0.778033, 0.693529, 0.651185, 1) reflected_light_source = 2 tonemap_mode = 3 tonemap_white = 6.0 +ssr_enabled = true +ssao_enabled = true +ssil_enabled = true +sdfgi_enabled = true [sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_0slur"] auto_exposure_scale = 0.2 @@ -127,20 +136,54 @@ metadata/_edit_lock_ = true [node name="FirePit" parent="NavigationRegion3D" instance=ExtResource("10_juj6f")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.96342, 89.7915, 3.24593) +[node name="Castle" type="Node3D" parent="NavigationRegion3D"] + +[node name="wall_stone_gate_bldg_01" parent="NavigationRegion3D/Castle" instance=ExtResource("5_0eo66")] +transform = Transform3D(0.749869, 0, -0.661587, 0, 1, 0, 0.661587, 0, 0.749869, 27.1497, 94.5546, -36.3422) + +[node name="stone_wall_bldg_04" parent="NavigationRegion3D/Castle/wall_stone_gate_bldg_01" instance=ExtResource("6_dn2un")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.26476, 0, -0.0166817) + +[node name="stone_wall_bldg_05" parent="NavigationRegion3D/Castle/wall_stone_gate_bldg_01" instance=ExtResource("6_dn2un")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.7805, 0.0131226, -0.040226) + +[node name="stone_wall_bldg_06" parent="NavigationRegion3D/Castle/wall_stone_gate_bldg_01" instance=ExtResource("6_dn2un")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.8046, 0.0131226, -0.122562) + +[node name="stone_wall_bldg_07" parent="NavigationRegion3D/Castle/wall_stone_gate_bldg_01" instance=ExtResource("6_dn2un")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.7101, 0.0131226, -0.132374) + +[node name="stone_wall_bldg_08" parent="NavigationRegion3D/Castle/wall_stone_gate_bldg_01" instance=ExtResource("6_dn2un")] +transform = Transform3D(0.958048, 0, 0.286608, 0, 1, 0, -0.286608, 0, 0.958048, -26.8721, 0.0131226, 2.09649) + +[node name="turret_square_bldg_02" parent="NavigationRegion3D/Castle/wall_stone_gate_bldg_01" instance=ExtResource("7_7iny7")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.0896, -1, 0.0723419) + +[node name="turret_square_bldg_03" parent="NavigationRegion3D/Castle/wall_stone_gate_bldg_01" instance=ExtResource("7_7iny7")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.0602, -1, 0.465519) + +[node name="house_modular_01" parent="NavigationRegion3D/Castle" instance=ExtResource("8_cxs0p")] +transform = Transform3D(0.93598, 0, -0.352054, 0, 1, 0, 0.352054, 0, 0.93598, 45.6923, 94.5589, -70.1131) + +[node name="house_modular_02" parent="NavigationRegion3D/Castle" instance=ExtResource("8_cxs0p")] +transform = Transform3D(0.611071, 0, -0.791576, 0, 1, 0, 0.791576, 0, 0.611071, 55.9864, 94.5589, -60.0366) + [node name="Sky3D" type="WorldEnvironment" parent="."] environment = SubResource("Environment_cxs0p") camera_attributes = SubResource("CameraAttributesPractical_0slur") script = ExtResource("1_1jhfv") -current_time = 10.22 +current_time = 8.09 reflected_energy = 4.0 metadata/_custom_type_script = "uid://bmywk4wvcp0lr" [node name="SunLight" type="DirectionalLight3D" parent="Sky3D"] -transform = Transform3D(0, -0.924881, 0.380257, 0.657259, 0.286586, 0.69705, -0.753664, 0.249928, 0.607887, 0.380257, 0.69705, 0.607887) +transform = Transform3D(0, -0.643122, 0.765763, 0.80479, 0.454526, 0.381731, -0.593559, 0.616279, 0.517579, 0.765763, 0.381731, 0.517579) +light_color = Color(0.995269, 0.887171, 0.833004, 1) shadow_enabled = true +directional_shadow_blend_splits = true [node name="MoonLight" type="DirectionalLight3D" parent="Sky3D"] -transform = Transform3D(0, -0.570079, -0.82159, -0.5765, -0.671319, 0.46581, -0.817097, 0.473646, -0.328651, -0.82159, 0.46581, -0.32865) +transform = Transform3D(0, -0.563293, -0.826257, -0.588864, -0.667808, 0.455272, -0.808232, 0.486553, -0.331703, -0.826257, 0.455272, -0.331703) light_color = Color(0.572549, 0.776471, 0.956863, 1) light_energy = 0.0 shadow_enabled = true @@ -155,8 +198,8 @@ ground_color = Color(0.3, 0.3, 0.3, 1) sky_layers = 4 sky_render_priority = -128 horizon_level = 0.0 -sun_altitude = -45.8092 -sun_azimuth = -147.972 +sun_altitude = -67.559 +sun_azimuth = -124.055 sun_disk_color = Color(0.996094, 0.541334, 0.140076, 1) sun_disk_intensity = 2.0 sun_disk_size = 0.015 @@ -164,8 +207,8 @@ sun_light_path = NodePath("../SunLight") sun_light_color = Color(1, 1, 1, 1) sun_horizon_light_color = Color(0.98, 0.523, 0.294, 1) sun_light_energy = 1.0 -moon_altitude = -123.831 -moon_azimuth = -318.772 +moon_altitude = -99.7047 +moon_azimuth = -301.311 moon_color = Color(1, 1, 1, 1) moon_size = 0.07 enable_set_moon_texture = false @@ -173,7 +216,7 @@ moon_resolution = 2 moon_light_path = NodePath("../MoonLight") moon_light_color = Color(0.572549, 0.776471, 0.956863, 1) moon_light_energy = 0.3 -deep_space_euler = Vector3(1.29154, -3.14159, 1.81522) +deep_space_euler = Vector3(1.29154, 3.14159, 2.37438) background_color = Color(0.709804, 0.709804, 0.709804, 0.854902) set_background_texture = false stars_field_color = Color(1, 1, 1, 1) @@ -242,7 +285,7 @@ update_in_editor = false dome_path = NodePath("../Skydome") system_sync = false total_cycle_in_minutes = 15.0 -total_hours = 10.22 +total_hours = 8.09 day = 1 month = 1 year = 2025 @@ -287,7 +330,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.5823, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.2971, 0, 0) [node name="RockWall3" parent="MapBoundary" instance=ExtResource("2_d2tjv")] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 47.4902, -9.93174, 3.70717) +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 44.2159, -9.93174, 1.0728) [node name="rock_cliff_env_04" parent="MapBoundary/RockWall3" instance=ExtResource("2_d2tjv")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.8124, 0, 20.4483) @@ -321,3 +364,7 @@ transform = Transform3D(0.135871, 0, -0.990727, 0, 1, 0, 0.990727, 0, 0.135871, [node name="Enemy8" parent="Enemies" instance=ExtResource("6_uvsco")] transform = Transform3D(0.971759, 0, 0.235973, 0, 1, 0, -0.235973, 0, 0.971759, -8.27889, -2.71064, -26.4981) + +[node name="Water" parent="." instance=ExtResource("15_0slur")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 87.9142, 0) +visible = false diff --git a/src/scripts/characters/enemy.gd b/src/scripts/characters/enemy.gd index 71a45ab..d9733be 100644 --- a/src/scripts/characters/enemy.gd +++ b/src/scripts/characters/enemy.gd @@ -7,6 +7,7 @@ const RUN_VELOCITY_THRESHOLD: float = 2.0 @export var damage: float = 20.0 @export var crit_chance: float = 0.05 @export var speed: float = 5.0 +@export var off_hand_items: Array[PackedScene] @onready var rig: Node3D = $Rig @onready var health_component: HealthComponent = $HealthComponent @@ -19,6 +20,7 @@ const RUN_VELOCITY_THRESHOLD: float = 2.0 func _ready() -> void: var mesh = rig.villager_meshes.pick_random() rig.set_active_mesh(mesh) + rig.equip_offhand(off_hand_items.pick_random()) health_component.update_max_health(max_health) func _physics_process(delta: float) -> void: diff --git a/src/scripts/characters/rig.gd b/src/scripts/characters/rig.gd index aa079fe..d20ff00 100644 --- a/src/scripts/characters/rig.gd +++ b/src/scripts/characters/rig.gd @@ -7,6 +7,7 @@ signal heavy_attack() @onready var animation_tree: AnimationTree = $AnimationTree @onready var playback: AnimationNodeStateMachinePlayback = animation_tree["parameters/playback"] @onready var skeleton_3d: Skeleton3D = $CharacterRig/GameRig/Skeleton3D +@onready var off_hand_slot: Node3D = %OffHandSlot @onready var villager_meshes: Array[MeshInstance3D] = [ $CharacterRig/GameRig/Skeleton3D/Villager_01, $CharacterRig/GameRig/Skeleton3D/Villager_02 @@ -46,6 +47,12 @@ func set_active_mesh(active_mesh: MeshInstance3D) -> void: child.visible = false active_mesh.visible = true +func equip_offhand(equipment_scene: PackedScene) -> void: + for child in off_hand_slot.get_children(): + child.queue_free() + var new_equipment = equipment_scene.instantiate() + off_hand_slot.add_child(new_equipment) + func _on_animation_tree_animation_finished(anim_name: StringName) -> void: if anim_name == "Overhead": heavy_attack.emit()