generated from krampus/template-godot4
Compare commits
7 Commits
aa21c04c0f
...
fb4b81d78c
Author | SHA1 | Date | |
---|---|---|---|
fb4b81d78c | |||
772489596b | |||
618123a712 | |||
2567bff243 | |||
8f565cd5b0 | |||
3b6f900557 | |||
e8aaababaa |
BIN
asset_dev/grunk_nodes/listener/listener.blend
Normal file
BIN
asset_dev/grunk_nodes/listener/listener.blend
Normal file
Binary file not shown.
BIN
asset_dev/grunk_nodes/listener/listener.blend1
Normal file
BIN
asset_dev/grunk_nodes/listener/listener.blend1
Normal file
Binary file not shown.
BIN
asset_dev/grunk_nodes/listener/listener1.blend
Normal file
BIN
asset_dev/grunk_nodes/listener/listener1.blend
Normal file
Binary file not shown.
BIN
asset_dev/grunk_nodes/listener/listener1.blend1
Normal file
BIN
asset_dev/grunk_nodes/listener/listener1.blend1
Normal file
Binary file not shown.
BIN
asset_dev/grunk_nodes/listener/listener2.blend
Normal file
BIN
asset_dev/grunk_nodes/listener/listener2.blend
Normal file
Binary file not shown.
BIN
assets/grunk/listener/animations/RESET.res
(Stored with Git LFS)
Normal file
BIN
assets/grunk/listener/animations/RESET.res
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/grunk/listener/animations/close.res
(Stored with Git LFS)
Normal file
BIN
assets/grunk/listener/animations/close.res
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/grunk/listener/animations/idle.res
(Stored with Git LFS)
Normal file
BIN
assets/grunk/listener/animations/idle.res
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/grunk/listener/animations/open.res
(Stored with Git LFS)
Normal file
BIN
assets/grunk/listener/animations/open.res
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/grunk/listener/listener.bin
Normal file
BIN
assets/grunk/listener/listener.bin
Normal file
Binary file not shown.
11964
assets/grunk/listener/listener.gltf
Normal file
11964
assets/grunk/listener/listener.gltf
Normal file
File diff suppressed because it is too large
Load Diff
7241
assets/grunk/listener/listener.gltf.import
Normal file
7241
assets/grunk/listener/listener.gltf.import
Normal file
File diff suppressed because it is too large
Load Diff
BIN
assets/sfx/tools/pop.wav
(Stored with Git LFS)
Normal file
BIN
assets/sfx/tools/pop.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
24
assets/sfx/tools/pop.wav.import
Normal file
24
assets/sfx/tools/pop.wav.import
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bmoel4uoncjgj"
|
||||||
|
path="res://.godot/imported/pop.wav-a125111ccb70bb530d8a9a1e740af87f.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sfx/tools/pop.wav"
|
||||||
|
dest_files=["res://.godot/imported/pop.wav-a125111ccb70bb530d8a9a1e740af87f.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=2
|
@ -330,6 +330,7 @@ mesh_instance = NodePath("../..")
|
|||||||
source_gunk_material = SubResource("ShaderMaterial_67o2j")
|
source_gunk_material = SubResource("ShaderMaterial_67o2j")
|
||||||
|
|
||||||
[node name="Puzzle" type="Node3D" parent="ListenerWall"]
|
[node name="Puzzle" type="Node3D" parent="ListenerWall"]
|
||||||
|
transform = Transform3D(0, 4.37114e-08, 1, -4.37114e-08, 1, -4.37114e-08, -1, -4.37114e-08, 1.91069e-15, 0, 0, 0)
|
||||||
|
|
||||||
[node name="Listener" parent="ListenerWall/Puzzle" instance=ExtResource("12_e8utx")]
|
[node name="Listener" parent="ListenerWall/Puzzle" instance=ExtResource("12_e8utx")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.37114e-08, 1)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.37114e-08, 1)
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://cbtmhu787diev"]
|
[gd_scene load_steps=5 format=3 uid="uid://cbtmhu787diev"]
|
||||||
|
|
||||||
[ext_resource type="AudioStream" uid="uid://cj6rj8ujl60e3" path="res://assets/sfx/tools/collect2.wav" id="1_y7it3"]
|
[ext_resource type="AudioStream" uid="uid://bmoel4uoncjgj" path="res://assets/sfx/tools/pop.wav" id="1_y7it3"]
|
||||||
[ext_resource type="Script" uid="uid://dwt66u7ua1to4" path="res://src/player/grunk_collection_sfx/grunk_collection_sfx.gd" id="5_ihwko"]
|
[ext_resource type="Script" uid="uid://dwt66u7ua1to4" path="res://src/player/grunk_collection_sfx/grunk_collection_sfx.gd" id="5_ihwko"]
|
||||||
|
|
||||||
[sub_resource type="Curve" id="Curve_y7it3"]
|
[sub_resource type="Curve" id="Curve_y7it3"]
|
||||||
_limits = [0.0, 2.4, 0.0, 1.0]
|
_limits = [0.0, 2.4, 0.0, 1.0]
|
||||||
_data = [Vector2(0, 1), 0.0, 8.88538, 0, 0, Vector2(0.125, 1.4), 0.0, 0.0, 0, 0, Vector2(0.5, 1.4), 0.0, 0.0, 0, 0, Vector2(1, 2.4), 6.54458, 0.0, 0, 0]
|
_data = [Vector2(0, 0.3), 0.0, 4.59122, 0, 0, Vector2(0.125, 0.5), 0.0, 0.0, 0, 0, Vector2(0.5, 0.5), 0.0, 0.0, 0, 0, Vector2(1, 1.23259), 5.30372, 0.0, 0, 0]
|
||||||
point_count = 4
|
point_count = 4
|
||||||
|
|
||||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_y7it3"]
|
[sub_resource type="FastNoiseLite" id="FastNoiseLite_y7it3"]
|
||||||
@ -16,6 +16,8 @@ volume_db = -4.0
|
|||||||
max_polyphony = 3
|
max_polyphony = 3
|
||||||
bus = &"SFX"
|
bus = &"SFX"
|
||||||
script = ExtResource("5_ihwko")
|
script = ExtResource("5_ihwko")
|
||||||
|
delay_mean = 0.4
|
||||||
|
delay_st_dev = 0.2
|
||||||
base_pitch_curve = SubResource("Curve_y7it3")
|
base_pitch_curve = SubResource("Curve_y7it3")
|
||||||
noise = SubResource("FastNoiseLite_y7it3")
|
noise = SubResource("FastNoiseLite_y7it3")
|
||||||
|
|
||||||
|
@ -771,6 +771,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0518835, 0)
|
|||||||
|
|
||||||
[node name="FootstepGameSoundEmitter" type="Area3D" parent="FootstepController"]
|
[node name="FootstepGameSoundEmitter" type="Area3D" parent="FootstepController"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
collision_layer = 0
|
collision_layer = 0
|
||||||
collision_mask = 16
|
collision_mask = 16
|
||||||
script = ExtResource("31_wcxbk")
|
script = ExtResource("31_wcxbk")
|
||||||
@ -837,4 +838,3 @@ stream = ExtResource("39_gsylq")
|
|||||||
pitch_scale = 1.8
|
pitch_scale = 1.8
|
||||||
|
|
||||||
[node name="GrunkCollectionSFX" parent="." instance=ExtResource("40_utg71")]
|
[node name="GrunkCollectionSFX" parent="." instance=ExtResource("40_utg71")]
|
||||||
interval = 160
|
|
||||||
|
@ -4,27 +4,44 @@ extends GunkNode
|
|||||||
|
|
||||||
signal triggered
|
signal triggered
|
||||||
|
|
||||||
|
const JITTER_SCALE_FACTOR := 0.15
|
||||||
|
const JITTER_INFLATION_FACTOR := 1.1
|
||||||
|
|
||||||
@export var quick_connect_to: SignalNode:
|
@export var quick_connect_to: SignalNode:
|
||||||
set = _editor_connect
|
set = _editor_connect
|
||||||
|
|
||||||
# NOTE
|
|
||||||
# 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}
|
|
||||||
@onready var trigger_animation_player: AnimationPlayer = %TriggerAnimationPlayer
|
|
||||||
@onready var cooldown_timer: Timer = %CooldownTimer
|
@onready var cooldown_timer: Timer = %CooldownTimer
|
||||||
|
@onready var listener_model: ListenerModel = %ListenerModel
|
||||||
|
@onready var ping_animation: AnimationPlayer = %PingAnimation
|
||||||
|
@onready var listener_mesh: MeshInstance3D = $ListenerModel/Armature/Skeleton3D/Listener
|
||||||
|
|
||||||
|
|
||||||
|
func _on_sound_detected(source: Vector3) -> void:
|
||||||
|
listener_model.lock_target(source)
|
||||||
|
if cooldown_timer.is_stopped():
|
||||||
|
trigger()
|
||||||
|
cooldown_timer.start()
|
||||||
|
|
||||||
|
|
||||||
func trigger() -> void:
|
func trigger() -> void:
|
||||||
if not cooldown_timer.is_stopped():
|
|
||||||
return
|
|
||||||
|
|
||||||
# TODO play sfx
|
# TODO play sfx
|
||||||
|
ping_animation.play("ping")
|
||||||
trigger_animation_player.play("trigger")
|
|
||||||
triggered.emit()
|
triggered.emit()
|
||||||
cooldown_timer.start()
|
|
||||||
|
|
||||||
|
|
||||||
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()
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
return
|
||||||
|
|
||||||
|
super._process(delta)
|
||||||
|
# TODO actual model & animation
|
||||||
|
var shader: ShaderMaterial = listener_mesh.get_surface_override_material(0)
|
||||||
|
var damage := pct_damage()
|
||||||
|
shader.set_shader_parameter("jitter_time_scale", pow(damage * JITTER_SCALE_FACTOR, 1.2))
|
||||||
|
shader.set_shader_parameter("vertex_inflation", pow(damage * JITTER_INFLATION_FACTOR, 3))
|
||||||
|
# TODO pulse animation
|
||||||
|
@ -1,74 +1,69 @@
|
|||||||
[gd_scene load_steps=19 format=3 uid="uid://kctp5erogwcb"]
|
[gd_scene load_steps=25 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="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"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c31gdstf55x5" path="res://assets/particles/ping.png" id="3_2ibh1"]
|
[ext_resource type="Texture2D" uid="uid://c31gdstf55x5" path="res://assets/particles/ping.png" id="3_2ibh1"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://c2c0ooj1re3dk" path="res://src/world/mechanics/listener/listener_model.tscn" id="3_r42ft"]
|
||||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2ibh1"]
|
[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="4_pp7wn"]
|
||||||
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)
|
[ext_resource type="Texture2D" uid="uid://cm1jrvx7ftx4c" path="res://assets/black.png" id="5_c5snp"]
|
||||||
|
[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_m4i7y"]
|
||||||
|
|
||||||
[sub_resource type="SphereShape3D" id="SphereShape3D_2ibh1"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_2ibh1"]
|
||||||
radius = 1.0
|
radius = 1.0
|
||||||
|
|
||||||
[sub_resource type="CylinderMesh" id="CylinderMesh_ud3xk"]
|
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2roq2"]
|
||||||
top_radius = 0.25
|
width = 256
|
||||||
bottom_radius = 0.2
|
height = 256
|
||||||
height = 0.1
|
depth = 32
|
||||||
radial_segments = 16
|
seamless = true
|
||||||
rings = 0
|
seamless_blend_skirt = 0.5
|
||||||
|
noise = ExtResource("6_m4i7y")
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_2ibh1"]
|
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_fk1xc"]
|
||||||
length = 0.001
|
width = 256
|
||||||
tracks/0/type = "value"
|
height = 256
|
||||||
tracks/0/imported = false
|
depth = 32
|
||||||
tracks/0/enabled = true
|
seamless = true
|
||||||
tracks/0/path = NodePath("CollisionShape3D:scale")
|
seamless_blend_skirt = 0.5
|
||||||
tracks/0/interp = 1
|
noise = ExtResource("6_m4i7y")
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(1, 1, 1)]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_htscg"]
|
[sub_resource type="FastNoiseLite" id="FastNoiseLite_7fplw"]
|
||||||
resource_name = "trigger"
|
frequency = 0.0703
|
||||||
length = 2.0
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath("CollisionShape3D:scale")
|
|
||||||
tracks/0/interp = 2
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.9, 2),
|
|
||||||
"transitions": PackedFloat32Array(0.618, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(1, 1, 1), Vector3(1.779, 1.779, 1.779), Vector3(0.528, 0.528, 0.528), Vector3(1.287, 1.287, 1.287), Vector3(0.826, 0.826, 0.826), Vector3(1.105, 1.105, 1.105), Vector3(0.936, 0.936, 0.936), Vector3(1.039, 1.039, 1.039), Vector3(0.976, 0.976, 0.976), Vector3(1.014, 1.014, 1.014), Vector3(0.991, 0.991, 0.991), Vector3(1, 1, 1)]
|
|
||||||
}
|
|
||||||
tracks/1/type = "method"
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/path = NodePath("PingEffect/PingAnimation")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"values": [{
|
|
||||||
"args": [&"ping", -1, 1.0, false],
|
|
||||||
"method": &"play"
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2ibh1"]
|
[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_omayi"]
|
||||||
_data = {
|
width = 32
|
||||||
&"RESET": SubResource("Animation_2ibh1"),
|
height = 32
|
||||||
&"trigger": SubResource("Animation_htscg")
|
depth = 128
|
||||||
}
|
noise = SubResource("FastNoiseLite_7fplw")
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_yuift"]
|
||||||
|
resource_local_to_scene = true
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("4_pp7wn")
|
||||||
|
shader_parameter/color_1 = Color(0, 0.03, 0.1, 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/pixellation = 128.0
|
||||||
|
shader_parameter/time_pixellation = 30.0
|
||||||
|
shader_parameter/roughness = 0.15
|
||||||
|
shader_parameter/specular_contribution = 0.8
|
||||||
|
shader_parameter/emission_strength = 0.02
|
||||||
|
shader_parameter/normal_scale = 1.0
|
||||||
|
shader_parameter/uv_scale = Vector2(2, 2)
|
||||||
|
shader_parameter/time_scale = 0.2
|
||||||
|
shader_parameter/edge_bleed = 0.25
|
||||||
|
shader_parameter/gunk_mask = ExtResource("5_c5snp")
|
||||||
|
shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
|
||||||
|
shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
|
||||||
|
shader_parameter/jitter_magnitude = 0.4
|
||||||
|
shader_parameter/jitter_time_scale = 0.1
|
||||||
|
shader_parameter/jitter_noise = SubResource("NoiseTexture3D_omayi")
|
||||||
|
shader_parameter/vertex_inflation = 0.0
|
||||||
|
shader_parameter/inflation_pixellation = 10.0
|
||||||
|
shader_parameter/overlay_emission_scale = 1.0
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2ibh1"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2ibh1"]
|
||||||
|
resource_local_to_scene = true
|
||||||
transparency = 3
|
transparency = 3
|
||||||
alpha_hash_scale = 1.0
|
alpha_hash_scale = 1.0
|
||||||
alpha_antialiasing_mode = 0
|
alpha_antialiasing_mode = 0
|
||||||
@ -81,9 +76,11 @@ billboard_mode = 1
|
|||||||
billboard_keep_scale = true
|
billboard_keep_scale = true
|
||||||
|
|
||||||
[sub_resource type="QuadMesh" id="QuadMesh_r42ft"]
|
[sub_resource type="QuadMesh" id="QuadMesh_r42ft"]
|
||||||
|
resource_local_to_scene = true
|
||||||
material = SubResource("StandardMaterial3D_2ibh1")
|
material = SubResource("StandardMaterial3D_2ibh1")
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dqq13"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dqq13"]
|
||||||
|
resource_local_to_scene = true
|
||||||
transparency = 3
|
transparency = 3
|
||||||
alpha_hash_scale = 1.0
|
alpha_hash_scale = 1.0
|
||||||
alpha_antialiasing_mode = 0
|
alpha_antialiasing_mode = 0
|
||||||
@ -96,9 +93,11 @@ billboard_mode = 1
|
|||||||
billboard_keep_scale = true
|
billboard_keep_scale = true
|
||||||
|
|
||||||
[sub_resource type="QuadMesh" id="QuadMesh_gjouv"]
|
[sub_resource type="QuadMesh" id="QuadMesh_gjouv"]
|
||||||
|
resource_local_to_scene = true
|
||||||
material = SubResource("StandardMaterial3D_dqq13")
|
material = SubResource("StandardMaterial3D_dqq13")
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pp7wn"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pp7wn"]
|
||||||
|
resource_local_to_scene = true
|
||||||
transparency = 3
|
transparency = 3
|
||||||
alpha_hash_scale = 1.0
|
alpha_hash_scale = 1.0
|
||||||
alpha_antialiasing_mode = 0
|
alpha_antialiasing_mode = 0
|
||||||
@ -111,8 +110,120 @@ billboard_mode = 1
|
|||||||
billboard_keep_scale = true
|
billboard_keep_scale = true
|
||||||
|
|
||||||
[sub_resource type="QuadMesh" id="QuadMesh_c5snp"]
|
[sub_resource type="QuadMesh" id="QuadMesh_c5snp"]
|
||||||
|
resource_local_to_scene = true
|
||||||
material = SubResource("StandardMaterial3D_pp7wn")
|
material = SubResource("StandardMaterial3D_pp7wn")
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_dqq13"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Ping1:visible")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Ping1:scale")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0.001, 0.001, 0.001)]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Ping1:mesh:material:albedo_color")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0.866667, 0.109804, 0.101961, 1)]
|
||||||
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Ping2:visible")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Ping2:scale")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0.001, 0.001, 0.001)]
|
||||||
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("Ping2:mesh:material:albedo_color")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0.866667, 0.109804, 0.101961, 1)]
|
||||||
|
}
|
||||||
|
tracks/6/type = "value"
|
||||||
|
tracks/6/imported = false
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("Ping3:visible")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/7/type = "value"
|
||||||
|
tracks/7/imported = false
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("Ping3:scale")
|
||||||
|
tracks/7/interp = 1
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector3(0.001, 0.001, 0.001)]
|
||||||
|
}
|
||||||
|
tracks/8/type = "value"
|
||||||
|
tracks/8/imported = false
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("Ping3:mesh:material:albedo_color")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(0.866667, 0.109804, 0.101961, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_r42ft"]
|
[sub_resource type="Animation" id="Animation_r42ft"]
|
||||||
resource_name = "ping"
|
resource_name = "ping"
|
||||||
length = 4.0
|
length = 4.0
|
||||||
@ -225,123 +336,20 @@ tracks/8/keys = {
|
|||||||
"values": [Color(0.866667, 0.109804, 0.101961, 1), Color(0.866667, 0.109804, 0.101961, 1), Color(0.66, 0.08888, 0.0792, 0)]
|
"values": [Color(0.866667, 0.109804, 0.101961, 1), Color(0.866667, 0.109804, 0.101961, 1), Color(0.66, 0.08888, 0.0792, 0)]
|
||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_dqq13"]
|
|
||||||
length = 0.001
|
|
||||||
tracks/0/type = "value"
|
|
||||||
tracks/0/imported = false
|
|
||||||
tracks/0/enabled = true
|
|
||||||
tracks/0/path = NodePath("Ping1:visible")
|
|
||||||
tracks/0/interp = 1
|
|
||||||
tracks/0/loop_wrap = true
|
|
||||||
tracks/0/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [false]
|
|
||||||
}
|
|
||||||
tracks/1/type = "value"
|
|
||||||
tracks/1/imported = false
|
|
||||||
tracks/1/enabled = true
|
|
||||||
tracks/1/path = NodePath("Ping1:scale")
|
|
||||||
tracks/1/interp = 1
|
|
||||||
tracks/1/loop_wrap = true
|
|
||||||
tracks/1/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0.001, 0.001, 0.001)]
|
|
||||||
}
|
|
||||||
tracks/2/type = "value"
|
|
||||||
tracks/2/imported = false
|
|
||||||
tracks/2/enabled = true
|
|
||||||
tracks/2/path = NodePath("Ping1:mesh:material:albedo_color")
|
|
||||||
tracks/2/interp = 1
|
|
||||||
tracks/2/loop_wrap = true
|
|
||||||
tracks/2/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Color(0.866667, 0.109804, 0.101961, 1)]
|
|
||||||
}
|
|
||||||
tracks/3/type = "value"
|
|
||||||
tracks/3/imported = false
|
|
||||||
tracks/3/enabled = true
|
|
||||||
tracks/3/path = NodePath("Ping2:visible")
|
|
||||||
tracks/3/interp = 1
|
|
||||||
tracks/3/loop_wrap = true
|
|
||||||
tracks/3/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [false]
|
|
||||||
}
|
|
||||||
tracks/4/type = "value"
|
|
||||||
tracks/4/imported = false
|
|
||||||
tracks/4/enabled = true
|
|
||||||
tracks/4/path = NodePath("Ping2:scale")
|
|
||||||
tracks/4/interp = 1
|
|
||||||
tracks/4/loop_wrap = true
|
|
||||||
tracks/4/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0.001, 0.001, 0.001)]
|
|
||||||
}
|
|
||||||
tracks/5/type = "value"
|
|
||||||
tracks/5/imported = false
|
|
||||||
tracks/5/enabled = true
|
|
||||||
tracks/5/path = NodePath("Ping2:mesh:material:albedo_color")
|
|
||||||
tracks/5/interp = 1
|
|
||||||
tracks/5/loop_wrap = true
|
|
||||||
tracks/5/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Color(0.866667, 0.109804, 0.101961, 1)]
|
|
||||||
}
|
|
||||||
tracks/6/type = "value"
|
|
||||||
tracks/6/imported = false
|
|
||||||
tracks/6/enabled = true
|
|
||||||
tracks/6/path = NodePath("Ping3:visible")
|
|
||||||
tracks/6/interp = 1
|
|
||||||
tracks/6/loop_wrap = true
|
|
||||||
tracks/6/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [false]
|
|
||||||
}
|
|
||||||
tracks/7/type = "value"
|
|
||||||
tracks/7/imported = false
|
|
||||||
tracks/7/enabled = true
|
|
||||||
tracks/7/path = NodePath("Ping3:scale")
|
|
||||||
tracks/7/interp = 1
|
|
||||||
tracks/7/loop_wrap = true
|
|
||||||
tracks/7/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0.001, 0.001, 0.001)]
|
|
||||||
}
|
|
||||||
tracks/8/type = "value"
|
|
||||||
tracks/8/imported = false
|
|
||||||
tracks/8/enabled = true
|
|
||||||
tracks/8/path = NodePath("Ping3:mesh:material:albedo_color")
|
|
||||||
tracks/8/interp = 1
|
|
||||||
tracks/8/loop_wrap = true
|
|
||||||
tracks/8/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Color(0.866667, 0.109804, 0.101961, 1)]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_dqq13"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_dqq13"]
|
||||||
_data = {
|
_data = {
|
||||||
&"RESET": SubResource("Animation_dqq13"),
|
&"RESET": SubResource("Animation_dqq13"),
|
||||||
&"ping": SubResource("Animation_r42ft")
|
&"ping": SubResource("Animation_r42ft")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_dqq13"]
|
||||||
|
height = 0.28
|
||||||
|
radius = 0.125
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_r42ft"]
|
||||||
|
height = 0.1
|
||||||
|
radius = 0.175
|
||||||
|
|
||||||
[node name="Listener" type="StaticBody3D" groups=["Persistent"]]
|
[node name="Listener" type="StaticBody3D" groups=["Persistent"]]
|
||||||
collision_layer = 36
|
collision_layer = 36
|
||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
@ -350,41 +358,35 @@ durability = 3.0
|
|||||||
value = 4000.0
|
value = 4000.0
|
||||||
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
metadata/_custom_type_script = "uid://bypgxi0gy56yk"
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
[node name="GameSoundListener" type="StaticBody3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.05, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.05, 0)
|
||||||
shape = SubResource("ConcavePolygonShape3D_2ibh1")
|
|
||||||
|
|
||||||
[node name="GameSoundListener" type="StaticBody3D" parent="CollisionShape3D"]
|
|
||||||
collision_layer = 16
|
collision_layer = 16
|
||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
script = ExtResource("2_htscg")
|
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="GameSoundListener"]
|
||||||
shape = SubResource("SphereShape3D_2ibh1")
|
shape = SubResource("SphereShape3D_2ibh1")
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="CollisionShape3D"]
|
[node name="ListenerModel" parent="." instance=ExtResource("3_r42ft")]
|
||||||
gi_mode = 2
|
|
||||||
mesh = SubResource("CylinderMesh_ud3xk")
|
|
||||||
skeleton = NodePath("../..")
|
|
||||||
|
|
||||||
[node name="Label3D" type="Label3D" parent="CollisionShape3D/MeshInstance3D"]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.051, 0)
|
|
||||||
pixel_size = 0.001
|
|
||||||
text = "LISTENER"
|
|
||||||
font_size = 92
|
|
||||||
outline_size = 20
|
|
||||||
|
|
||||||
[node name="CooldownTimer" type="Timer" parent="."]
|
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
wait_time = 4.0
|
transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0)
|
||||||
one_shot = true
|
|
||||||
|
|
||||||
[node name="TriggerAnimationPlayer" type="AnimationPlayer" parent="."]
|
[node name="Listener" parent="ListenerModel/Armature/Skeleton3D" index="0"]
|
||||||
unique_name_in_owner = true
|
surface_material_override/0 = SubResource("ShaderMaterial_yuift")
|
||||||
libraries = {
|
|
||||||
&"": SubResource("AnimationLibrary_2ibh1")
|
[node name="PhysicalBoneSimulator3D" type="PhysicalBoneSimulator3D" parent="ListenerModel/Armature/Skeleton3D" index="6"]
|
||||||
}
|
|
||||||
|
[node name="PhysicalBone3D" type="PhysicalBone3D" parent="ListenerModel/Armature/Skeleton3D/PhysicalBoneSimulator3D"]
|
||||||
|
transform = Transform3D(0.323526, 1.18154e-06, 1.20741, -1.06742e-08, 1.25, -1.22036e-06, -1.20741, 3.05545e-07, 0.323526, -4.82717e-06, 0.800007, -1.2209e-06)
|
||||||
|
joint_offset = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.43995e-08, -5.86509e-06, 3.98532e-06)
|
||||||
|
body_offset = Transform3D(1.25, 1.11823e-08, -2.86102e-06, -1.11851e-08, 1.25, -1.23028e-06, 2.86102e-06, 1.23028e-06, 1.25, -6.79879e-08, 7.33137e-06, -4.98164e-06)
|
||||||
|
bone_name = "Stem5"
|
||||||
|
|
||||||
|
[node name="RemoteTransform3D" type="RemoteTransform3D" parent="ListenerModel/Armature/Skeleton3D/PhysicalBoneSimulator3D/PhysicalBone3D"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.235, 0)
|
||||||
|
remote_path = NodePath("../../../../../../CollisionShape3D2")
|
||||||
|
update_scale = false
|
||||||
|
|
||||||
[node name="PingEffect" type="Node3D" parent="."]
|
[node name="PingEffect" type="Node3D" parent="."]
|
||||||
|
|
||||||
@ -410,8 +412,25 @@ mesh = SubResource("QuadMesh_c5snp")
|
|||||||
skeleton = NodePath("../..")
|
skeleton = NodePath("../..")
|
||||||
|
|
||||||
[node name="PingAnimation" type="AnimationPlayer" parent="PingEffect"]
|
[node name="PingAnimation" type="AnimationPlayer" parent="PingEffect"]
|
||||||
|
unique_name_in_owner = true
|
||||||
libraries = {
|
libraries = {
|
||||||
&"": SubResource("AnimationLibrary_dqq13")
|
&"": SubResource("AnimationLibrary_dqq13")
|
||||||
}
|
}
|
||||||
|
|
||||||
[connection signal="sound_detected" from="CollisionShape3D/GameSoundListener" to="." method="trigger" unbinds=1]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.14, 0)
|
||||||
|
shape = SubResource("CylinderShape3D_dqq13")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
|
||||||
|
transform = Transform3D(0.258816, 9.45216e-07, 0.96591, -8.53918e-09, 0.999981, -9.76275e-07, -0.965905, 2.44431e-07, 0.258817, -3.63961e-06, 0.875006, -9.19278e-07)
|
||||||
|
shape = SubResource("CylinderShape3D_r42ft")
|
||||||
|
|
||||||
|
[node name="CooldownTimer" type="Timer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
wait_time = 4.0
|
||||||
|
one_shot = true
|
||||||
|
|
||||||
|
[connection signal="sound_detected" from="GameSoundListener" to="." method="_on_sound_detected"]
|
||||||
|
[connection signal="timeout" from="CooldownTimer" to="ListenerModel" method="release_target"]
|
||||||
|
|
||||||
|
[editable path="ListenerModel"]
|
||||||
|
71
src/world/mechanics/listener/listener_model.gd
Normal file
71
src/world/mechanics/listener/listener_model.gd
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
class_name ListenerModel extends Node3D
|
||||||
|
## Model controller for the Grunk Listener
|
||||||
|
|
||||||
|
const TARGET_ACCELERATION := 8.0
|
||||||
|
|
||||||
|
var ik_influence := 0.0:
|
||||||
|
set = _set_ik_influence
|
||||||
|
|
||||||
|
var _open := false
|
||||||
|
|
||||||
|
var _ik_tween: Tween
|
||||||
|
|
||||||
|
@onready var target_target: Marker3D = %TargetTarget
|
||||||
|
|
||||||
|
@onready var ik_target: Marker3D = %IKTarget
|
||||||
|
@onready var leaf_animation: AnimationPlayer = %LeafAnimation
|
||||||
|
|
||||||
|
@onready var stem_ik_1: LookAtModifier3D = %StemIK1
|
||||||
|
@onready var stem_ik_2: LookAtModifier3D = %StemIK2
|
||||||
|
@onready var stem_ik_3: LookAtModifier3D = %StemIK3
|
||||||
|
@onready var stem_ik_4: LookAtModifier3D = %StemIK4
|
||||||
|
@onready var stem_ik_5: LookAtModifier3D = %StemIK5
|
||||||
|
|
||||||
|
|
||||||
|
func _get_ik_tween() -> Tween:
|
||||||
|
if _ik_tween and _ik_tween.is_valid():
|
||||||
|
_ik_tween.kill()
|
||||||
|
_ik_tween = create_tween()
|
||||||
|
return _ik_tween
|
||||||
|
|
||||||
|
|
||||||
|
func lock_target(target: Vector3) -> void:
|
||||||
|
target_target.global_position = target
|
||||||
|
|
||||||
|
if not _open:
|
||||||
|
_open = true
|
||||||
|
leaf_animation.play("open", 0.2)
|
||||||
|
(
|
||||||
|
_get_ik_tween()
|
||||||
|
. tween_property(self, "ik_influence", 1, leaf_animation.current_animation_length)
|
||||||
|
. set_ease(Tween.EASE_IN_OUT)
|
||||||
|
. set_trans(Tween.TRANS_CUBIC)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
func release_target() -> void:
|
||||||
|
if _open:
|
||||||
|
leaf_animation.play("close", 0.2)
|
||||||
|
(
|
||||||
|
_get_ik_tween()
|
||||||
|
. tween_property(self, "ik_influence", 0, leaf_animation.current_animation_length)
|
||||||
|
. set_ease(Tween.EASE_IN_OUT)
|
||||||
|
. set_trans(Tween.TRANS_CUBIC)
|
||||||
|
)
|
||||||
|
_open = false
|
||||||
|
|
||||||
|
|
||||||
|
func _set_ik_influence(value: float) -> void:
|
||||||
|
ik_influence = value
|
||||||
|
stem_ik_1.influence = value
|
||||||
|
stem_ik_2.influence = value
|
||||||
|
stem_ik_3.influence = value
|
||||||
|
stem_ik_4.influence = value
|
||||||
|
stem_ik_5.influence = value
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
var target_weight := 1.0 - exp(-TARGET_ACCELERATION * delta)
|
||||||
|
ik_target.global_position = ik_target.global_position.lerp(
|
||||||
|
target_target.global_position, target_weight
|
||||||
|
)
|
1
src/world/mechanics/listener/listener_model.gd.uid
Normal file
1
src/world/mechanics/listener/listener_model.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://co4gkdwyhdbmc
|
179
src/world/mechanics/listener/listener_model.tscn
Normal file
179
src/world/mechanics/listener/listener_model.tscn
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
[gd_scene load_steps=10 format=3 uid="uid://c2c0ooj1re3dk"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://coucghe370fff" path="res://assets/grunk/listener/listener.gltf" id="1_lgdkx"]
|
||||||
|
[ext_resource type="Script" uid="uid://co4gkdwyhdbmc" path="res://src/world/mechanics/listener/listener_model.gd" id="2_yh3g4"]
|
||||||
|
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_xijsm"]
|
||||||
|
[ext_resource type="Animation" uid="uid://dihyn82xf67ou" path="res://assets/grunk/listener/animations/RESET.res" id="4_y4jww"]
|
||||||
|
[ext_resource type="Animation" uid="uid://c236lo5xytxaa" path="res://assets/grunk/listener/animations/idle.res" id="5_3vskp"]
|
||||||
|
[ext_resource type="Animation" uid="uid://bujor2i5icw8c" path="res://assets/grunk/listener/animations/close.res" id="6_ghw47"]
|
||||||
|
[ext_resource type="Animation" uid="uid://c4juq6vxnnxbe" path="res://assets/grunk/listener/animations/open.res" id="7_c25ju"]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ghw47"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": ExtResource("4_y4jww"),
|
||||||
|
&"idle": ExtResource("5_3vskp")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_5lsre"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": ExtResource("4_y4jww"),
|
||||||
|
&"close": ExtResource("6_ghw47"),
|
||||||
|
&"open": ExtResource("7_c25ju")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="ListenerModel" instance=ExtResource("1_lgdkx")]
|
||||||
|
script = ExtResource("2_yh3g4")
|
||||||
|
|
||||||
|
[node name="Skeleton3D" parent="Armature" index="0"]
|
||||||
|
bones/0/rotation = Quaternion(-1.51225e-09, 0.130526, 4.05207e-10, 0.991445)
|
||||||
|
bones/1/rotation = Quaternion(9.2869e-09, 0.130526, -8.10413e-10, 0.991445)
|
||||||
|
bones/2/rotation = Quaternion(-9.1802e-09, 0.130526, -8.10414e-10, 0.991445)
|
||||||
|
bones/3/rotation = Quaternion(6.20905e-09, 0.130526, -4.05206e-10, 0.991445)
|
||||||
|
bones/4/rotation = Quaternion(-8.49624e-09, 0.130526, -9.00455e-11, 0.991445)
|
||||||
|
bones/5/rotation = Quaternion(0.54585, 0.487268, 0.374478, -0.569548)
|
||||||
|
bones/6/rotation = Quaternion(0.308353, 2.1709e-08, 1.30586e-08, 0.951272)
|
||||||
|
bones/7/rotation = Quaternion(0.334237, -0.119529, -0.0427788, 0.9339)
|
||||||
|
bones/8/rotation = Quaternion(0.247978, -2.40337e-10, -3.8454e-09, 0.968766)
|
||||||
|
bones/9/rotation = Quaternion(0.148338, 2.82522e-09, -5.65045e-09, 0.988937)
|
||||||
|
bones/10/rotation = Quaternion(0.237284, 7.34911e-07, -1.96017e-07, 0.97144)
|
||||||
|
bones/11/rotation = Quaternion(0.285481, 0.70676, 0.597232, -0.249609)
|
||||||
|
bones/12/rotation = Quaternion(0.308353, 6.75348e-08, -4.55922e-08, 0.951272)
|
||||||
|
bones/13/rotation = Quaternion(0.334237, -0.119529, -0.0427787, 0.9339)
|
||||||
|
bones/14/rotation = Quaternion(0.247978, 6.91065e-10, -2.79256e-08, 0.968766)
|
||||||
|
bones/15/rotation = Quaternion(0.148338, 7.66861e-08, 9.51493e-08, 0.988937)
|
||||||
|
bones/16/rotation = Quaternion(0.237284, 1.57873e-06, -4.4533e-07, 0.97144)
|
||||||
|
bones/17/rotation = Quaternion(-0.0513825, 0.736877, 0.659958, 0.137212)
|
||||||
|
bones/18/rotation = Quaternion(0.308353, -1.71875e-07, -7.09416e-08, 0.951272)
|
||||||
|
bones/19/rotation = Quaternion(0.334237, -0.119529, -0.0427786, 0.9339)
|
||||||
|
bones/20/rotation = Quaternion(0.247978, -5.53974e-08, -1.69864e-07, 0.968766)
|
||||||
|
bones/21/rotation = Quaternion(0.148338, 4.98196e-08, 2.63702e-07, 0.988937)
|
||||||
|
bones/22/rotation = Quaternion(0.237284, 2.44019e-06, -9.05055e-07, 0.97144)
|
||||||
|
bones/23/rotation = Quaternion(-0.374478, 0.569548, 0.545849, 0.487268)
|
||||||
|
bones/24/rotation = Quaternion(0.308353, -3.56631e-08, -1.14694e-08, 0.951272)
|
||||||
|
bones/25/rotation = Quaternion(0.334237, -0.119529, -0.0427786, 0.9339)
|
||||||
|
bones/26/rotation = Quaternion(0.247978, -6.25756e-08, -2.50967e-07, 0.968766)
|
||||||
|
bones/27/rotation = Quaternion(0.148338, 2.83936e-08, 1.69831e-07, 0.988937)
|
||||||
|
bones/28/rotation = Quaternion(0.237284, 3.38177e-06, -1.02259e-06, 0.97144)
|
||||||
|
bones/29/rotation = Quaternion(-0.597232, 0.249609, 0.285481, 0.70676)
|
||||||
|
bones/30/rotation = Quaternion(0.308353, 2.31089e-09, 1.50606e-08, 0.951272)
|
||||||
|
bones/31/rotation = Quaternion(0.334237, -0.119529, -0.0427785, 0.9339)
|
||||||
|
bones/32/rotation = Quaternion(0.247978, -3.1123e-08, -2.32956e-07, 0.968766)
|
||||||
|
bones/33/rotation = Quaternion(0.148338, 5.29717e-08, 2.76084e-07, 0.988937)
|
||||||
|
bones/34/rotation = Quaternion(0.237284, 4.29037e-06, -1.26097e-06, 0.97144)
|
||||||
|
bones/35/rotation = Quaternion(-0.659958, -0.137212, -0.0513825, 0.736877)
|
||||||
|
bones/36/rotation = Quaternion(0.308353, 3.35578e-09, 4.35599e-09, 0.951272)
|
||||||
|
bones/37/rotation = Quaternion(0.334237, -0.119529, -0.0427785, 0.9339)
|
||||||
|
bones/38/rotation = Quaternion(0.247978, -1.26717e-07, -3.12779e-07, 0.968766)
|
||||||
|
bones/39/rotation = Quaternion(0.148338, 2.72959e-08, 3.46469e-07, 0.988937)
|
||||||
|
bones/40/rotation = Quaternion(0.237284, 5.07144e-06, -1.68211e-06, 0.97144)
|
||||||
|
|
||||||
|
[node name="Listener" parent="Armature/Skeleton3D" index="0"]
|
||||||
|
surface_material_override/0 = ExtResource("3_xijsm")
|
||||||
|
|
||||||
|
[node name="StemIK1" type="LookAtModifier3D" parent="Armature/Skeleton3D" index="1"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
influence = 0.0
|
||||||
|
target_node = NodePath("../../../IKTarget")
|
||||||
|
bone_name = "Stem1"
|
||||||
|
bone = 0
|
||||||
|
forward_axis = 2
|
||||||
|
primary_rotation_axis = 0
|
||||||
|
duration = 0.2
|
||||||
|
transition_type = 1
|
||||||
|
ease_type = 1
|
||||||
|
use_angle_limitation = true
|
||||||
|
symmetry_limitation = true
|
||||||
|
primary_limit_angle = 0.174533
|
||||||
|
primary_damp_threshold = 0.0
|
||||||
|
secondary_limit_angle = 0.785398
|
||||||
|
secondary_damp_threshold = 0.0
|
||||||
|
|
||||||
|
[node name="StemIK2" type="LookAtModifier3D" parent="Armature/Skeleton3D" index="2"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
influence = 0.0
|
||||||
|
target_node = NodePath("../../../IKTarget")
|
||||||
|
bone_name = "Stem2"
|
||||||
|
bone = 1
|
||||||
|
forward_axis = 2
|
||||||
|
primary_rotation_axis = 0
|
||||||
|
duration = 0.2
|
||||||
|
transition_type = 1
|
||||||
|
ease_type = 1
|
||||||
|
use_angle_limitation = true
|
||||||
|
symmetry_limitation = true
|
||||||
|
primary_limit_angle = 0.785398
|
||||||
|
primary_damp_threshold = 0.0
|
||||||
|
secondary_limit_angle = 0.174533
|
||||||
|
secondary_damp_threshold = 0.0
|
||||||
|
|
||||||
|
[node name="StemIK3" type="LookAtModifier3D" parent="Armature/Skeleton3D" index="3"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
influence = 0.0
|
||||||
|
target_node = NodePath("../../../IKTarget")
|
||||||
|
bone_name = "Stem3"
|
||||||
|
bone = 2
|
||||||
|
forward_axis = 2
|
||||||
|
primary_rotation_axis = 0
|
||||||
|
duration = 0.2
|
||||||
|
transition_type = 1
|
||||||
|
ease_type = 1
|
||||||
|
use_angle_limitation = true
|
||||||
|
symmetry_limitation = true
|
||||||
|
primary_limit_angle = 1.5708
|
||||||
|
primary_damp_threshold = 0.0
|
||||||
|
secondary_limit_angle = 0.785398
|
||||||
|
secondary_damp_threshold = 0.0
|
||||||
|
|
||||||
|
[node name="StemIK4" type="LookAtModifier3D" parent="Armature/Skeleton3D" index="4"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
influence = 0.0
|
||||||
|
target_node = NodePath("../../../IKTarget")
|
||||||
|
bone_name = "Stem4"
|
||||||
|
bone = 3
|
||||||
|
forward_axis = 2
|
||||||
|
primary_rotation_axis = 0
|
||||||
|
duration = 0.2
|
||||||
|
transition_type = 1
|
||||||
|
ease_type = 1
|
||||||
|
use_angle_limitation = true
|
||||||
|
symmetry_limitation = true
|
||||||
|
primary_limit_angle = 0.785398
|
||||||
|
primary_damp_threshold = 0.0
|
||||||
|
secondary_limit_angle = 1.5708
|
||||||
|
secondary_damp_threshold = 0.0
|
||||||
|
|
||||||
|
[node name="StemIK5" type="LookAtModifier3D" parent="Armature/Skeleton3D" index="5"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
influence = 0.0
|
||||||
|
target_node = NodePath("../../../IKTarget")
|
||||||
|
bone_name = "Stem5"
|
||||||
|
bone = 4
|
||||||
|
forward_axis = 2
|
||||||
|
primary_rotation_axis = 0
|
||||||
|
duration = 0.2
|
||||||
|
transition_type = 1
|
||||||
|
ease_type = 1
|
||||||
|
use_angle_limitation = true
|
||||||
|
symmetry_limitation = true
|
||||||
|
primary_limit_angle = 1.5708
|
||||||
|
primary_damp_threshold = 0.0
|
||||||
|
secondary_limit_angle = 1.5708
|
||||||
|
secondary_damp_threshold = 0.0
|
||||||
|
|
||||||
|
[node name="IKTarget" type="Marker3D" parent="." index="1"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="TargetTarget" type="Marker3D" parent="." index="2"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="IdleAnimation" type="AnimationPlayer" parent="." index="3"]
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_ghw47")
|
||||||
|
}
|
||||||
|
autoplay = "idle"
|
||||||
|
|
||||||
|
[node name="LeafAnimation" type="AnimationPlayer" parent="." index="4"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
libraries = {
|
||||||
|
&"": SubResource("AnimationLibrary_5lsre")
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user