generated from krampus/template-godot4
Compare commits
5 Commits
d4a008ff2a
...
ebac8651b6
Author | SHA1 | Date | |
---|---|---|---|
ebac8651b6 | |||
9d8f1f1767 | |||
eba7d3d06b | |||
e44bed8bff | |||
42ec80f098 |
Binary file not shown.
@ -28,10 +28,19 @@ ssao_enabled = true
|
|||||||
ssao_intensity = 2.5
|
ssao_intensity = 2.5
|
||||||
ssil_enabled = true
|
ssil_enabled = true
|
||||||
ssil_radius = 0.4
|
ssil_radius = 0.4
|
||||||
|
ssil_intensity = 2.5
|
||||||
|
ssil_normal_rejection = 0.73
|
||||||
sdfgi_enabled = true
|
sdfgi_enabled = true
|
||||||
sdfgi_cascades = 7
|
sdfgi_cascades = 7
|
||||||
glow_enabled = true
|
glow_enabled = true
|
||||||
|
glow_levels/1 = 16.0
|
||||||
|
glow_levels/2 = 6.0
|
||||||
|
glow_levels/3 = 2.0
|
||||||
|
glow_levels/4 = 1.0
|
||||||
|
glow_levels/6 = 2.0
|
||||||
|
glow_levels/7 = 2.0
|
||||||
glow_strength = 0.7
|
glow_strength = 0.7
|
||||||
|
glow_bloom = 0.01
|
||||||
glow_blend_mode = 0
|
glow_blend_mode = 0
|
||||||
fog_light_color = Color(0, 0, 0, 1)
|
fog_light_color = Color(0, 0, 0, 1)
|
||||||
fog_density = 0.2
|
fog_density = 0.2
|
||||||
|
File diff suppressed because one or more lines are too long
@ -13,12 +13,6 @@ extends Node3D
|
|||||||
@onready var prop_test_spawn_point: Marker3D = %PropTestSpawnPoint
|
@onready var prop_test_spawn_point: Marker3D = %PropTestSpawnPoint
|
||||||
@onready var item_test_spawn_point: Marker3D = %ItemTestSpawnPoint
|
@onready var item_test_spawn_point: Marker3D = %ItemTestSpawnPoint
|
||||||
|
|
||||||
static var nodule_scene: PackedScene = load("res://src/world/gunk_node/grunk_nodule.tscn")
|
|
||||||
static var alarm_scene: PackedScene = load("res://src/world/mechanics/alarm/gunk_alarm.tscn")
|
|
||||||
static var signal_test_scene: PackedScene = load("res://levels/mechanic_test/signal_test.tscn")
|
|
||||||
static var prop_test_scene: PackedScene = load("res://levels/mechanic_test/prop_test.tscn")
|
|
||||||
static var item_test_scene: PackedScene = load("res://levels/mechanic_test/item_test.tscn")
|
|
||||||
|
|
||||||
|
|
||||||
func reset() -> void:
|
func reset() -> void:
|
||||||
print("Resetting level!")
|
print("Resetting level!")
|
||||||
@ -26,6 +20,10 @@ func reset() -> void:
|
|||||||
Callable(bulkhead, "close").call()
|
Callable(bulkhead, "close").call()
|
||||||
Callable(open_switch, "enable").call()
|
Callable(open_switch, "enable").call()
|
||||||
Callable(close_switch, "disable").call()
|
Callable(close_switch, "disable").call()
|
||||||
|
|
||||||
|
var signal_test_scene: PackedScene = load("res://levels/mechanic_test/signal_test.tscn")
|
||||||
|
var prop_test_scene: PackedScene = load("res://levels/mechanic_test/prop_test.tscn")
|
||||||
|
var item_test_scene: PackedScene = load("res://levels/mechanic_test/item_test.tscn")
|
||||||
_do_spawn(signal_test_spawn_point, signal_test_scene)
|
_do_spawn(signal_test_spawn_point, signal_test_scene)
|
||||||
_do_spawn(prop_test_spawn_point, prop_test_scene)
|
_do_spawn(prop_test_spawn_point, prop_test_scene)
|
||||||
_do_spawn(item_test_spawn_point, item_test_scene)
|
_do_spawn(item_test_spawn_point, item_test_scene)
|
||||||
@ -39,10 +37,12 @@ func _do_spawn(spawn_point: Node3D, scene: PackedScene) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func spawn_nodule() -> void:
|
func spawn_nodule() -> void:
|
||||||
|
var nodule_scene: PackedScene = load("res://src/world/gunk_node/grunk_nodule.tscn")
|
||||||
_do_spawn(nodule_spawn_point, nodule_scene)
|
_do_spawn(nodule_spawn_point, nodule_scene)
|
||||||
|
|
||||||
|
|
||||||
func spawn_alarm() -> void:
|
func spawn_alarm() -> void:
|
||||||
|
var alarm_scene: PackedScene = load("res://src/world/mechanics/alarm/gunk_alarm.tscn")
|
||||||
_do_spawn(alarm_spawn_point, alarm_scene)
|
_do_spawn(alarm_spawn_point, alarm_scene)
|
||||||
|
|
||||||
|
|
||||||
|
34
src/effects/grunk_splatter/grunk_splatter.gd
Normal file
34
src/effects/grunk_splatter/grunk_splatter.gd
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
class_name GrunkSplatter extends GPUParticles3D
|
||||||
|
## Splatter effect with adjustable volume
|
||||||
|
|
||||||
|
const BASE_VOLUME := -12.0
|
||||||
|
const SCALE_FACTOR := 4.0
|
||||||
|
|
||||||
|
const SCENE := preload("res://src/effects/grunk_splatter/grunk_splatter.tscn")
|
||||||
|
|
||||||
|
@export var effect_scale := 1.0
|
||||||
|
|
||||||
|
@onready var splatter_sfx: AudioStreamPlayer3D = %SplatterSFX
|
||||||
|
@onready var sub_splatter: GPUParticles3D = %SubSplatter
|
||||||
|
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready() -> void:
|
||||||
|
splatter_sfx.volume_db = BASE_VOLUME + SCALE_FACTOR * log(effect_scale) / log(2)
|
||||||
|
scale = Vector3.ONE * effect_scale
|
||||||
|
|
||||||
|
# Scale particles themselves
|
||||||
|
_scale_particles(self)
|
||||||
|
_scale_particles(sub_splatter)
|
||||||
|
|
||||||
|
|
||||||
|
func _scale_particles(emitter: GPUParticles3D) -> void:
|
||||||
|
var mat := emitter.process_material as ParticleProcessMaterial
|
||||||
|
mat.scale_max = effect_scale
|
||||||
|
mat.scale_min = effect_scale
|
||||||
|
|
||||||
|
|
||||||
|
static func build(_effect_scale: float = 1.0) -> GrunkSplatter:
|
||||||
|
var instance: GrunkSplatter = SCENE.instantiate()
|
||||||
|
instance.effect_scale = _effect_scale
|
||||||
|
return instance
|
1
src/effects/grunk_splatter/grunk_splatter.gd.uid
Normal file
1
src/effects/grunk_splatter/grunk_splatter.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://di5b65ehsfatj
|
@ -1,7 +1,8 @@
|
|||||||
[gd_scene load_steps=22 format=3 uid="uid://xlt78xc1tmkl"]
|
[gd_scene load_steps=23 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://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"]
|
[ext_resource type="Texture2D" uid="uid://bhoai6xv53tqm" path="res://assets/particles/splatter_1.png" id="2_bt63p"]
|
||||||
|
[ext_resource type="Script" uid="uid://di5b65ehsfatj" path="res://src/effects/grunk_splatter/grunk_splatter.gd" id="2_grvat"]
|
||||||
[ext_resource type="AudioStream" uid="uid://di0j2xhgfc78s" path="res://assets/sfx/grunk/splat1.wav" id="3_t00bd"]
|
[ext_resource type="AudioStream" uid="uid://di0j2xhgfc78s" path="res://assets/sfx/grunk/splat1.wav" id="3_t00bd"]
|
||||||
[ext_resource type="AudioStream" uid="uid://d1w5gfmjj7tjk" path="res://assets/sfx/grunk/splat2.wav" id="4_2iem1"]
|
[ext_resource type="AudioStream" uid="uid://d1w5gfmjj7tjk" path="res://assets/sfx/grunk/splat2.wav" id="4_2iem1"]
|
||||||
[ext_resource type="Script" uid="uid://c5o1d2shq2qig" path="res://src/world/game_sound/game_sound_emitter.gd" id="5_2iem1"]
|
[ext_resource type="Script" uid="uid://c5o1d2shq2qig" path="res://src/world/game_sound/game_sound_emitter.gd" id="5_2iem1"]
|
||||||
@ -22,6 +23,7 @@ point_count = 2
|
|||||||
curve = SubResource("Curve_y6klh")
|
curve = SubResource("Curve_y6klh")
|
||||||
|
|
||||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_5xu2x"]
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_5xu2x"]
|
||||||
|
resource_local_to_scene = true
|
||||||
lifetime_randomness = 0.57
|
lifetime_randomness = 0.57
|
||||||
emission_shape = 1
|
emission_shape = 1
|
||||||
emission_sphere_radius = 1.0
|
emission_sphere_radius = 1.0
|
||||||
@ -65,6 +67,7 @@ point_count = 2
|
|||||||
curve = SubResource("Curve_t00bd")
|
curve = SubResource("Curve_t00bd")
|
||||||
|
|
||||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_2iem1"]
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_2iem1"]
|
||||||
|
resource_local_to_scene = true
|
||||||
lifetime_randomness = 0.55
|
lifetime_randomness = 0.55
|
||||||
emission_shape = 1
|
emission_shape = 1
|
||||||
emission_sphere_radius = 0.9
|
emission_sphere_radius = 0.9
|
||||||
@ -112,8 +115,10 @@ one_shot = true
|
|||||||
explosiveness = 0.45
|
explosiveness = 0.45
|
||||||
process_material = SubResource("ParticleProcessMaterial_5xu2x")
|
process_material = SubResource("ParticleProcessMaterial_5xu2x")
|
||||||
draw_pass_1 = SubResource("QuadMesh_y6klh")
|
draw_pass_1 = SubResource("QuadMesh_y6klh")
|
||||||
|
script = ExtResource("2_grvat")
|
||||||
|
|
||||||
[node name="SubSplatter" type="GPUParticles3D" parent="."]
|
[node name="SubSplatter" type="GPUParticles3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
sorting_offset = 9.0
|
sorting_offset = 9.0
|
||||||
emitting = false
|
emitting = false
|
||||||
amount = 4
|
amount = 4
|
||||||
@ -131,8 +136,9 @@ one_shot = true
|
|||||||
autostart = true
|
autostart = true
|
||||||
|
|
||||||
[node name="SplatterSFX" type="AudioStreamPlayer3D" parent="."]
|
[node name="SplatterSFX" type="AudioStreamPlayer3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
stream = SubResource("AudioStreamRandomizer_6adkd")
|
stream = SubResource("AudioStreamRandomizer_6adkd")
|
||||||
volume_db = -10.0
|
volume_db = -12.0
|
||||||
unit_size = 6.0
|
unit_size = 6.0
|
||||||
autoplay = true
|
autoplay = true
|
||||||
bus = &"SFX"
|
bus = &"SFX"
|
@ -151,3 +151,9 @@ func _on_milestone(milestone: Milestone) -> void:
|
|||||||
func on_player_death() -> void:
|
func on_player_death() -> void:
|
||||||
player_dead.emit()
|
player_dead.emit()
|
||||||
# TODO reload from save?
|
# TODO reload from save?
|
||||||
|
|
||||||
|
# REMOVEME
|
||||||
|
# workaround until saving & loading is implemented
|
||||||
|
grunk_tank_limit = BASE_TANK_LIMIT
|
||||||
|
grunk_tank = 0.0
|
||||||
|
grunk_vault = 0.0
|
||||||
|
@ -622,7 +622,6 @@ unique_name_in_owner = true
|
|||||||
visible = false
|
visible = false
|
||||||
|
|
||||||
[node name="TransformedPosition" type="Node3D" parent="CameraPosition/CameraPivot"]
|
[node name="TransformedPosition" type="Node3D" parent="CameraPosition/CameraPivot"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
|
||||||
|
|
||||||
[node name="CamRumbler" type="Node3D" parent="CameraPosition/CameraPivot/TransformedPosition"]
|
[node name="CamRumbler" type="Node3D" parent="CameraPosition/CameraPivot/TransformedPosition"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@ -647,6 +646,7 @@ omni_attenuation = 0.0
|
|||||||
|
|
||||||
[node name="NearLight" type="OmniLight3D" parent="CameraPosition/CameraPivot/TransformedPosition/CamRumbler/Camera3D"]
|
[node name="NearLight" type="OmniLight3D" parent="CameraPosition/CameraPivot/TransformedPosition/CamRumbler/Camera3D"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.1)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.1)
|
||||||
|
light_energy = 0.2
|
||||||
light_specular = 0.01
|
light_specular = 0.01
|
||||||
light_cull_mask = 4294967293
|
light_cull_mask = 4294967293
|
||||||
omni_range = 2.0
|
omni_range = 2.0
|
||||||
|
@ -45,7 +45,7 @@ shadow_mesh = SubResource("ArrayMesh_hx0vd")
|
|||||||
data = PackedVector3Array(-1.5, 0, 0.225, -1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 0, 0.225, -1.5, 0, -0.225, -1.5, 3, -0.225, -1.3125, 0.375, -0.225, -1.5, 0, -0.225, -1.2188, 0.2812, -0.225, -1.5, 0, -0.225, -1.125, 0.1875, -0.225, -1.2188, 0.2812, -0.225, -1.5, 0, -0.225, 1.125, 0.1875, -0.225, -1.125, 0.1875, -0.225, -1.3125, 0.375, -0.225, -1.5, 3, -0.225, -1.5, 0, -0.225, 1.5, 0, -0.225, 1.125, 0.1875, -0.225, -1.5, 0, -0.225, -1.3125, 2.625, -0.225, -1.5, 3, -0.225, -1.3125, 0.375, -0.225, 1.5, 0, -0.225, 1.3125, 0.375, -0.225, 1.125, 0.1875, -0.225, -1.5, 3, -0.225, -1.3125, 2.625, -0.225, -1.125, 2.8125, -0.225, 1.3125, 0.375, -0.225, 1.5, 0, -0.225, 1.3125, 2.625, -0.225, -1.5, 3, -0.225, -1.125, 2.8125, -0.225, 1.5, 3, -0.225, 1.3125, 2.625, -0.225, 1.5, 0, -0.225, 1.5, 3, -0.225, 1.5, 3, -0.225, -1.125, 2.8125, -0.225, 1.125, 2.8125, -0.225, 1.3125, 2.625, -0.225, 1.5, 3, -0.225, 1.2187, 2.7187, -0.225, 1.5, 3, -0.225, 1.125, 2.8125, -0.225, 1.2187, 2.7187, -0.225, 1.5, 0, -0.225, 1.5, 3, 0.225, 1.5, 3, -0.225, 1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 3, 0.225, 1.3125, 0.375, 0.225, 1.5, 0, 0.225, 1.2187, 0.2812, 0.225, 1.5, 0, 0.225, 1.125, 0.1875, 0.225, 1.2187, 0.2812, 0.225, 1.5, 0, 0.225, -1.125, 0.1875, 0.225, 1.125, 0.1875, 0.225, 1.3125, 0.375, 0.225, 1.5, 3, 0.225, 1.5, 0, 0.225, -1.5, 0, 0.225, -1.125, 0.1875, 0.225, 1.5, 0, 0.225, 1.3125, 2.625, 0.225, 1.5, 3, 0.225, 1.3125, 0.375, 0.225, -1.5, 0, 0.225, -1.3125, 0.375, 0.225, -1.125, 0.1875, 0.225, 1.5, 3, 0.225, 1.3125, 2.625, 0.225, 1.125, 2.8125, 0.225, -1.3125, 0.375, 0.225, -1.5, 0, 0.225, -1.5, 3, 0.225, 1.5, 3, 0.225, 1.125, 2.8125, 0.225, -1.5, 3, 0.225, -1.3125, 0.375, 0.225, -1.5, 3, 0.225, -1.3125, 2.625, 0.225, -1.5, 3, 0.225, 1.125, 2.8125, 0.225, -1.125, 2.8125, 0.225, -1.3125, 2.625, 0.225, -1.5, 3, 0.225, -1.2188, 2.7187, 0.225, -1.5, 3, 0.225, -1.125, 2.8125, 0.225, -1.2188, 2.7187, 0.225, -1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 0, -0.225, -1.5, 0, -0.225, -1.5, 0, 0.225, 1.5, 0, 0.225, 1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 3, -0.225, 1.5, 3, -0.225, 1.5, 3, 0.225, -1.5, 3, 0.225, 1.3125, 2.625, 0.225, 1.3125, 0.375, -0.225, 1.3125, 2.625, -0.225, 1.3125, 2.625, 0.225, 1.3125, 0.375, 0.225, 1.3125, 0.375, -0.225, -1.125, 2.8125, -0.225, 1.125, 2.8125, 0.225, 1.125, 2.8125, -0.225, -1.125, 2.8125, -0.225, -1.125, 2.8125, 0.225, 1.125, 2.8125, 0.225, -1.3125, 0.375, 0.225, -1.3125, 2.625, -0.225, -1.3125, 0.375, -0.225, -1.3125, 0.375, 0.225, -1.3125, 2.625, 0.225, -1.3125, 2.625, -0.225, -1.3125, 0.375, 0.225, -1.125, 0.1875, -0.225, -1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225, -1.3125, 0.375, 0.225, -1.2188, 0.2812, -0.225, -1.2188, 0.2812, -0.225, -1.3125, 0.375, 0.225, -1.3125, 0.375, -0.225, -1.3125, 2.625, 0.225, -1.125, 2.8125, -0.225, -1.3125, 2.625, -0.225, -1.125, 2.8125, -0.225, -1.3125, 2.625, 0.225, -1.2188, 2.7187, 0.225, -1.125, 2.8125, -0.225, -1.2188, 2.7187, 0.225, -1.125, 2.8125, 0.225, 1.2187, 0.2812, 0.225, 1.3125, 0.375, -0.225, 1.3125, 0.375, 0.225, 1.3125, 0.375, -0.225, 1.2187, 0.2812, 0.225, 1.125, 0.1875, 0.225, 1.3125, 0.375, -0.225, 1.125, 0.1875, 0.225, 1.125, 0.1875, -0.225, 1.125, 2.8125, 0.225, 1.2187, 2.7187, -0.225, 1.125, 2.8125, -0.225, 1.2187, 2.7187, -0.225, 1.125, 2.8125, 0.225, 1.3125, 2.625, 0.225, 1.2187, 2.7187, -0.225, 1.3125, 2.625, 0.225, 1.3125, 2.625, -0.225, 1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225, 1.125, 0.1875, -0.225, 1.125, 0.1875, 0.225, -1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225)
|
data = PackedVector3Array(-1.5, 0, 0.225, -1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 0, 0.225, -1.5, 0, -0.225, -1.5, 3, -0.225, -1.3125, 0.375, -0.225, -1.5, 0, -0.225, -1.2188, 0.2812, -0.225, -1.5, 0, -0.225, -1.125, 0.1875, -0.225, -1.2188, 0.2812, -0.225, -1.5, 0, -0.225, 1.125, 0.1875, -0.225, -1.125, 0.1875, -0.225, -1.3125, 0.375, -0.225, -1.5, 3, -0.225, -1.5, 0, -0.225, 1.5, 0, -0.225, 1.125, 0.1875, -0.225, -1.5, 0, -0.225, -1.3125, 2.625, -0.225, -1.5, 3, -0.225, -1.3125, 0.375, -0.225, 1.5, 0, -0.225, 1.3125, 0.375, -0.225, 1.125, 0.1875, -0.225, -1.5, 3, -0.225, -1.3125, 2.625, -0.225, -1.125, 2.8125, -0.225, 1.3125, 0.375, -0.225, 1.5, 0, -0.225, 1.3125, 2.625, -0.225, -1.5, 3, -0.225, -1.125, 2.8125, -0.225, 1.5, 3, -0.225, 1.3125, 2.625, -0.225, 1.5, 0, -0.225, 1.5, 3, -0.225, 1.5, 3, -0.225, -1.125, 2.8125, -0.225, 1.125, 2.8125, -0.225, 1.3125, 2.625, -0.225, 1.5, 3, -0.225, 1.2187, 2.7187, -0.225, 1.5, 3, -0.225, 1.125, 2.8125, -0.225, 1.2187, 2.7187, -0.225, 1.5, 0, -0.225, 1.5, 3, 0.225, 1.5, 3, -0.225, 1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 3, 0.225, 1.3125, 0.375, 0.225, 1.5, 0, 0.225, 1.2187, 0.2812, 0.225, 1.5, 0, 0.225, 1.125, 0.1875, 0.225, 1.2187, 0.2812, 0.225, 1.5, 0, 0.225, -1.125, 0.1875, 0.225, 1.125, 0.1875, 0.225, 1.3125, 0.375, 0.225, 1.5, 3, 0.225, 1.5, 0, 0.225, -1.5, 0, 0.225, -1.125, 0.1875, 0.225, 1.5, 0, 0.225, 1.3125, 2.625, 0.225, 1.5, 3, 0.225, 1.3125, 0.375, 0.225, -1.5, 0, 0.225, -1.3125, 0.375, 0.225, -1.125, 0.1875, 0.225, 1.5, 3, 0.225, 1.3125, 2.625, 0.225, 1.125, 2.8125, 0.225, -1.3125, 0.375, 0.225, -1.5, 0, 0.225, -1.5, 3, 0.225, 1.5, 3, 0.225, 1.125, 2.8125, 0.225, -1.5, 3, 0.225, -1.3125, 0.375, 0.225, -1.5, 3, 0.225, -1.3125, 2.625, 0.225, -1.5, 3, 0.225, 1.125, 2.8125, 0.225, -1.125, 2.8125, 0.225, -1.3125, 2.625, 0.225, -1.5, 3, 0.225, -1.2188, 2.7187, 0.225, -1.5, 3, 0.225, -1.125, 2.8125, 0.225, -1.2188, 2.7187, 0.225, -1.5, 0, -0.225, 1.5, 0, 0.225, 1.5, 0, -0.225, -1.5, 0, -0.225, -1.5, 0, 0.225, 1.5, 0, 0.225, 1.5, 3, -0.225, -1.5, 3, 0.225, -1.5, 3, -0.225, 1.5, 3, -0.225, 1.5, 3, 0.225, -1.5, 3, 0.225, 1.3125, 2.625, 0.225, 1.3125, 0.375, -0.225, 1.3125, 2.625, -0.225, 1.3125, 2.625, 0.225, 1.3125, 0.375, 0.225, 1.3125, 0.375, -0.225, -1.125, 2.8125, -0.225, 1.125, 2.8125, 0.225, 1.125, 2.8125, -0.225, -1.125, 2.8125, -0.225, -1.125, 2.8125, 0.225, 1.125, 2.8125, 0.225, -1.3125, 0.375, 0.225, -1.3125, 2.625, -0.225, -1.3125, 0.375, -0.225, -1.3125, 0.375, 0.225, -1.3125, 2.625, 0.225, -1.3125, 2.625, -0.225, -1.3125, 0.375, 0.225, -1.125, 0.1875, -0.225, -1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225, -1.3125, 0.375, 0.225, -1.2188, 0.2812, -0.225, -1.2188, 0.2812, -0.225, -1.3125, 0.375, 0.225, -1.3125, 0.375, -0.225, -1.3125, 2.625, 0.225, -1.125, 2.8125, -0.225, -1.3125, 2.625, -0.225, -1.125, 2.8125, -0.225, -1.3125, 2.625, 0.225, -1.2188, 2.7187, 0.225, -1.125, 2.8125, -0.225, -1.2188, 2.7187, 0.225, -1.125, 2.8125, 0.225, 1.2187, 0.2812, 0.225, 1.3125, 0.375, -0.225, 1.3125, 0.375, 0.225, 1.3125, 0.375, -0.225, 1.2187, 0.2812, 0.225, 1.125, 0.1875, 0.225, 1.3125, 0.375, -0.225, 1.125, 0.1875, 0.225, 1.125, 0.1875, -0.225, 1.125, 2.8125, 0.225, 1.2187, 2.7187, -0.225, 1.125, 2.8125, -0.225, 1.2187, 2.7187, -0.225, 1.125, 2.8125, 0.225, 1.3125, 2.625, 0.225, 1.2187, 2.7187, -0.225, 1.3125, 2.625, 0.225, 1.3125, 2.625, -0.225, 1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225, 1.125, 0.1875, -0.225, 1.125, 0.1875, 0.225, -1.125, 0.1875, 0.225, -1.125, 0.1875, -0.225)
|
||||||
|
|
||||||
[sub_resource type="SphereShape3D" id="SphereShape3D_jo25b"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_jo25b"]
|
||||||
radius = 4.0
|
radius = 3.0
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id="ArrayMesh_4jho1"]
|
[sub_resource type="ArrayMesh" id="ArrayMesh_4jho1"]
|
||||||
_surfaces = [{
|
_surfaces = [{
|
||||||
|
@ -136,6 +136,7 @@ spot_angle = 98.0
|
|||||||
spot_angle_attenuation = 1.55871
|
spot_angle_attenuation = 1.55871
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||||
|
gi_mode = 2
|
||||||
mesh = SubResource("ArrayMesh_jdrpd")
|
mesh = SubResource("ArrayMesh_jdrpd")
|
||||||
|
|
||||||
[node name="FluorescentFlicker" type="AnimationPlayer" parent="MeshInstance3D"]
|
[node name="FluorescentFlicker" type="AnimationPlayer" parent="MeshInstance3D"]
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
[sub_resource type="SystemFont" id="SystemFont_twqjh"]
|
[sub_resource type="SystemFont" id="SystemFont_twqjh"]
|
||||||
font_names = PackedStringArray("Monospace")
|
font_names = PackedStringArray("Monospace")
|
||||||
|
subpixel_positioning = 0
|
||||||
|
|
||||||
[node name="TextTerminal" type="Node3D"]
|
[node name="TextTerminal" type="Node3D"]
|
||||||
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0)
|
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0)
|
||||||
|
@ -233,10 +233,12 @@ shape = SubResource("ConcavePolygonShape3D_1xqlp")
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.17, 0.24, 0.1)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.17, 0.24, 0.1)
|
||||||
|
|
||||||
[node name="DangerLight" type="MeshInstance3D" parent="Lights" index="0"]
|
[node name="DangerLight" type="MeshInstance3D" parent="Lights" index="0"]
|
||||||
|
gi_mode = 2
|
||||||
mesh = SubResource("BoxMesh_g24yf")
|
mesh = SubResource("BoxMesh_g24yf")
|
||||||
|
|
||||||
[node name="SuccessLight" type="MeshInstance3D" parent="Lights" index="1"]
|
[node name="SuccessLight" type="MeshInstance3D" parent="Lights" index="1"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.06, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.06, 0)
|
||||||
|
gi_mode = 2
|
||||||
mesh = SubResource("BoxMesh_a6hjm")
|
mesh = SubResource("BoxMesh_a6hjm")
|
||||||
|
|
||||||
[node name="SuccessSFX" type="AudioStreamPlayer3D" parent="Lights/SuccessLight" index="0"]
|
[node name="SuccessSFX" type="AudioStreamPlayer3D" parent="Lights/SuccessLight" index="0"]
|
||||||
|
@ -218,7 +218,7 @@ metadata/_custom_type_script = "uid://om57w2acvgb7"
|
|||||||
script = ExtResource("11_mbqcc")
|
script = ExtResource("11_mbqcc")
|
||||||
mean_time = 4.0
|
mean_time = 4.0
|
||||||
st_dev_time = 0.6
|
st_dev_time = 0.6
|
||||||
wait_time = 3.52038
|
wait_time = 3.57092
|
||||||
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
|
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
|
||||||
|
|
||||||
[node name="RandomStalkingBehavior" type="Node" parent="GrunkBeastBehavior/StateSelector/StalkingSequence/RandomDelay"]
|
[node name="RandomStalkingBehavior" type="Node" parent="GrunkBeastBehavior/StateSelector/StalkingSequence/RandomDelay"]
|
||||||
@ -264,7 +264,7 @@ metadata/_custom_type_script = "uid://cg016dbe7gs1x"
|
|||||||
script = ExtResource("11_mbqcc")
|
script = ExtResource("11_mbqcc")
|
||||||
mean_time = 5.0
|
mean_time = 5.0
|
||||||
st_dev_time = 1.0
|
st_dev_time = 1.0
|
||||||
wait_time = 5.84132
|
wait_time = 4.97651
|
||||||
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
|
metadata/_custom_type_script = "uid://beyk2xtbjrsg4"
|
||||||
|
|
||||||
[node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkSequence/RandomDelay"]
|
[node name="PickRandomLurkTarget" type="Node" parent="GrunkBeastBehavior/StateSelector/LurkSequence/RandomDelay"]
|
||||||
|
@ -14,6 +14,7 @@ theta_acceleration = 8.0
|
|||||||
surface_material_override/0 = ExtResource("3_htnl6")
|
surface_material_override/0 = ExtResource("3_htnl6")
|
||||||
|
|
||||||
[node name="FaceNodule" parent="." index="1"]
|
[node name="FaceNodule" parent="." index="1"]
|
||||||
|
gi_mode = 2
|
||||||
surface_material_override/0 = ExtResource("4_r4p65")
|
surface_material_override/0 = ExtResource("4_r4p65")
|
||||||
|
|
||||||
[node name="Nodule_001" parent="." index="2"]
|
[node name="Nodule_001" parent="." index="2"]
|
||||||
|
@ -1,16 +1,31 @@
|
|||||||
|
@tool
|
||||||
extends GunkNode
|
extends GunkNode
|
||||||
|
|
||||||
|
const BASE_DURABILITY := 3.0
|
||||||
|
const BASE_VALUE := 2000.0
|
||||||
const MIN_CHITTER_INTERVAL := 4.0
|
const MIN_CHITTER_INTERVAL := 4.0
|
||||||
|
|
||||||
|
@export_category("Editor Tools")
|
||||||
|
@export var randomize_rotation: bool:
|
||||||
|
set(v):
|
||||||
|
if v:
|
||||||
|
rotation = Vector3(randf_range(0, TAU), randf_range(0, TAU), randf_range(0, TAU))
|
||||||
|
@export var apply_scale: float:
|
||||||
|
set(v):
|
||||||
|
if v > 0.001:
|
||||||
|
scale = Vector3(v, v, v)
|
||||||
|
durability = BASE_DURABILITY * v
|
||||||
|
value = BASE_VALUE * v
|
||||||
|
|
||||||
|
@export_category("Jitter")
|
||||||
@export var jitter_scale_factor := 0.05
|
@export var jitter_scale_factor := 0.05
|
||||||
@export var jitter_inflation_factor := 1.0
|
@export var jitter_inflation_factor := 1.0
|
||||||
|
|
||||||
|
@export_category("Chatter")
|
||||||
@export var chitter: bool = false
|
@export var chitter: bool = false
|
||||||
@export var chitter_time_mean := 60.0
|
@export var chitter_time_mean := 60.0
|
||||||
@export var chitter_time_st_dev := 30.0
|
@export var chitter_time_st_dev := 30.0
|
||||||
|
|
||||||
@export var splatter_scene: PackedScene
|
|
||||||
|
|
||||||
@onready var mesh_instance: MeshInstance3D = %MeshInstance3D
|
@onready var mesh_instance: MeshInstance3D = %MeshInstance3D
|
||||||
|
|
||||||
@onready var chitter_sfx: AudioStreamPlayer3D = %ChitterSFX
|
@onready var chitter_sfx: AudioStreamPlayer3D = %ChitterSFX
|
||||||
@ -18,11 +33,17 @@ const MIN_CHITTER_INTERVAL := 4.0
|
|||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
return
|
||||||
|
|
||||||
if chitter:
|
if chitter:
|
||||||
start_chitter_timer()
|
start_chitter_timer()
|
||||||
|
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
return
|
||||||
|
|
||||||
super._process(delta)
|
super._process(delta)
|
||||||
var shader: ShaderMaterial = mesh_instance.mesh.surface_get_material(0)
|
var shader: ShaderMaterial = mesh_instance.mesh.surface_get_material(0)
|
||||||
var damage := pct_damage()
|
var damage := pct_damage()
|
||||||
@ -30,13 +51,6 @@ func _process(delta: float) -> void:
|
|||||||
shader.set_shader_parameter("vertex_inflation", pow(damage * jitter_inflation_factor, 3))
|
shader.set_shader_parameter("vertex_inflation", pow(damage * jitter_inflation_factor, 3))
|
||||||
|
|
||||||
|
|
||||||
func _destroy() -> void:
|
|
||||||
var splatter: GPUParticles3D = splatter_scene.instantiate()
|
|
||||||
add_sibling(splatter)
|
|
||||||
splatter.global_position = global_position
|
|
||||||
splatter.emitting = true
|
|
||||||
|
|
||||||
|
|
||||||
func start_chitter_timer() -> void:
|
func start_chitter_timer() -> void:
|
||||||
var interval := maxf(MIN_CHITTER_INTERVAL, randfn(chitter_time_mean, chitter_time_st_dev))
|
var interval := maxf(MIN_CHITTER_INTERVAL, randfn(chitter_time_mean, chitter_time_st_dev))
|
||||||
chitter_timer.start(interval)
|
chitter_timer.start(interval)
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
[gd_scene load_steps=12 format=4 uid="uid://2yqi5u5eo025"]
|
[gd_scene load_steps=11 format=4 uid="uid://2yqi5u5eo025"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://07t7yhijru8f" path="res://src/world/gunk_node/grunk_nodule.gd" id="1_iyr82"]
|
[ext_resource type="Script" uid="uid://07t7yhijru8f" path="res://src/world/gunk_node/grunk_nodule.gd" id="1_iyr82"]
|
||||||
[ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_m8r0a"]
|
|
||||||
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_eu6j6"]
|
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_eu6j6"]
|
||||||
[ext_resource type="AudioStream" uid="uid://bb560r2wvjfht" path="res://assets/sfx/grunk/greeble1.wav" id="4_7fplw"]
|
[ext_resource type="AudioStream" uid="uid://bb560r2wvjfht" path="res://assets/sfx/grunk/greeble1.wav" id="4_7fplw"]
|
||||||
[ext_resource type="AudioStream" uid="uid://dunakapj3mb0h" path="res://assets/sfx/grunk/greeble2.wav" id="5_omayi"]
|
[ext_resource type="AudioStream" uid="uid://dunakapj3mb0h" path="res://assets/sfx/grunk/greeble2.wav" id="5_omayi"]
|
||||||
@ -55,7 +54,6 @@ stream_3/stream = ExtResource("7_4kci5")
|
|||||||
collision_layer = 36
|
collision_layer = 36
|
||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
script = ExtResource("1_iyr82")
|
script = ExtResource("1_iyr82")
|
||||||
splatter_scene = ExtResource("2_m8r0a")
|
|
||||||
durability = 3.0
|
durability = 3.0
|
||||||
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
||||||
|
|
||||||
|
@ -13,6 +13,9 @@ const JITTER_FADE_RATE := 0.8
|
|||||||
## Value added to the player's grunk total on destruction.
|
## Value added to the player's grunk total on destruction.
|
||||||
@export var value := 1000.0
|
@export var value := 1000.0
|
||||||
|
|
||||||
|
## Scale factor applied to the size and volume of the splatter effect on destruction.
|
||||||
|
@export var splatter_scale := 1.0
|
||||||
|
|
||||||
var _sustained_damage := 0.0
|
var _sustained_damage := 0.0
|
||||||
var _hit_this_frame := false
|
var _hit_this_frame := false
|
||||||
|
|
||||||
@ -55,6 +58,9 @@ func collect() -> void:
|
|||||||
## Derived types should override `_destroy` as a lifecycle method.
|
## Derived types should override `_destroy` as a lifecycle method.
|
||||||
func destroy() -> void:
|
func destroy() -> void:
|
||||||
Game.manager.collect_grunk(value)
|
Game.manager.collect_grunk(value)
|
||||||
|
var splatter := GrunkSplatter.build(splatter_scale * scale.x)
|
||||||
|
add_sibling(splatter)
|
||||||
|
splatter.global_position = global_position
|
||||||
_destroy()
|
_destroy()
|
||||||
destroyed.emit()
|
destroyed.emit()
|
||||||
queue_free()
|
queue_free()
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
[gd_scene load_steps=31 format=4 uid="uid://b8rv6dg4tgaeb"]
|
[gd_scene load_steps=31 format=4 uid="uid://b8rv6dg4tgaeb"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bvua1l2hb3an6" path="res://levels/mechanic_test/mechanic_test.gd" id="1_bg05n"]
|
[ext_resource type="Script" uid="uid://bvua1l2hb3an6" path="res://levels/mechanic_test/mechanic_test.gd" id="1_umjw2"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="1_goufh"]
|
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="2_gut8u"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="2_pka60"]
|
[ext_resource type="PackedScene" uid="uid://b6eg8t04rkh0c" path="res://src/props/wall_switch/wall_switch.tscn" id="3_4okgx"]
|
||||||
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="4_2uiim"]
|
[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="4_7v7un"]
|
||||||
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="5_0j1ke"]
|
[ext_resource type="Texture2D" uid="uid://8cm835h4gxwe" path="res://assets/debug_mask.png" id="5_llot1"]
|
||||||
[ext_resource type="Texture2D" uid="uid://8cm835h4gxwe" path="res://assets/debug_mask.png" id="5_x2vho"]
|
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="6_6agnv"]
|
||||||
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_x2vho"]
|
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="7_aqwgb"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cubwniraol1qn" path="res://src/props/bulkhead/bulkhead.tscn" id="8_f342o"]
|
[ext_resource type="PackedScene" uid="uid://cubwniraol1qn" path="res://src/props/bulkhead/bulkhead.tscn" id="8_ny31q"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b5jubpjj3d277" path="res://levels/mechanic_test/signal_test.tscn" id="9_x2vho"]
|
[ext_resource type="PackedScene" uid="uid://b5jubpjj3d277" path="res://levels/mechanic_test/signal_test.tscn" id="9_dub8r"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cfqirm2o3uo4k" path="res://levels/mechanic_test/prop_test.tscn" id="10_f342o"]
|
[ext_resource type="PackedScene" uid="uid://cfqirm2o3uo4k" path="res://levels/mechanic_test/prop_test.tscn" id="10_ovu60"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dbabcsp38wmid" path="res://levels/mechanic_test/item_test.tscn" id="11_iyuyb"]
|
[ext_resource type="PackedScene" uid="uid://dbabcsp38wmid" path="res://levels/mechanic_test/item_test.tscn" id="11_crh2u"]
|
||||||
|
|
||||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_goufh"]
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_goufh"]
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ height = 256
|
|||||||
depth = 32
|
depth = 32
|
||||||
seamless = true
|
seamless = true
|
||||||
seamless_blend_skirt = 0.5
|
seamless_blend_skirt = 0.5
|
||||||
noise = ExtResource("6_x2vho")
|
noise = ExtResource("7_aqwgb")
|
||||||
|
|
||||||
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2pd8h"]
|
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2pd8h"]
|
||||||
width = 256
|
width = 256
|
||||||
@ -101,12 +101,12 @@ height = 256
|
|||||||
depth = 32
|
depth = 32
|
||||||
seamless = true
|
seamless = true
|
||||||
seamless_blend_skirt = 0.5
|
seamless_blend_skirt = 0.5
|
||||||
noise = ExtResource("6_x2vho")
|
noise = ExtResource("7_aqwgb")
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_iyuyb"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_umjw2"]
|
||||||
resource_local_to_scene = true
|
resource_local_to_scene = true
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
shader = ExtResource("5_0j1ke")
|
shader = ExtResource("6_6agnv")
|
||||||
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
|
shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
|
||||||
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
|
shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
|
||||||
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
|
shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
|
||||||
@ -131,9 +131,9 @@ shader_parameter/overlay_emission_scale = 1.0
|
|||||||
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)
|
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)
|
||||||
|
|
||||||
[node name="MechanicTest" type="Node3D"]
|
[node name="MechanicTest" type="Node3D"]
|
||||||
script = ExtResource("1_bg05n")
|
script = ExtResource("1_umjw2")
|
||||||
|
|
||||||
[node name="Player" parent="." instance=ExtResource("1_goufh")]
|
[node name="Player" parent="." instance=ExtResource("2_gut8u")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.65, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.65, 0)
|
||||||
|
|
||||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||||
@ -160,7 +160,7 @@ mesh = SubResource("BoxMesh_goufh")
|
|||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="ResetPodium"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="ResetPodium"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||||
|
|
||||||
[node name="ResetSwitch" parent="ResetPodium" instance=ExtResource("2_pka60")]
|
[node name="ResetSwitch" parent="ResetPodium" instance=ExtResource("3_4okgx")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||||
clean = true
|
clean = true
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ mesh = SubResource("BoxMesh_goufh")
|
|||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="NoduleSpawner"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="NoduleSpawner"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||||
|
|
||||||
[node name="WallSwitch" parent="NoduleSpawner" instance=ExtResource("2_pka60")]
|
[node name="WallSwitch" parent="NoduleSpawner" instance=ExtResource("3_4okgx")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||||
clean = true
|
clean = true
|
||||||
|
|
||||||
@ -199,7 +199,7 @@ mesh = SubResource("BoxMesh_goufh")
|
|||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmSpawner"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmSpawner"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||||
|
|
||||||
[node name="WallSwitch" parent="AlarmSpawner" instance=ExtResource("2_pka60")]
|
[node name="WallSwitch" parent="AlarmSpawner" instance=ExtResource("3_4okgx")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||||
clean = true
|
clean = true
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ mesh = SubResource("BoxMesh_goufh")
|
|||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmTrigger"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="AlarmTrigger"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||||
|
|
||||||
[node name="AlarmTriggerSwitch" parent="AlarmTrigger" instance=ExtResource("2_pka60")]
|
[node name="AlarmTriggerSwitch" parent="AlarmTrigger" instance=ExtResource("3_4okgx")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||||
clean = true
|
clean = true
|
||||||
|
|
||||||
@ -234,15 +234,15 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0, -31)
|
|||||||
mesh = SubResource("ArrayMesh_x2vho")
|
mesh = SubResource("ArrayMesh_x2vho")
|
||||||
skeleton = NodePath("GunkHallBody")
|
skeleton = NodePath("GunkHallBody")
|
||||||
|
|
||||||
[node name="GunkHallBody" parent="GunkHall" instance=ExtResource("4_2uiim")]
|
[node name="GunkHallBody" parent="GunkHall" instance=ExtResource("4_7v7un")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
initial_mask = ExtResource("5_x2vho")
|
initial_mask = ExtResource("5_llot1")
|
||||||
source_gunk_material = SubResource("ShaderMaterial_iyuyb")
|
source_gunk_material = SubResource("ShaderMaterial_umjw2")
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="GunkHall/GunkHallBody"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="GunkHall/GunkHallBody"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_qjnj2")
|
shape = SubResource("ConcavePolygonShape3D_qjnj2")
|
||||||
|
|
||||||
[node name="Bulkhead" parent="." instance=ExtResource("8_f342o")]
|
[node name="Bulkhead" parent="." instance=ExtResource("8_ny31q")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.5, 0, -2)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.5, 0, -2)
|
||||||
|
|
||||||
[node name="Podium" type="StaticBody3D" parent="Bulkhead"]
|
[node name="Podium" type="StaticBody3D" parent="Bulkhead"]
|
||||||
@ -254,7 +254,7 @@ mesh = SubResource("BoxMesh_goufh")
|
|||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bulkhead/Podium"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bulkhead/Podium"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||||
|
|
||||||
[node name="OpenSwitch" parent="Bulkhead/Podium" instance=ExtResource("2_pka60")]
|
[node name="OpenSwitch" parent="Bulkhead/Podium" instance=ExtResource("3_4okgx")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||||
clean = true
|
clean = true
|
||||||
@ -272,7 +272,7 @@ mesh = SubResource("BoxMesh_goufh")
|
|||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bulkhead/Podium2"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bulkhead/Podium2"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
shape = SubResource("ConcavePolygonShape3D_bg05n")
|
||||||
|
|
||||||
[node name="CloseSwitch" parent="Bulkhead/Podium2" instance=ExtResource("2_pka60")]
|
[node name="CloseSwitch" parent="Bulkhead/Podium2" instance=ExtResource("3_4okgx")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0.35)
|
||||||
clean = true
|
clean = true
|
||||||
@ -286,19 +286,19 @@ text = "Close"
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0, -6)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 0, -6)
|
||||||
|
|
||||||
[node name="SignalTest" parent="SignalTestSpawnPoint" instance=ExtResource("9_x2vho")]
|
[node name="SignalTest" parent="SignalTestSpawnPoint" instance=ExtResource("9_dub8r")]
|
||||||
|
|
||||||
[node name="PropTestSpawnPoint" type="Marker3D" parent="."]
|
[node name="PropTestSpawnPoint" type="Marker3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 4.5)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 0, 4.5)
|
||||||
|
|
||||||
[node name="PropTest" parent="PropTestSpawnPoint" instance=ExtResource("10_f342o")]
|
[node name="PropTest" parent="PropTestSpawnPoint" instance=ExtResource("10_ovu60")]
|
||||||
|
|
||||||
[node name="ItemTestSpawnPoint" type="Marker3D" parent="."]
|
[node name="ItemTestSpawnPoint" type="Marker3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13, 0, -2)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13, 0, -2)
|
||||||
|
|
||||||
[node name="ItemTest" parent="ItemTestSpawnPoint" instance=ExtResource("11_iyuyb")]
|
[node name="ItemTest" parent="ItemTestSpawnPoint" instance=ExtResource("11_crh2u")]
|
||||||
|
|
||||||
[connection signal="activated" from="ResetPodium/ResetSwitch" to="." method="reset"]
|
[connection signal="activated" from="ResetPodium/ResetSwitch" to="." method="reset"]
|
||||||
[connection signal="activated" from="NoduleSpawner/WallSwitch" to="." method="spawn_nodule"]
|
[connection signal="activated" from="NoduleSpawner/WallSwitch" to="." method="spawn_nodule"]
|
@ -43,34 +43,6 @@ _surfaces = [{
|
|||||||
}]
|
}]
|
||||||
blend_shape_mode = 0
|
blend_shape_mode = 0
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_6vdvf"]
|
|
||||||
resource_name = "trigger"
|
|
||||||
length = 6.0
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath("FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud:mesh:surface_0/material:shader_parameter/emission_color")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0, 0.333333, 5.3, 6),
|
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Color(0.25, 0.88, 1, 1), Color(1, 0.25, 0.2625, 1), Color(1, 0.25, 0.2625, 1), Color(0.25, 0.88, 1, 1)]
|
|
||||||
}
|
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/path = NodePath("FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud:mesh:surface_0/material:shader_parameter/emission_strength")
|
|
||||||
tracks/1/interp = 2
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PackedFloat32Array(0, 0.333333, 0.9, 3.96667, 5.3, 6),
|
|
||||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [0.02, 0.05, 10.0, 10.0, 0.05, 0.02]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_g4yos"]
|
[sub_resource type="Animation" id="Animation_g4yos"]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
@ -98,6 +70,34 @@ tracks/1/keys = {
|
|||||||
"values": [0.02]
|
"values": [0.02]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_6vdvf"]
|
||||||
|
resource_name = "trigger"
|
||||||
|
length = 10.0
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud:mesh:surface_0/material:shader_parameter/emission_color")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 9, 10),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0.25, 0.88, 1, 1), Color(1, 0.25, 0.2625, 1), Color(1, 0.25, 0.2625, 1), Color(0.25, 0.88, 1, 1)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("FrameSkipper/AlarmMesh/Armature/Skeleton3D/Bud:mesh:surface_0/material:shader_parameter/emission_strength")
|
||||||
|
tracks/1/interp = 2
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.333333, 0.9, 3.96667, 10),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 0.618, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0.02, 0.05, 10.0, 10.0, 0.02]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vokcn"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vokcn"]
|
||||||
_data = {
|
_data = {
|
||||||
&"RESET": SubResource("Animation_g4yos"),
|
&"RESET": SubResource("Animation_g4yos"),
|
||||||
@ -158,6 +158,7 @@ bones/27/rotation = Quaternion(0.388328, 2.1633e-07, -1.09183e-07, 0.921521)
|
|||||||
bones/28/rotation = Quaternion(0.362943, -7.93195e-08, 1.03952e-07, 0.931811)
|
bones/28/rotation = Quaternion(0.362943, -7.93195e-08, 1.03952e-07, 0.931811)
|
||||||
|
|
||||||
[node name="Bud" parent="FrameSkipper/AlarmMesh/Armature/Skeleton3D" index="0"]
|
[node name="Bud" parent="FrameSkipper/AlarmMesh/Armature/Skeleton3D" index="0"]
|
||||||
|
gi_mode = 2
|
||||||
mesh = SubResource("ArrayMesh_c5y52")
|
mesh = SubResource("ArrayMesh_c5y52")
|
||||||
|
|
||||||
[node name="AnimationPlayer" parent="FrameSkipper/AlarmMesh" index="1"]
|
[node name="AnimationPlayer" parent="FrameSkipper/AlarmMesh" index="1"]
|
||||||
@ -189,6 +190,7 @@ unique_name_in_owner = true
|
|||||||
stream = ExtResource("6_6vdvf")
|
stream = ExtResource("6_6vdvf")
|
||||||
pitch_scale = 1.1
|
pitch_scale = 1.1
|
||||||
|
|
||||||
|
[connection signal="animation_finished" from="FrameSkipper/AlarmMesh/AnimationPlayer" to="." method="_on_animation_finished"]
|
||||||
[connection signal="timeout" from="PulseListenerTimer" to="." method="trigger"]
|
[connection signal="timeout" from="PulseListenerTimer" to="." method="trigger"]
|
||||||
|
|
||||||
[editable path="FrameSkipper/AlarmMesh"]
|
[editable path="FrameSkipper/AlarmMesh"]
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
@tool
|
||||||
extends GunkNode
|
extends GunkNode
|
||||||
## Periodically emits a pulse.
|
## Periodically emits a pulse.
|
||||||
|
|
||||||
@ -7,15 +8,24 @@ signal pulsed
|
|||||||
## Time in seconds between pulses.
|
## Time in seconds between pulses.
|
||||||
@export var interval := 3.0
|
@export var interval := 3.0
|
||||||
|
|
||||||
|
@export var quick_connect_to: SignalNode:
|
||||||
|
set = _editor_connect
|
||||||
|
|
||||||
@onready var pulse_timer: Timer = %PulseTimer
|
@onready var pulse_timer: Timer = %PulseTimer
|
||||||
@onready var animation_player: AnimationPlayer = %AnimationPlayer
|
@onready var animation_player: AnimationPlayer = %AnimationPlayer
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
pulse_timer.start(interval)
|
if not Engine.is_editor_hint():
|
||||||
|
pulse_timer.start(interval)
|
||||||
|
|
||||||
|
|
||||||
func pulse() -> void:
|
func pulse() -> void:
|
||||||
# TODO animation
|
# TODO animation
|
||||||
animation_player.play("pulse")
|
animation_player.play("pulse")
|
||||||
pulsed.emit()
|
pulsed.emit()
|
||||||
|
|
||||||
|
|
||||||
|
func _editor_connect(node: SignalNode) -> void:
|
||||||
|
self.pulsed.connect(node.pulse, CONNECT_PERSIST)
|
||||||
|
self.notify_property_list_changed()
|
||||||
|
@ -7,8 +7,6 @@ signal triggered
|
|||||||
@export var quick_connect_to: SignalNode:
|
@export var quick_connect_to: SignalNode:
|
||||||
set = _editor_connect
|
set = _editor_connect
|
||||||
|
|
||||||
@export var splatter_scene: PackedScene
|
|
||||||
|
|
||||||
# NOTE
|
# NOTE
|
||||||
# trigger oscillation animation was generated using the formula
|
# trigger oscillation animation was generated using the formula
|
||||||
# f(x) = e^(-0.25x) * cos(x * pi / 2 - pi/2) + 1 for x in {0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 20}
|
# f(x) = e^(-0.25x) * cos(x * pi / 2 - pi/2) + 1 for x in {0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 20}
|
||||||
@ -27,10 +25,6 @@ func trigger() -> void:
|
|||||||
cooldown_timer.start()
|
cooldown_timer.start()
|
||||||
|
|
||||||
|
|
||||||
func _destroy() -> void:
|
|
||||||
add_sibling(splatter_scene.instantiate())
|
|
||||||
|
|
||||||
|
|
||||||
func _editor_connect(node: SignalNode) -> void:
|
func _editor_connect(node: SignalNode) -> void:
|
||||||
triggered.connect(node.trigger, CONNECT_PERSIST)
|
triggered.connect(node.trigger, CONNECT_PERSIST)
|
||||||
self.notify_property_list_changed()
|
self.notify_property_list_changed()
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
[gd_scene load_steps=9 format=3 uid="uid://kctp5erogwcb"]
|
[gd_scene load_steps=9 format=3 uid="uid://kctp5erogwcb"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bde7cglaqobkd" path="res://src/world/mechanics/listener/listener.gd" id="1_htscg"]
|
[ext_resource type="Script" uid="uid://bde7cglaqobkd" path="res://src/world/mechanics/listener/listener.gd" id="1_htscg"]
|
||||||
[ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_2ibh1"]
|
|
||||||
[ext_resource type="Script" uid="uid://cfsiyhhrcua6o" path="res://src/world/game_sound/game_sound_listener.gd" id="2_htscg"]
|
[ext_resource type="Script" uid="uid://cfsiyhhrcua6o" path="res://src/world/game_sound/game_sound_listener.gd" id="2_htscg"]
|
||||||
|
|
||||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2ibh1"]
|
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2ibh1"]
|
||||||
data = PackedVector3Array(0, 0.05, 0.25, 0.0957, 0.05, 0.231, 0, -0.05, 0.2, 0.0957, 0.05, 0.231, 0.0765, -0.05, 0.1848, 0, -0.05, 0.2, 0.0957, 0.05, 0.231, 0.1768, 0.05, 0.1768, 0.0765, -0.05, 0.1848, 0.1768, 0.05, 0.1768, 0.1414, -0.05, 0.1414, 0.0765, -0.05, 0.1848, 0.1768, 0.05, 0.1768, 0.231, 0.05, 0.0957, 0.1414, -0.05, 0.1414, 0.231, 0.05, 0.0957, 0.1848, -0.05, 0.0765, 0.1414, -0.05, 0.1414, 0.231, 0.05, 0.0957, 0.25, 0.05, 0, 0.1848, -0.05, 0.0765, 0.25, 0.05, 0, 0.2, -0.05, 0, 0.1848, -0.05, 0.0765, 0.25, 0.05, 0, 0.231, 0.05, -0.0957, 0.2, -0.05, 0, 0.231, 0.05, -0.0957, 0.1848, -0.05, -0.0765, 0.2, -0.05, 0, 0.231, 0.05, -0.0957, 0.1768, 0.05, -0.1768, 0.1848, -0.05, -0.0765, 0.1768, 0.05, -0.1768, 0.1414, -0.05, -0.1414, 0.1848, -0.05, -0.0765, 0.1768, 0.05, -0.1768, 0.0957, 0.05, -0.231, 0.1414, -0.05, -0.1414, 0.0957, 0.05, -0.231, 0.0765, -0.05, -0.1848, 0.1414, -0.05, -0.1414, 0.0957, 0.05, -0.231, 0, 0.05, -0.25, 0.0765, -0.05, -0.1848, 0, 0.05, -0.25, 0, -0.05, -0.2, 0.0765, -0.05, -0.1848, 0, 0.05, -0.25, -0.0957, 0.05, -0.231, 0, -0.05, -0.2, -0.0957, 0.05, -0.231, -0.0765, -0.05, -0.1848, 0, -0.05, -0.2, -0.0957, 0.05, -0.231, -0.1768, 0.05, -0.1768, -0.0765, -0.05, -0.1848, -0.1768, 0.05, -0.1768, -0.1414, -0.05, -0.1414, -0.0765, -0.05, -0.1848, -0.1768, 0.05, -0.1768, -0.231, 0.05, -0.0957, -0.1414, -0.05, -0.1414, -0.231, 0.05, -0.0957, -0.1848, -0.05, -0.0765, -0.1414, -0.05, -0.1414, -0.231, 0.05, -0.0957, -0.25, 0.05, 0, -0.1848, -0.05, -0.0765, -0.25, 0.05, 0, -0.2, -0.05, 0, -0.1848, -0.05, -0.0765, -0.25, 0.05, 0, -0.231, 0.05, 0.0957, -0.2, -0.05, 0, -0.231, 0.05, 0.0957, -0.1848, -0.05, 0.0765, -0.2, -0.05, 0, -0.231, 0.05, 0.0957, -0.1768, 0.05, 0.1768, -0.1848, -0.05, 0.0765, -0.1768, 0.05, 0.1768, -0.1414, -0.05, 0.1414, -0.1848, -0.05, 0.0765, -0.1768, 0.05, 0.1768, -0.0957, 0.05, 0.231, -0.1414, -0.05, 0.1414, -0.0957, 0.05, 0.231, -0.0765, -0.05, 0.1848, -0.1414, -0.05, 0.1414, -0.0957, 0.05, 0.231, 0, 0.05, 0.25, -0.0765, -0.05, 0.1848, 0, 0.05, 0.25, 0, -0.05, 0.2, -0.0765, -0.05, 0.1848, 0, 0.05, 0, 0.0957, 0.05, 0.231, 0, 0.05, 0.25, 0, 0.05, 0, 0.1768, 0.05, 0.1768, 0.0957, 0.05, 0.231, 0, 0.05, 0, 0.231, 0.05, 0.0957, 0.1768, 0.05, 0.1768, 0, 0.05, 0, 0.25, 0.05, 0, 0.231, 0.05, 0.0957, 0, 0.05, 0, 0.231, 0.05, -0.0957, 0.25, 0.05, 0, 0, 0.05, 0, 0.1768, 0.05, -0.1768, 0.231, 0.05, -0.0957, 0, 0.05, 0, 0.0957, 0.05, -0.231, 0.1768, 0.05, -0.1768, 0, 0.05, 0, 0, 0.05, -0.25, 0.0957, 0.05, -0.231, 0, 0.05, 0, -0.0957, 0.05, -0.231, 0, 0.05, -0.25, 0, 0.05, 0, -0.1768, 0.05, -0.1768, -0.0957, 0.05, -0.231, 0, 0.05, 0, -0.231, 0.05, -0.0957, -0.1768, 0.05, -0.1768, 0, 0.05, 0, -0.25, 0.05, 0, -0.231, 0.05, -0.0957, 0, 0.05, 0, -0.231, 0.05, 0.0957, -0.25, 0.05, 0, 0, 0.05, 0, -0.1768, 0.05, 0.1768, -0.231, 0.05, 0.0957, 0, 0.05, 0, -0.0957, 0.05, 0.231, -0.1768, 0.05, 0.1768, 0, 0.05, 0, 0, 0.05, 0.25, -0.0957, 0.05, 0.231, 0, -0.05, 0, 0, -0.05, 0.2, 0.0765, -0.05, 0.1848, 0, -0.05, 0, 0.0765, -0.05, 0.1848, 0.1414, -0.05, 0.1414, 0, -0.05, 0, 0.1414, -0.05, 0.1414, 0.1848, -0.05, 0.0765, 0, -0.05, 0, 0.1848, -0.05, 0.0765, 0.2, -0.05, 0, 0, -0.05, 0, 0.2, -0.05, 0, 0.1848, -0.05, -0.0765, 0, -0.05, 0, 0.1848, -0.05, -0.0765, 0.1414, -0.05, -0.1414, 0, -0.05, 0, 0.1414, -0.05, -0.1414, 0.0765, -0.05, -0.1848, 0, -0.05, 0, 0.0765, -0.05, -0.1848, 0, -0.05, -0.2, 0, -0.05, 0, 0, -0.05, -0.2, -0.0765, -0.05, -0.1848, 0, -0.05, 0, -0.0765, -0.05, -0.1848, -0.1414, -0.05, -0.1414, 0, -0.05, 0, -0.1414, -0.05, -0.1414, -0.1848, -0.05, -0.0765, 0, -0.05, 0, -0.1848, -0.05, -0.0765, -0.2, -0.05, 0, 0, -0.05, 0, -0.2, -0.05, 0, -0.1848, -0.05, 0.0765, 0, -0.05, 0, -0.1848, -0.05, 0.0765, -0.1414, -0.05, 0.1414, 0, -0.05, 0, -0.1414, -0.05, 0.1414, -0.0765, -0.05, 0.1848, 0, -0.05, 0, -0.0765, -0.05, 0.1848, 0, -0.05, 0.2)
|
data = PackedVector3Array(0, 0.05, 0.25, 0.0957, 0.05, 0.231, 0, -0.05, 0.2, 0.0957, 0.05, 0.231, 0.0765, -0.05, 0.1848, 0, -0.05, 0.2, 0.0957, 0.05, 0.231, 0.1768, 0.05, 0.1768, 0.0765, -0.05, 0.1848, 0.1768, 0.05, 0.1768, 0.1414, -0.05, 0.1414, 0.0765, -0.05, 0.1848, 0.1768, 0.05, 0.1768, 0.231, 0.05, 0.0957, 0.1414, -0.05, 0.1414, 0.231, 0.05, 0.0957, 0.1848, -0.05, 0.0765, 0.1414, -0.05, 0.1414, 0.231, 0.05, 0.0957, 0.25, 0.05, 0, 0.1848, -0.05, 0.0765, 0.25, 0.05, 0, 0.2, -0.05, 0, 0.1848, -0.05, 0.0765, 0.25, 0.05, 0, 0.231, 0.05, -0.0957, 0.2, -0.05, 0, 0.231, 0.05, -0.0957, 0.1848, -0.05, -0.0765, 0.2, -0.05, 0, 0.231, 0.05, -0.0957, 0.1768, 0.05, -0.1768, 0.1848, -0.05, -0.0765, 0.1768, 0.05, -0.1768, 0.1414, -0.05, -0.1414, 0.1848, -0.05, -0.0765, 0.1768, 0.05, -0.1768, 0.0957, 0.05, -0.231, 0.1414, -0.05, -0.1414, 0.0957, 0.05, -0.231, 0.0765, -0.05, -0.1848, 0.1414, -0.05, -0.1414, 0.0957, 0.05, -0.231, 0, 0.05, -0.25, 0.0765, -0.05, -0.1848, 0, 0.05, -0.25, 0, -0.05, -0.2, 0.0765, -0.05, -0.1848, 0, 0.05, -0.25, -0.0957, 0.05, -0.231, 0, -0.05, -0.2, -0.0957, 0.05, -0.231, -0.0765, -0.05, -0.1848, 0, -0.05, -0.2, -0.0957, 0.05, -0.231, -0.1768, 0.05, -0.1768, -0.0765, -0.05, -0.1848, -0.1768, 0.05, -0.1768, -0.1414, -0.05, -0.1414, -0.0765, -0.05, -0.1848, -0.1768, 0.05, -0.1768, -0.231, 0.05, -0.0957, -0.1414, -0.05, -0.1414, -0.231, 0.05, -0.0957, -0.1848, -0.05, -0.0765, -0.1414, -0.05, -0.1414, -0.231, 0.05, -0.0957, -0.25, 0.05, 0, -0.1848, -0.05, -0.0765, -0.25, 0.05, 0, -0.2, -0.05, 0, -0.1848, -0.05, -0.0765, -0.25, 0.05, 0, -0.231, 0.05, 0.0957, -0.2, -0.05, 0, -0.231, 0.05, 0.0957, -0.1848, -0.05, 0.0765, -0.2, -0.05, 0, -0.231, 0.05, 0.0957, -0.1768, 0.05, 0.1768, -0.1848, -0.05, 0.0765, -0.1768, 0.05, 0.1768, -0.1414, -0.05, 0.1414, -0.1848, -0.05, 0.0765, -0.1768, 0.05, 0.1768, -0.0957, 0.05, 0.231, -0.1414, -0.05, 0.1414, -0.0957, 0.05, 0.231, -0.0765, -0.05, 0.1848, -0.1414, -0.05, 0.1414, -0.0957, 0.05, 0.231, 0, 0.05, 0.25, -0.0765, -0.05, 0.1848, 0, 0.05, 0.25, 0, -0.05, 0.2, -0.0765, -0.05, 0.1848, 0, 0.05, 0, 0.0957, 0.05, 0.231, 0, 0.05, 0.25, 0, 0.05, 0, 0.1768, 0.05, 0.1768, 0.0957, 0.05, 0.231, 0, 0.05, 0, 0.231, 0.05, 0.0957, 0.1768, 0.05, 0.1768, 0, 0.05, 0, 0.25, 0.05, 0, 0.231, 0.05, 0.0957, 0, 0.05, 0, 0.231, 0.05, -0.0957, 0.25, 0.05, 0, 0, 0.05, 0, 0.1768, 0.05, -0.1768, 0.231, 0.05, -0.0957, 0, 0.05, 0, 0.0957, 0.05, -0.231, 0.1768, 0.05, -0.1768, 0, 0.05, 0, 0, 0.05, -0.25, 0.0957, 0.05, -0.231, 0, 0.05, 0, -0.0957, 0.05, -0.231, 0, 0.05, -0.25, 0, 0.05, 0, -0.1768, 0.05, -0.1768, -0.0957, 0.05, -0.231, 0, 0.05, 0, -0.231, 0.05, -0.0957, -0.1768, 0.05, -0.1768, 0, 0.05, 0, -0.25, 0.05, 0, -0.231, 0.05, -0.0957, 0, 0.05, 0, -0.231, 0.05, 0.0957, -0.25, 0.05, 0, 0, 0.05, 0, -0.1768, 0.05, 0.1768, -0.231, 0.05, 0.0957, 0, 0.05, 0, -0.0957, 0.05, 0.231, -0.1768, 0.05, 0.1768, 0, 0.05, 0, 0, 0.05, 0.25, -0.0957, 0.05, 0.231, 0, -0.05, 0, 0, -0.05, 0.2, 0.0765, -0.05, 0.1848, 0, -0.05, 0, 0.0765, -0.05, 0.1848, 0.1414, -0.05, 0.1414, 0, -0.05, 0, 0.1414, -0.05, 0.1414, 0.1848, -0.05, 0.0765, 0, -0.05, 0, 0.1848, -0.05, 0.0765, 0.2, -0.05, 0, 0, -0.05, 0, 0.2, -0.05, 0, 0.1848, -0.05, -0.0765, 0, -0.05, 0, 0.1848, -0.05, -0.0765, 0.1414, -0.05, -0.1414, 0, -0.05, 0, 0.1414, -0.05, -0.1414, 0.0765, -0.05, -0.1848, 0, -0.05, 0, 0.0765, -0.05, -0.1848, 0, -0.05, -0.2, 0, -0.05, 0, 0, -0.05, -0.2, -0.0765, -0.05, -0.1848, 0, -0.05, 0, -0.0765, -0.05, -0.1848, -0.1414, -0.05, -0.1414, 0, -0.05, 0, -0.1414, -0.05, -0.1414, -0.1848, -0.05, -0.0765, 0, -0.05, 0, -0.1848, -0.05, -0.0765, -0.2, -0.05, 0, 0, -0.05, 0, -0.2, -0.05, 0, -0.1848, -0.05, 0.0765, 0, -0.05, 0, -0.1848, -0.05, 0.0765, -0.1414, -0.05, 0.1414, 0, -0.05, 0, -0.1414, -0.05, 0.1414, -0.0765, -0.05, 0.1848, 0, -0.05, 0, -0.0765, -0.05, 0.1848, 0, -0.05, 0.2)
|
||||||
|
|
||||||
|
[sub_resource type="SphereShape3D" id="SphereShape3D_2ibh1"]
|
||||||
|
radius = 1.0
|
||||||
|
|
||||||
[sub_resource type="CylinderMesh" id="CylinderMesh_ud3xk"]
|
[sub_resource type="CylinderMesh" id="CylinderMesh_ud3xk"]
|
||||||
top_radius = 0.25
|
top_radius = 0.25
|
||||||
bottom_radius = 0.2
|
bottom_radius = 0.2
|
||||||
@ -55,7 +57,6 @@ _data = {
|
|||||||
collision_layer = 36
|
collision_layer = 36
|
||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
script = ExtResource("1_htscg")
|
script = ExtResource("1_htscg")
|
||||||
splatter_scene = ExtResource("2_2ibh1")
|
|
||||||
durability = 3.0
|
durability = 3.0
|
||||||
value = 4000.0
|
value = 4000.0
|
||||||
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
||||||
@ -71,9 +72,10 @@ script = ExtResource("2_htscg")
|
|||||||
metadata/_custom_type_script = "uid://cfsiyhhrcua6o"
|
metadata/_custom_type_script = "uid://cfsiyhhrcua6o"
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="CollisionShape3D/GameSoundListener"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="CollisionShape3D/GameSoundListener"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_2ibh1")
|
shape = SubResource("SphereShape3D_2ibh1")
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="CollisionShape3D"]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="CollisionShape3D"]
|
||||||
|
gi_mode = 2
|
||||||
mesh = SubResource("CylinderMesh_ud3xk")
|
mesh = SubResource("CylinderMesh_ud3xk")
|
||||||
skeleton = NodePath("../..")
|
skeleton = NodePath("../..")
|
||||||
|
|
||||||
|
@ -8,9 +8,11 @@ signal triggered
|
|||||||
## Emitted when `pulse` is called, after a short delay.
|
## Emitted when `pulse` is called, after a short delay.
|
||||||
signal pulsed
|
signal pulsed
|
||||||
|
|
||||||
|
@export_category("Editor Tools")
|
||||||
@export var quick_connect_to: SignalNode:
|
@export var quick_connect_to: SignalNode:
|
||||||
set = _editor_connect
|
set = _editor_connect
|
||||||
|
|
||||||
|
@export_category("Game Scenes")
|
||||||
@export var editor_arrow_scene: PackedScene
|
@export var editor_arrow_scene: PackedScene
|
||||||
|
|
||||||
var _busy := false
|
var _busy := false
|
||||||
@ -72,9 +74,10 @@ static func find_path(
|
|||||||
|
|
||||||
|
|
||||||
func _editor_connect(node: SignalNode) -> void:
|
func _editor_connect(node: SignalNode) -> void:
|
||||||
self.triggered.connect(node.trigger, CONNECT_PERSIST)
|
if node:
|
||||||
self.pulsed.connect(node.trigger, CONNECT_PERSIST)
|
self.triggered.connect(node.trigger, CONNECT_PERSIST)
|
||||||
self.notify_property_list_changed()
|
self.pulsed.connect(node.pulse, CONNECT_PERSIST)
|
||||||
|
self.notify_property_list_changed()
|
||||||
|
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
|
@ -115,8 +115,10 @@ collision_mask = 0
|
|||||||
script = ExtResource("1_rdv5j")
|
script = ExtResource("1_rdv5j")
|
||||||
editor_arrow_scene = ExtResource("2_nfkbq")
|
editor_arrow_scene = ExtResource("2_nfkbq")
|
||||||
value = 800.0
|
value = 800.0
|
||||||
|
splatter_scale = 0.2
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||||
|
gi_mode = 2
|
||||||
mesh = SubResource("SphereMesh_hsruj")
|
mesh = SubResource("SphereMesh_hsruj")
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
@ -48,13 +48,14 @@ data = PackedVector3Array(0.7236, -0.4472, 0.5257, 0, -1, 0, -0.2764, -0.4472, 0
|
|||||||
collision_layer = 36
|
collision_layer = 36
|
||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
script = ExtResource("1_t1c4j")
|
script = ExtResource("1_t1c4j")
|
||||||
durability = 3.0
|
durability = 0.5
|
||||||
value = 4000.0
|
value = 4000.0
|
||||||
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
|
||||||
|
gi_mode = 2
|
||||||
mesh = SubResource("ArrayMesh_ulsff")
|
mesh = SubResource("ArrayMesh_ulsff")
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user