generated from krampus/template-godot4
This commit is contained in:
parent
0a6c9807ec
commit
e39066e978
BIN
asset_dev/level/airlock/floor_mask.xcf
Normal file
BIN
asset_dev/level/airlock/floor_mask.xcf
Normal file
Binary file not shown.
BIN
assets/black.png
(Stored with Git LFS)
Normal file
BIN
assets/black.png
(Stored with Git LFS)
Normal file
Binary file not shown.
35
assets/black.png.import
Normal file
35
assets/black.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cm1jrvx7ftx4c"
|
||||
path.s3tc="res://.godot/imported/black.png-0c928088330c4cddf9e28b960b6ccae3.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/black.png"
|
||||
dest_files=["res://.godot/imported/black.png-0c928088330c4cddf9e28b960b6ccae3.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
assets/materials/grunk_jittery.material
Normal file
BIN
assets/materials/grunk_jittery.material
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
assets/particles/splatter_1.png
(Stored with Git LFS)
Normal file
BIN
assets/particles/splatter_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
35
assets/particles/splatter_1.png.import
Normal file
35
assets/particles/splatter_1.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bhoai6xv53tqm"
|
||||
path.s3tc="res://.godot/imported/splatter_1.png-9809720e1943a4aa83ecfb22feeb83c2.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/particles/splatter_1.png"
|
||||
dest_files=["res://.godot/imported/splatter_1.png-9809720e1943a4aa83ecfb22feeb83c2.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
assets/particles/splatter_2.png
(Stored with Git LFS)
Normal file
BIN
assets/particles/splatter_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/particles/splatter_2.png.import
Normal file
34
assets/particles/splatter_2.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cgwgmxwjgwbwr"
|
||||
path="res://.godot/imported/splatter_2.png-9990293bc035c8e51b6c307a177f51f7.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/particles/splatter_2.png"
|
||||
dest_files=["res://.godot/imported/splatter_2.png-9990293bc035c8e51b6c307a177f51f7.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
BIN
levels/ghost_ship/airlock/floor_mask.png
(Stored with Git LFS)
Normal file
BIN
levels/ghost_ship/airlock/floor_mask.png
(Stored with Git LFS)
Normal file
Binary file not shown.
35
levels/ghost_ship/airlock/floor_mask.png.import
Normal file
35
levels/ghost_ship/airlock/floor_mask.png.import
Normal file
@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dthjo3ymo7say"
|
||||
path.s3tc="res://.godot/imported/floor_mask.png-1a0b0eeca154b970656cd809641fb147.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://levels/ghost_ship/airlock/floor_mask.png"
|
||||
dest_files=["res://.godot/imported/floor_mask.png-1a0b0eeca154b970656cd809641fb147.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
@ -1,8 +1,9 @@
|
||||
[gd_scene load_steps=110 format=4 uid="uid://crydi5cjgfwe5"]
|
||||
[gd_scene load_steps=112 format=4 uid="uid://crydi5cjgfwe5"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://oowut88kr2ox" path="res://levels/ghost_ship/player_ship/player_ship.tscn" id="1_2pyr1"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="2_2egij"]
|
||||
[ext_resource type="Texture2D" uid="uid://c0a6flcoixsr2" path="res://assets/level/floor/floor_1_C.png" id="3_1chi6"]
|
||||
[ext_resource type="Texture2D" uid="uid://dthjo3ymo7say" path="res://levels/ghost_ship/airlock/floor_mask.png" id="3_35kna"]
|
||||
[ext_resource type="Texture2D" uid="uid://dxuxhlycaamcy" path="res://assets/level/floor/floor_1_M.png" id="4_3ryvr"]
|
||||
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="5_1njh5"]
|
||||
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_3kphg"]
|
||||
@ -21,6 +22,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://ckgmc6j7r0rh1" path="res://assets/level/t-junction/t-junction_2_C.png" id="18_qu6vm"]
|
||||
[ext_resource type="Texture2D" uid="uid://cjbem2fg50idh" path="res://assets/level/t-junction/t-junction_1_C.png" id="18_sqa4l"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgsvlb8qc5yml" path="res://assets/level/t-junction/t-junction_1_M.png" id="19_17ivy"]
|
||||
[ext_resource type="PackedScene" uid="uid://2yqi5u5eo025" path="res://src/world/gunk_node/grunk_nodule.tscn" id="19_ji5cn"]
|
||||
[ext_resource type="Texture2D" uid="uid://ckhslm3gb3xsk" path="res://assets/level/t-junction/t-junction_2_M.png" id="19_v8y1j"]
|
||||
[ext_resource type="Texture2D" uid="uid://c3nw2htq0gmit" path="res://assets/level/t-junction/t-junction_2_N.png" id="20_54or8"]
|
||||
[ext_resource type="Texture2D" uid="uid://dt4olb3vehawo" path="res://assets/level/t-junction/t-junction_1_N.png" id="20_ji5cn"]
|
||||
@ -68,6 +70,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d1yty"]
|
||||
resource_local_to_scene = true
|
||||
@ -132,6 +138,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qu6vm"]
|
||||
resource_local_to_scene = true
|
||||
@ -231,6 +241,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"]
|
||||
resource_local_to_scene = true
|
||||
@ -294,6 +308,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ruwlj"]
|
||||
resource_local_to_scene = true
|
||||
@ -340,6 +358,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_rlaob"]
|
||||
load_path = "res://.godot/imported/hallway_1_C.png-9a126edbc39655070332e0af1a5ee780.ctex"
|
||||
@ -414,6 +436,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_okeuk"]
|
||||
albedo_texture = ExtResource("18_sqa4l")
|
||||
@ -476,6 +502,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_j0yby"]
|
||||
load_path = "res://.godot/imported/hallway_3_C.png-9b45a5b023d4947b4c559574fc3e621c.ctex"
|
||||
@ -547,6 +577,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lfacn"]
|
||||
albedo_texture = SubResource("CompressedTexture2D_rlaob")
|
||||
@ -606,6 +640,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54end"]
|
||||
transparency = 2
|
||||
@ -687,6 +725,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_ji5cn")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_35kna")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_4a0u4")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sqa4l"]
|
||||
resource_local_to_scene = true
|
||||
@ -750,6 +792,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_rp2qp")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_if0c2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_2pd8h")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_2h3rs"]
|
||||
load_path = "res://.godot/imported/hallway_2_C.png-368e035781dbfc292f80210e8377e1f9.ctex"
|
||||
@ -812,6 +858,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.75)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -12)
|
||||
|
||||
[node name="Floor" parent="Airlock" instance=ExtResource("2_2egij")]
|
||||
initial_mask = ExtResource("3_35kna")
|
||||
source_gunk_material = SubResource("ShaderMaterial_sqa4l")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Floor"]
|
||||
@ -822,7 +869,8 @@ skeleton = NodePath("../..")
|
||||
shape = SubResource("ConcavePolygonShape3D_yvipw")
|
||||
|
||||
[node name="Ceiling" parent="Airlock" instance=ExtResource("2_2egij")]
|
||||
transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 3, 0)
|
||||
transform = Transform3D(-1, -7.64274e-15, 8.74228e-08, 0, -1, -8.74228e-08, 8.74228e-08, -8.74228e-08, 1, 0, 3, 0)
|
||||
initial_mask = ExtResource("3_35kna")
|
||||
source_gunk_material = SubResource("ShaderMaterial_17ivy")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Ceiling"]
|
||||
@ -923,6 +971,16 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 1.5, 0.1)
|
||||
|
||||
[node name="Bulkhead" parent="Airlock/FarWall" instance=ExtResource("18_17ivy")]
|
||||
|
||||
[node name="GrunkNodule" parent="Airlock" instance=ExtResource("19_ji5cn")]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.866026, -0.5, 0, 0.5, 0.866026, -2.05, 0.15, -4.5)
|
||||
value = 4000.0
|
||||
|
||||
[node name="GrunkNodule2" parent="Airlock" instance=ExtResource("19_ji5cn")]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353554, 0, -0.353554, 0.353553, -1.1, 0.15, -4.3)
|
||||
|
||||
[node name="GrunkNodule3" parent="Airlock" instance=ExtResource("19_ji5cn")]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353554, 0, -0.353554, 0.353553, 1.4, 2.65, -4.3)
|
||||
|
||||
[node name="Corridor1" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -22.5)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=44 format=4 uid="uid://16ds4fvv72xk"]
|
||||
[gd_scene load_steps=45 format=4 uid="uid://16ds4fvv72xk"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="1_a67lu"]
|
||||
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_h436a"]
|
||||
@ -9,6 +9,7 @@
|
||||
[ext_resource type="ArrayMesh" uid="uid://5jt7xxr05lw3" path="res://assets/level/hallway/hallway_2.mesh" id="8_hrvvi"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://o6k7ebet848p" path="res://assets/level/hallway/hallway_3.mesh" id="9_2roq2"]
|
||||
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="9_p27ol"]
|
||||
[ext_resource type="PackedScene" uid="uid://2yqi5u5eo025" path="res://src/world/gunk_node/grunk_nodule.tscn" id="10_2roq2"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_cj8bk"]
|
||||
|
||||
@ -70,6 +71,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_powch"]
|
||||
albedo_color = Color(1, 0.403922, 1, 1)
|
||||
@ -126,6 +131,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2h3rs"]
|
||||
albedo_color = Color(1, 0.403922, 1, 1)
|
||||
@ -184,6 +193,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0psug"]
|
||||
albedo_color = Color(1, 0.403922, 1, 1)
|
||||
@ -240,6 +253,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hrvvi"]
|
||||
albedo_color = Color(1, 0.403922, 1, 1)
|
||||
@ -298,6 +315,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_p1wtp"]
|
||||
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
|
||||
@ -320,6 +341,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2l4r6"]
|
||||
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
|
||||
@ -342,6 +367,10 @@ shader_parameter/edge_bleed = 0.25
|
||||
shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
|
||||
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||
shader_parameter/jitter_magnitude = 0.0
|
||||
shader_parameter/jitter_time_scale = 0.1
|
||||
shader_parameter/vertex_inflation = 0.0
|
||||
shader_parameter/inflation_pixellation = 10.0
|
||||
|
||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_tmxet"]
|
||||
data = PackedVector3Array(-1.5, 0, -6, -1.5, 0, 6, -1.5, 3, -6, -1.5, 3, -6, -1.5, 0, 6, -1.5, 3, 6, 1.5, 0, 6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, 6, 1.5, 0, -6, 1.5, 3, -6, -1.5, 0, 6, -1.5, 0, -6, 1.5, 0, 6, 1.5, 0, 6, -1.5, 0, -6, 1.5, 0, -6, 1.5, 3, 6, 1.5, 3, -6, -1.5, 3, 6, -1.5, 3, 6, 1.5, 3, -6, -1.5, 3, -6)
|
||||
@ -473,3 +502,9 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0834363, 3.98781, -0.965698
|
||||
light_energy = 8.0
|
||||
shadow_enabled = true
|
||||
omni_range = 20.0
|
||||
|
||||
[node name="GrunkNodule" parent="." instance=ExtResource("10_2roq2")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 1, -1)
|
||||
|
||||
[node name="GrunkNodule2" parent="." instance=ExtResource("10_2roq2")]
|
||||
transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, -6, 1, 1)
|
||||
|
112
src/effects/grunk_splatter.tscn
Normal file
112
src/effects/grunk_splatter.tscn
Normal file
@ -0,0 +1,112 @@
|
||||
[gd_scene load_steps=17 format=3 uid="uid://xlt78xc1tmkl"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cgwgmxwjgwbwr" path="res://assets/particles/splatter_2.png" id="1_5xu2x"]
|
||||
[ext_resource type="Texture2D" uid="uid://bhoai6xv53tqm" path="res://assets/particles/splatter_1.png" id="2_bt63p"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_5xu2x"]
|
||||
offsets = PackedFloat32Array(0, 0.291304, 0.526087, 1)
|
||||
colors = PackedColorArray(2, 2, 2, 1, 0, 0.101961, 0.301961, 1, 0, 0.0313726, 0.101961, 1, 0, 0, 0, 0)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bt63p"]
|
||||
gradient = SubResource("Gradient_5xu2x")
|
||||
use_hdr = true
|
||||
|
||||
[sub_resource type="Curve" id="Curve_y6klh"]
|
||||
_data = [Vector2(0.148438, 0.19687), 0.0, 0.0, 0, 0, Vector2(0.339844, 1), 0.0, 0.0, 0, 0]
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CurveTexture" id="CurveTexture_t00bd"]
|
||||
curve = SubResource("Curve_y6klh")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_5xu2x"]
|
||||
lifetime_randomness = 0.57
|
||||
angle_min = 1.07288e-05
|
||||
angle_max = 360.0
|
||||
direction = Vector3(0, 0, 0)
|
||||
spread = 180.0
|
||||
initial_velocity_min = 8.0
|
||||
initial_velocity_max = 8.0
|
||||
scale_curve = SubResource("CurveTexture_t00bd")
|
||||
color_ramp = SubResource("GradientTexture1D_bt63p")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bt63p"]
|
||||
transparency = 1
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("1_5xu2x")
|
||||
texture_filter = 2
|
||||
billboard_mode = 3
|
||||
billboard_keep_scale = true
|
||||
particles_anim_h_frames = 1
|
||||
particles_anim_v_frames = 1
|
||||
particles_anim_loop = false
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_y6klh"]
|
||||
material = SubResource("StandardMaterial3D_bt63p")
|
||||
size = Vector2(0.5, 0.5)
|
||||
|
||||
[sub_resource type="Curve" id="Curve_bt63p"]
|
||||
_limits = [0.0, 0.7, 0.0, 1.0]
|
||||
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.199219, 0.7), -0.414907, -0.414907, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||
point_count = 3
|
||||
|
||||
[sub_resource type="CurveTexture" id="CurveTexture_2iem1"]
|
||||
curve = SubResource("Curve_bt63p")
|
||||
|
||||
[sub_resource type="Curve" id="Curve_t00bd"]
|
||||
_data = [Vector2(0, 0), 0.0, 1.334, 0, 0, Vector2(1, 1), -0.0498424, 0.0, 0, 0]
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CurveTexture" id="CurveTexture_72g1e"]
|
||||
curve = SubResource("Curve_t00bd")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_2iem1"]
|
||||
lifetime_randomness = 0.55
|
||||
emission_shape = 1
|
||||
emission_sphere_radius = 0.9
|
||||
angle_min = 1.07288e-05
|
||||
angle_max = 360.0
|
||||
direction = Vector3(0, 1, 0)
|
||||
spread = 0.0
|
||||
initial_velocity_max = 0.05
|
||||
gravity = Vector3(0, -0.3, 0)
|
||||
scale_curve = SubResource("CurveTexture_72g1e")
|
||||
color = Color(0.9, 0.983333, 1, 1)
|
||||
alpha_curve = SubResource("CurveTexture_2iem1")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ckw5w"]
|
||||
transparency = 1
|
||||
vertex_color_use_as_albedo = true
|
||||
albedo_texture = ExtResource("2_bt63p")
|
||||
texture_filter = 2
|
||||
billboard_mode = 3
|
||||
billboard_keep_scale = true
|
||||
particles_anim_h_frames = 1
|
||||
particles_anim_v_frames = 1
|
||||
particles_anim_loop = false
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_6adkd"]
|
||||
material = SubResource("StandardMaterial3D_ckw5w")
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[node name="GrunkSplatter" type="GPUParticles3D"]
|
||||
amount = 32
|
||||
lifetime = 0.3
|
||||
explosiveness = 1.0
|
||||
process_material = SubResource("ParticleProcessMaterial_5xu2x")
|
||||
draw_pass_1 = SubResource("QuadMesh_y6klh")
|
||||
|
||||
[node name="SubSplatter" type="GPUParticles3D" parent="."]
|
||||
amount = 4
|
||||
lifetime = 0.3
|
||||
explosiveness = 0.82
|
||||
interpolate = false
|
||||
fract_delta = false
|
||||
process_material = SubResource("ParticleProcessMaterial_2iem1")
|
||||
draw_pass_1 = SubResource("QuadMesh_6adkd")
|
||||
|
||||
[node name="FreeTimer" type="Timer" parent="."]
|
||||
wait_time = 0.3
|
||||
one_shot = true
|
||||
autostart = true
|
||||
|
||||
[connection signal="timeout" from="FreeTimer" to="." method="queue_free"]
|
@ -19,6 +19,8 @@ func _fire() -> void:
|
||||
(collider as GunkBody).paint_continuous(
|
||||
point, laser.get_collision_normal(), point_scale
|
||||
)
|
||||
if collider is GunkNode:
|
||||
(collider as GunkNode).hit()
|
||||
|
||||
spray_effect.visible = true
|
||||
beam_particles_1.emitting = true
|
||||
|
@ -19,8 +19,9 @@ func _fire() -> void:
|
||||
|
||||
for laser: LaserCast in spray_casts.get_children():
|
||||
if laser.is_colliding():
|
||||
var target := laser.get_collider() as GunkBody
|
||||
if target:
|
||||
var collider := laser.get_collider()
|
||||
if collider is GunkBody:
|
||||
var target := collider as GunkBody
|
||||
var point := laser.get_collision_point()
|
||||
var normal := laser.get_collision_normal()
|
||||
|
||||
@ -34,6 +35,8 @@ func _fire() -> void:
|
||||
prev_target = target
|
||||
prev_point = point
|
||||
prev_normal = normal
|
||||
elif collider is GunkNode:
|
||||
(collider as GunkNode).hit()
|
||||
|
||||
spray_effect.visible = true
|
||||
beam_particles_1.emitting = true
|
||||
|
@ -1,6 +1,7 @@
|
||||
shader_type spatial;
|
||||
render_mode blend_mix, depth_draw_opaque, cull_disabled, diffuse_burley, specular_schlick_ggx, sss_mode_skin;
|
||||
render_mode diffuse_burley, specular_schlick_ggx, sss_mode_skin;
|
||||
|
||||
group_uniforms gunk_material;
|
||||
uniform vec3 color_1: source_color = vec3(0.0, 0.03, 0.1);
|
||||
uniform vec3 color_2: source_color = vec3(0.0, 0.1, 0.3);
|
||||
uniform vec3 emission_color: source_color = vec3(0.25, 0.88, 1.0);
|
||||
@ -24,6 +25,24 @@ uniform sampler2D gunk_mask;
|
||||
uniform highp sampler3D gunk_noise;
|
||||
uniform highp sampler3D gunk_normal_map;
|
||||
|
||||
group_uniforms jitter;
|
||||
uniform mediump float jitter_magnitude = 0.0;
|
||||
uniform lowp float jitter_time_scale = 0.1;
|
||||
|
||||
uniform highp sampler3D jitter_noise;
|
||||
|
||||
group_uniforms inflation;
|
||||
uniform highp float vertex_inflation = 0.0;
|
||||
uniform highp float inflation_pixellation = 10.0;
|
||||
|
||||
void vertex() {
|
||||
float mixer = VERTEX.x + 0.553 * VERTEX.z + 1.618 * VERTEX.y;
|
||||
float local_time = floor(TIME * jitter_time_scale * time_pixellation) / time_pixellation;
|
||||
float sample = texture(jitter_noise, vec3(cos(mixer), sin(mixer), local_time)).r;
|
||||
float inflation = floor(vertex_inflation * inflation_pixellation) / inflation_pixellation;
|
||||
float jitter = jitter_magnitude * (sample - 0.5 + inflation);
|
||||
VERTEX *= 1.0 + jitter;
|
||||
}
|
||||
|
||||
float hardstep(float value) {
|
||||
float x = clamp(value, 0.0, 1.0);
|
||||
|
17
src/shaders/nodule.gdshader
Normal file
17
src/shaders/nodule.gdshader
Normal file
@ -0,0 +1,17 @@
|
||||
/* The shuddererrrrrrrr
|
||||
*/
|
||||
shader_type spatial;
|
||||
|
||||
uniform mediump float jitter_magnitude = 0.1;
|
||||
uniform mediump float time_scale = 0.1;
|
||||
uniform lowp float time_pixellation = 100.0;
|
||||
|
||||
uniform highp sampler3D jitter_noise;
|
||||
|
||||
void vertex() {
|
||||
float mixer = VERTEX.x + 0.553 * VERTEX.z + 1.618 * VERTEX.y;
|
||||
float local_time = floor(TIME * time_scale * time_pixellation) / time_pixellation;
|
||||
float sample = texture(jitter_noise, vec3(cos(mixer), sin(mixer), local_time)).r;
|
||||
float jitter = jitter_magnitude * (sample - 0.5);
|
||||
VERTEX *= 1.0 + jitter;
|
||||
}
|
1
src/shaders/nodule.gdshader.uid
Normal file
1
src/shaders/nodule.gdshader.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://by1atykyt6fkx
|
22
src/world/gunk_node/grunk_nodule.gd
Normal file
22
src/world/gunk_node/grunk_nodule.gd
Normal file
@ -0,0 +1,22 @@
|
||||
extends GunkNode
|
||||
|
||||
@export var jitter_scale_factor := 0.02
|
||||
@export var jitter_inflation_factor := 1.0
|
||||
|
||||
@export var splatter_scene: PackedScene
|
||||
|
||||
@onready var mesh_instance: MeshInstance3D = %MeshInstance3D
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
var shader: ShaderMaterial = mesh_instance.mesh.surface_get_material(0)
|
||||
var value := _sustained_damage / durability
|
||||
shader.set_shader_parameter("jitter_time_scale", value * jitter_scale_factor)
|
||||
shader.set_shader_parameter("vertex_inflation", value * jitter_inflation_factor)
|
||||
|
||||
|
||||
func _destroy() -> void:
|
||||
var splatter: GPUParticles3D = splatter_scene.instantiate()
|
||||
add_sibling(splatter)
|
||||
splatter.global_position = global_position
|
||||
splatter.emitting = true
|
1
src/world/gunk_node/grunk_nodule.gd.uid
Normal file
1
src/world/gunk_node/grunk_nodule.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://07t7yhijru8f
|
55
src/world/gunk_node/grunk_nodule.tscn
Normal file
55
src/world/gunk_node/grunk_nodule.tscn
Normal file
@ -0,0 +1,55 @@
|
||||
[gd_scene load_steps=7 format=4 uid="uid://2yqi5u5eo025"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://07t7yhijru8f" path="res://src/world/gunk_node/grunk_nodule.gd" id="1_m8r0a"]
|
||||
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="2_530fq"]
|
||||
[ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_iyr82"]
|
||||
|
||||
[sub_resource type="ArrayMesh" id="ArrayMesh_24j8i"]
|
||||
_surfaces = [{
|
||||
"aabb": AABB(-0.894425, -1, -0.85064, 1.78885, 2, 1.70128),
|
||||
"format": 34896613377,
|
||||
"index_count": 60,
|
||||
"index_data": PackedByteArray("AAABAAIAAgABAAMAAQAAAAQAAwABAAUABQABAAQABAAAAAYABQAEAAcABwAEAAYAAwAFAAgACAAFAAcAAgADAAkACQADAAgAAAACAAoACgACAAkABgAAAAoACAAHAAsABwAGAAsACQAIAAsABgAKAAsACgAJAAsA"),
|
||||
"name": "Icosphere",
|
||||
"primitive": 3,
|
||||
"uv_scale": Vector4(0, 0, 0, 0),
|
||||
"vertex_count": 12,
|
||||
"vertex_data": PackedByteArray("jOfBRhrPAAD/fwAA/38AAHJYwUb//wAAAADBRv9/AACM58FG5DAAAHJYwUYAAAAA//89uf9/AACMpz25AAAAAHIYPbnkMAAAchg9uRrPAACMpz25//8AAP9/////fwAA")
|
||||
}]
|
||||
blend_shape_mode = 0
|
||||
|
||||
[sub_resource type="ArrayMesh" id="ArrayMesh_iyr82"]
|
||||
resource_local_to_scene = true
|
||||
_surfaces = [{
|
||||
"aabb": AABB(-0.894425, -1, -0.85064, 1.78885, 2, 1.70128),
|
||||
"attribute_data": PackedByteArray("0UWv14su//9FF6/XFl3//9FFr9dcdK/X//+v17no//9z0a/Xc9Gv1y26///ooq/X6KKv16KL//9cdK/XXHSv19FFr9cWXWCv0UWv10UXr9eLLmCv//+v13PRr9e56GCvc9Gv1+iir9ctumCv6KKv11x0r9eii2CvFl1gr9FFr9eLLmCviy5gr0UXr9cAAGCvuehgr3PRr9ctumCvLbpgr+iir9eii2Cvootgr1x0r9cWXWCvFl1gr4suYK/RRRGHiy5grwAAYK9FFxGHuehgry26YK9z0RGHLbpgr6KLYK/oohGHootgrxZdYK9cdBGH"),
|
||||
"format": 34896613399,
|
||||
"index_count": 60,
|
||||
"index_data": PackedByteArray("AAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsA"),
|
||||
"material": ExtResource("2_530fq"),
|
||||
"name": "Icosphere",
|
||||
"primitive": 3,
|
||||
"uv_scale": Vector4(0, 0, 0, 0),
|
||||
"vertex_count": 60,
|
||||
"vertex_data": PackedByteArray("jOfBRhrPZaf/fwAA/39lp3JYwUb//2Wn/38AAP9/DciM58FGGs8NyIznwUbkMA3IcljBRv//nLT/fwAA/3+ctAAAwUb/f5y0AADBRv9/2N3/fwAA/3/Y3XJYwUYAANjdcljBRgAAiPT/fwAA/3+I9IznwUbkMIj0jOfBRuQwW8CM58FGGs9bwP//Pbn/f1vAjOfBRhrP6Y5yWMFG///pjoynPbn//+mOcljBRv//GacAAMFG/38Zp3IYPbkazxmnAADBRv9/yNlyWMFGAADI2XIYPbnkMMjZcljBRgAAQfOM58FG5DBB84ynPbkAAEHz//89uf9/GaeM58FGGs8Zp4ynPbn//xmnjKc9uf//6Y5yWMFG///pjnIYPbkaz+mOchg9uRrPW8AAAMFG/39bwHIYPbnkMFvAchg9ueQwQfNyWMFGAABB84ynPbkAAEHzjKc9uQAAyNmM58FG5DDI2f//Pbn/f8jZ//89uf9/nLSMpz25//+ctP9/////f5y0jKc9uf//ZadyGD25Gs9lp/9/////f2Wnchg9uRrPDchyGD255DANyP9/////fw3Ichg9ueQwiPSMpz25AACI9P9/////f4j0jKc9uQAA2N3//z25/3/Y3f9/////f9jdbylFZG8pRWRvKUVkLWCkPy1gpD8tYKQ/7DOZzewzmc3sM5nNSkmH7UpJh+1KSYftn3mdLp95nS6feZ0uz3VfFM91XxTPdV8UzFJcNMxSXDTMUlw092Nt7fdjbe33Y23t/2+Y+v9vmPr/b5j6RH6lDER+pQxEfqUMB5yREgeckRIHnJESMq2iyzKtossyraLLL4qf6y+Kn+svip/ruoFZ87qBWfO6gVnz/49mBf+PZgX/j2YFEsxlMhLMZTISzGUyj9a5m4/WuZuP1rmb0Z9awNGfWsDRn1rAX4Zh0V+GYdFfhmHRtLZ3ErS2dxK0tncS")
|
||||
}]
|
||||
blend_shape_mode = 0
|
||||
shadow_mesh = SubResource("ArrayMesh_24j8i")
|
||||
|
||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_530fq"]
|
||||
data = PackedVector3Array(0.7236, -0.4472, 0.5257, 0, -1, 0, -0.2764, -0.4472, 0.8506, 0, -1, 0, 0.7236, -0.4472, 0.5257, 0.7236, -0.4472, -0.5257, -0.2764, -0.4472, 0.8506, 0, -1, 0, -0.8944, -0.4472, 0, -0.8944, -0.4472, 0, 0, -1, 0, -0.2764, -0.4472, -0.8506, -0.2764, -0.4472, -0.8506, 0, -1, 0, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, 0.5257, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, -0.2764, -0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.8944, -0.4472, 0, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.2764, -0.4472, -0.8506, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, 0.2764, 0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.7236, 0.4472, -0.5257, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.8944, 0.4472, 0, 0.8944, 0.4472, 0, 0.2764, 0.4472, 0.8506, 0, 1, 0, 0.2764, 0.4472, 0.8506, -0.7236, 0.4472, 0.5257, 0, 1, 0, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, -0.5257, 0, 1, 0, -0.7236, 0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0, 1, 0, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0, 1, 0)
|
||||
|
||||
[node name="GrunkNodule" type="StaticBody3D"]
|
||||
collision_layer = 5
|
||||
script = ExtResource("1_m8r0a")
|
||||
splatter_scene = ExtResource("2_iyr82")
|
||||
durability = 3.0
|
||||
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
sorting_offset = 1.0
|
||||
mesh = SubResource("ArrayMesh_iyr82")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("ConcavePolygonShape3D_530fq")
|
54
src/world/gunk_node/gunk_node.gd
Normal file
54
src/world/gunk_node/gunk_node.gd
Normal file
@ -0,0 +1,54 @@
|
||||
class_name GunkNode extends StaticBody3D
|
||||
## A static body which can be destroyed and collected by the player.
|
||||
|
||||
## Emitted immediately after this node has been destroyed by the player,
|
||||
## but before it's removed from the scene tree
|
||||
signal destroyed
|
||||
|
||||
const JITTER_FADE_RATE := 0.6
|
||||
|
||||
## Time in seconds the player must hit this node with a sustained beam before it's destroyed.
|
||||
@export var durability := 1.0
|
||||
|
||||
## Value added to the player's grunk total on destruction.
|
||||
@export var value := 1000.0
|
||||
|
||||
var _sustained_damage := 0.0
|
||||
var _hit_this_frame := false
|
||||
|
||||
|
||||
## Called each frame this node takes a hit.
|
||||
##
|
||||
## Derived types should override `_hit()` as a lifecycle method.
|
||||
func hit() -> void:
|
||||
_hit_this_frame = true
|
||||
_hit()
|
||||
|
||||
|
||||
func _hit() -> void:
|
||||
pass # Implemented in derived type
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if _hit_this_frame:
|
||||
_sustained_damage += delta
|
||||
else:
|
||||
_sustained_damage *= JITTER_FADE_RATE
|
||||
_hit_this_frame = false
|
||||
|
||||
if _sustained_damage >= durability:
|
||||
destroy()
|
||||
|
||||
|
||||
## Destroy this node. Called automatically when this node sustains damage beyond its durability.
|
||||
##
|
||||
## Derived types should override `_destroy` as a lifecycle method.
|
||||
func destroy() -> void:
|
||||
Game.manager.collect_grunk(value)
|
||||
_destroy()
|
||||
destroyed.emit()
|
||||
queue_free()
|
||||
|
||||
|
||||
func _destroy() -> void:
|
||||
pass # Implemented in derived type
|
1
src/world/gunk_node/gunk_node.gd.uid
Normal file
1
src/world/gunk_node/gunk_node.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://bypgxi0gy56yk
|
Loading…
x
Reference in New Issue
Block a user