Compare commits
No commits in common. "2462174a0286325e338ca06142f3987e2aa4debb" and "26e707f0e1ddc0bce98271b372c7c2af1447089d" have entirely different histories.
2462174a02
...
26e707f0e1
Binary file not shown.
@ -1,19 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="mp3"
|
||||
type="AudioStreamMP3"
|
||||
uid="uid://bu3mcagsgxth"
|
||||
path="res://.godot/imported/Deadbird_Alright_listen_here.mp3-3cc73b7ad94c9ac3c61368e7a863ddc9.mp3str"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://_development/ayuroo/voicelines/conductor/Deadbird_Alright_listen_here.mp3"
|
||||
dest_files=["res://.godot/imported/Deadbird_Alright_listen_here.mp3-3cc73b7ad94c9ac3c61368e7a863ddc9.mp3str"]
|
||||
|
||||
[params]
|
||||
|
||||
loop=false
|
||||
loop_offset=0.0
|
||||
bpm=0.0
|
||||
beat_count=0
|
||||
bar_beats=4
|
||||
@ -1,10 +0,0 @@
|
||||
[gd_resource type="Resource" script_class="DialogEntry" format=3 uid="uid://ju7es8xi1gpc"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://crem3vn3eyf38" path="res://src/core/dialog/dialog_entry.gd" id="1_41r8w"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_41r8w")
|
||||
voiceline_path = "uid://bu3mcagsgxth"
|
||||
subtitle_strings = PackedStringArray("Alright listen here, lass.", "Yer in big trouble.", "If yer helpin\' crooked", "[wave]D[/wave]", "[wave]DJ[/wave]", "[wave]DJ Gro[/wave]", "[wave]DJ Grooves[/wave]", "rig the awards-,", "And I can\'t take ya to jail,", "then yer got to help me even the score.")
|
||||
subtitle_timings = PackedFloat32Array(0, 2.6, 4.2, 6, 6.5, 7, 7.35, 8, 9.6, 11)
|
||||
metadata/_custom_type_script = "uid://crem3vn3eyf38"
|
||||
@ -1,10 +0,0 @@
|
||||
[gd_resource type="Texture2D" script_class="ControllerIconTexture" format=3 uid="uid://c5nyul3r2u4wu"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ch00l1e1rteyw" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="1_2arla"]
|
||||
|
||||
[resource]
|
||||
resource_local_to_scene = false
|
||||
resource_name = ""
|
||||
script = ExtResource("1_2arla")
|
||||
path = "interact"
|
||||
metadata/_custom_type_script = "uid://ch00l1e1rteyw"
|
||||
@ -1,9 +1,9 @@
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://biu40ot7f55no"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://wb1xv8sdexfr" path="res://assets/dev/dark/texture_04.png" id="1_ib6js"]
|
||||
[ext_resource type="Texture2D" uid="uid://djftxgnhedhk2" path="res://assets/dev/dark/texture_05.png" id="1_l8w0p"]
|
||||
|
||||
[resource]
|
||||
albedo_texture = ExtResource("1_ib6js")
|
||||
albedo_texture = ExtResource("1_l8w0p")
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
texture_filter = 5
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
[gd_resource type="StandardMaterial3D" format=3 uid="uid://dto0mke6wp060"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://djftxgnhedhk2" path="res://assets/dev/dark/texture_05.png" id="1_p236r"]
|
||||
[ext_resource type="Texture2D" uid="uid://d4m1r5bjq4lbe" path="res://assets/dev/dark/texture_01.png" id="1_c2346"]
|
||||
|
||||
[resource]
|
||||
albedo_texture = ExtResource("1_p236r")
|
||||
albedo_texture = ExtResource("1_c2346")
|
||||
uv1_triplanar = true
|
||||
uv1_world_triplanar = true
|
||||
texture_filter = 5
|
||||
|
||||
@ -3,20 +3,19 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://wb1xv8sdexfr"
|
||||
path.s3tc="res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.s3tc.ctex"
|
||||
path="res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/dev/dark/texture_04.png"
|
||||
dest_files=["res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.s3tc.ctex"]
|
||||
dest_files=["res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
@ -24,7 +23,7 @@ compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
@ -38,4 +37,4 @@ process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
detect_3d/compress_to=1
|
||||
|
||||
@ -44,26 +44,6 @@ _subresources={
|
||||
"use_external/fallback_path": "res://assets/models/plush/godot_plush.tres",
|
||||
"use_external/path": "uid://bp26kj1cs4p1s"
|
||||
}
|
||||
},
|
||||
"meshes": {
|
||||
"godot_plush_v2_Cube_001": {
|
||||
"generate/lightmap_uv": 0,
|
||||
"generate/lods": 0,
|
||||
"generate/shadow_meshes": 0,
|
||||
"lods/normal_merge_angle": 20.0,
|
||||
"save_to_file/enabled": true,
|
||||
"save_to_file/fallback_path": "res://assets/models/plush/godot_plush_v2_Cube_001.res",
|
||||
"save_to_file/path": "uid://8s8l7hwib2ny"
|
||||
},
|
||||
"godot_plush_v2_Cube_002": {
|
||||
"generate/lightmap_uv": 0,
|
||||
"generate/lods": 0,
|
||||
"generate/shadow_meshes": 0,
|
||||
"lods/normal_merge_angle": 20.0,
|
||||
"save_to_file/enabled": true,
|
||||
"save_to_file/fallback_path": "res://assets/models/plush/godot_plush_v2_Cube_002.res",
|
||||
"save_to_file/path": "uid://d3b8wym3dsqea"
|
||||
}
|
||||
}
|
||||
}
|
||||
gltf/naming_version=2
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -2,7 +2,6 @@ KEYS,en,de,es,ja
|
||||
|
||||
# UI
|
||||
CONTINUE,Continue,Weiterspielen,Continue,Continue
|
||||
LOAD,Load,Laden,Load,Load
|
||||
NEW_GAME,New Game,Neues Spiel,New Game,New Game
|
||||
SETTINGS,Settings,Einstellungen,Settings,Settings
|
||||
QUIT,Quit,Beenden,Quit,Quit
|
||||
|
||||
|
Can't render this file because it has a wrong number of fields in line 3.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -50,10 +50,6 @@ folder_colors={
|
||||
"res://tools/": "gray"
|
||||
}
|
||||
|
||||
[filesystem]
|
||||
|
||||
import/blender/enabled=false
|
||||
|
||||
[importer_defaults]
|
||||
|
||||
scene={
|
||||
|
||||
@ -6,7 +6,7 @@ var using_controller: bool = false
|
||||
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
if not is_window_focused():
|
||||
if not window_focused():
|
||||
get_viewport().set_input_as_handled()
|
||||
return
|
||||
|
||||
@ -21,7 +21,7 @@ func _input(event: InputEvent) -> void:
|
||||
toggle_mouse()
|
||||
|
||||
|
||||
func is_window_focused() -> bool:
|
||||
func window_focused() -> bool:
|
||||
return DisplayServer.window_is_focused()
|
||||
|
||||
|
||||
|
||||
@ -1,41 +0,0 @@
|
||||
@tool
|
||||
class_name DialogEntry
|
||||
extends Resource
|
||||
|
||||
@export_file("*.tres", "*.res", "*.ogg", "*.wav", "*.mp3")
|
||||
var voiceline_path: String
|
||||
@export var precache_vo_stream: bool = false
|
||||
|
||||
@export var subtitle_strings: PackedStringArray = []
|
||||
@export var subtitle_timings: PackedFloat32Array = []
|
||||
|
||||
var _precached_stream: AudioStream
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
if precache_vo_stream and not Engine.is_editor_hint():
|
||||
_precached_stream = load(voiceline_path)
|
||||
|
||||
|
||||
func get_voiceline_stream() -> AudioStream:
|
||||
return _precached_stream if precache_vo_stream else load(voiceline_path)
|
||||
|
||||
|
||||
func get_subtitle_string_from_elapsed_time(elapsed_time: float) -> String:
|
||||
var subtitle_string: String = ""
|
||||
|
||||
for time_index: int in range(subtitle_timings.size()):
|
||||
if subtitle_timings.get(time_index) >= elapsed_time:
|
||||
break
|
||||
|
||||
subtitle_string = subtitle_strings.get(time_index)
|
||||
|
||||
return subtitle_string
|
||||
# old (search from reverse)
|
||||
#var timings: PackedFloat32Array = subtitle_timings.duplicate()
|
||||
#timings.reverse()
|
||||
|
||||
#for time_index: int in range(timings.size()):
|
||||
#var time: float = timings.get(time_index)
|
||||
#if time <= elapsed_time:
|
||||
#return subtitle_strings.get((timings.size() - time_index) - 1)
|
||||
@ -1 +0,0 @@
|
||||
uid://crem3vn3eyf38
|
||||
@ -1,13 +0,0 @@
|
||||
class_name DialogEntryPlayback
|
||||
|
||||
|
||||
var dialog_entry: DialogEntry
|
||||
var playback_position: float = 0.0
|
||||
|
||||
|
||||
func _init(entry: DialogEntry) -> void:
|
||||
dialog_entry = entry
|
||||
|
||||
|
||||
func get_dialog_subtitle() -> String:
|
||||
return dialog_entry.get_subtitle_string_from_elapsed_time(playback_position)
|
||||
@ -1 +0,0 @@
|
||||
uid://byt7cdieik05m
|
||||
@ -1,91 +0,0 @@
|
||||
class_name DialogPlayer
|
||||
extends Node
|
||||
|
||||
signal dialog_finished(dialog_key: StringName)
|
||||
|
||||
static var active_dialog_playbacks: Array[DialogEntryPlayback] = []
|
||||
|
||||
@export_node_path("AudioStreamPlayer", "AudioStreamPlayer2D", "AudioStreamPlayer3D")
|
||||
var audio_player: NodePath: set = set_audio_player
|
||||
|
||||
@export var dialogs: Dictionary[StringName, DialogEntry] = {}
|
||||
|
||||
var _audio_player: Node
|
||||
var _current_dialog_key: StringName
|
||||
var _current_dialog_playback: DialogEntryPlayback
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
set_process(false)
|
||||
set_audio_player(audio_player)
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if is_instance_valid(_audio_player) and is_instance_valid(_current_dialog_playback):
|
||||
_current_dialog_playback.playback_position = _audio_player.get_playback_position()
|
||||
|
||||
|
||||
func set_audio_player(audio_player_path: NodePath) -> void:
|
||||
if is_instance_valid(_audio_player):
|
||||
_audio_player.finished.disconnect(_on_dialog_finished)
|
||||
|
||||
audio_player = audio_player_path
|
||||
_audio_player = get_node_or_null(audio_player)
|
||||
|
||||
if not is_instance_valid(_audio_player):
|
||||
set_process(false)
|
||||
return
|
||||
|
||||
if (
|
||||
not _audio_player.has_method(&"play")
|
||||
or not _audio_player.has_method(&"get_playback_position")
|
||||
or not &"playing" in _audio_player
|
||||
or not _audio_player.has_signal(&"finished")
|
||||
):
|
||||
_audio_player = null
|
||||
push_error("audio_player is not a valid player.")
|
||||
return
|
||||
|
||||
set_process(_audio_player.playing)
|
||||
|
||||
if not _audio_player.finished.is_connected(_on_dialog_finished):
|
||||
_audio_player.finished.connect(_on_dialog_finished)
|
||||
|
||||
|
||||
func play(entry_key: StringName, from_position: float = 0.0) -> void:
|
||||
var dialog_entry: DialogEntry = dialogs.get(entry_key)
|
||||
|
||||
if is_instance_valid(dialog_entry):
|
||||
stop_dialog()
|
||||
|
||||
_audio_player.stream = dialog_entry.get_voiceline_stream()
|
||||
_current_dialog_key = entry_key
|
||||
_current_dialog_playback = DialogEntryPlayback.new(dialog_entry)
|
||||
active_dialog_playbacks.append(_current_dialog_playback)
|
||||
|
||||
_audio_player.play(from_position)
|
||||
set_process(true)
|
||||
|
||||
|
||||
func get_current_dialog_entry() -> DialogEntry:
|
||||
return dialogs.get(_current_dialog_key)
|
||||
|
||||
|
||||
func get_playback_position() -> float:
|
||||
return _audio_player.get_playback_position() if is_instance_valid(_audio_player) else 0.0
|
||||
|
||||
|
||||
func stop_dialog() -> void:
|
||||
active_dialog_playbacks.erase(_current_dialog_playback)
|
||||
_current_dialog_key = &""
|
||||
_current_dialog_playback = null
|
||||
_audio_player.stream = null
|
||||
|
||||
|
||||
func _on_dialog_finished() -> void:
|
||||
var entry: DialogEntry = dialogs.get(_current_dialog_key)
|
||||
|
||||
stop_dialog()
|
||||
set_process(false)
|
||||
|
||||
dialog_finished.emit(entry)
|
||||
@ -1 +0,0 @@
|
||||
uid://blxophwhpim0l
|
||||
@ -6,7 +6,6 @@ signal unfocused
|
||||
signal hint_prompts_changed
|
||||
|
||||
@export var interaction_types: Array[InteractionType] = []: set = set_interaction_types
|
||||
@export var focus_highlight_node: Node3D
|
||||
|
||||
var is_focused: bool = false
|
||||
|
||||
@ -14,45 +13,38 @@ var is_focused: bool = false
|
||||
func _ready() -> void:
|
||||
set_interaction_types(interaction_types)
|
||||
|
||||
if is_instance_valid(focus_highlight_node):
|
||||
focus_highlight_node.hide()
|
||||
|
||||
|
||||
func set_interaction_types(types: Array[InteractionType]) -> void:
|
||||
for type: InteractionType in interaction_types:
|
||||
if type.hint_prompt_changed.is_connected(hint_prompts_changed.emit):
|
||||
type.hint_prompt_changed.disconnect(hint_prompts_changed.emit)
|
||||
if type.enabled_changed.is_connected(_on_interaction_type_enabled_changed):
|
||||
type.enabled_changed.disconnect(_on_interaction_type_enabled_changed)
|
||||
|
||||
interaction_types = types
|
||||
|
||||
for type: InteractionType in interaction_types:
|
||||
if not type.hint_prompt_changed.is_connected(hint_prompts_changed.emit):
|
||||
type.hint_prompt_changed.connect(hint_prompts_changed.emit)
|
||||
if not type.enabled_changed.is_connected(_on_interaction_type_enabled_changed):
|
||||
type.enabled_changed.connect(_on_interaction_type_enabled_changed)
|
||||
|
||||
|
||||
func set_area_focused(value: bool) -> void:
|
||||
is_focused = value
|
||||
(focused if is_focused else unfocused).emit()
|
||||
|
||||
if is_instance_valid(focus_highlight_node):
|
||||
focus_highlight_node.visible = value
|
||||
|
||||
for type: InteractionType in interaction_types:
|
||||
type.set_focused(is_focused)
|
||||
|
||||
|
||||
func get_interaction_strings() -> PackedStringArray:
|
||||
var strings: PackedStringArray = []
|
||||
func get_interaction_strings() -> Array[Array]:
|
||||
var strings: Array[Array] = []
|
||||
|
||||
for interaction_type: InteractionType in interaction_types:
|
||||
if interaction_type.enabled:
|
||||
var hint: String = interaction_type.get_correct_hover_hint()
|
||||
strings.append(hint)
|
||||
var pre: String = interaction_type.get_hint(0)
|
||||
var prompt: Texture2D = interaction_type.button_prompt
|
||||
var post: String = interaction_type.get_hint(1)
|
||||
strings.append([pre, prompt, post])
|
||||
|
||||
print("Interaction Strings: ", strings)
|
||||
return strings
|
||||
|
||||
|
||||
@ -62,7 +54,3 @@ func _interaction_started(_interaction_ray: InteractionRay) -> void:
|
||||
|
||||
func _interaction_ended(_interaction_ray: InteractionRay) -> void:
|
||||
pass
|
||||
|
||||
|
||||
func _on_interaction_type_enabled_changed() -> void:
|
||||
set_area_focused(is_focused)
|
||||
|
||||
@ -4,6 +4,7 @@ extends RayCast3D
|
||||
signal focused_gained(interaction_area: InteractionArea)
|
||||
signal focus_lost(interaction_area: InteractionArea)
|
||||
|
||||
var is_interacting: bool = false
|
||||
var focused_area: InteractionArea
|
||||
var had_focus: bool = false
|
||||
|
||||
@ -18,6 +19,7 @@ func _physics_process(_delta: float) -> void:
|
||||
#focused_area = null
|
||||
#focused_gained.emit(null)
|
||||
|
||||
|
||||
if collider == focused_area:
|
||||
if not is_instance_valid(focused_area) and had_focus:
|
||||
had_focus = false
|
||||
@ -26,21 +28,21 @@ func _physics_process(_delta: float) -> void:
|
||||
return
|
||||
|
||||
if is_instance_valid(focused_area):
|
||||
lose_area_focus(focused_area)
|
||||
focused_area.set_area_focused(false)
|
||||
had_focus = false
|
||||
focus_lost.emit(focused_area)
|
||||
|
||||
focused_area = collider if collider is InteractionArea else null
|
||||
focused_gained.emit(focused_area)
|
||||
|
||||
if is_instance_valid(focused_area):
|
||||
gain_area_focus(focused_area)
|
||||
|
||||
|
||||
func gain_area_focus(area: InteractionArea) -> void:
|
||||
had_focus = true
|
||||
area.set_area_focused(true)
|
||||
focused_area.set_area_focused(true)
|
||||
|
||||
|
||||
func lose_area_focus(area: InteractionArea) -> void:
|
||||
area.set_area_focused(false)
|
||||
had_focus = false
|
||||
focus_lost.emit(area)
|
||||
func get_interaction() -> InteractionArea:
|
||||
var collider: Object = get_collider()
|
||||
if collider is InteractionArea:
|
||||
return collider
|
||||
|
||||
return null
|
||||
|
||||
@ -3,15 +3,12 @@ class_name InteractionType
|
||||
extends Node
|
||||
|
||||
signal hint_prompt_changed
|
||||
signal enabled_changed
|
||||
|
||||
@export var enabled: bool = true: set = set_enabled
|
||||
@export var hover_hint: String = "Press {interact} to interact": set = set_hover_hint
|
||||
@export var enabled: bool = true
|
||||
@export var hover_hint: String = "Press {prompt} to interact": set = set_hover_hint
|
||||
@export var button_prompt: Texture2D
|
||||
#@export var additional_prompts: Dictionary[String, Texture2D] = {}
|
||||
@export_custom(PROPERTY_HINT_INPUT_NAME, "") var action: StringName = &"interact"
|
||||
@export var texture_size: float = 42.0
|
||||
@export var interaction_textures: Dictionary[String, String] = {
|
||||
"interact": "uid://c5nyul3r2u4wu",
|
||||
}
|
||||
|
||||
var is_focused: bool = false
|
||||
var is_interacting: bool = false
|
||||
@ -29,13 +26,25 @@ func stop_interaction() -> void:
|
||||
_interaction_ended()
|
||||
|
||||
|
||||
func get_correct_hover_hint() -> String:
|
||||
var hint: String = hover_hint
|
||||
func get_hint(slice_idx: int) -> String:
|
||||
return hover_hint.get_slice("{prompt}", slice_idx)
|
||||
#return hover_hint.format({"prompt": str("[img]", button_prompt, "[/img]]")})
|
||||
|
||||
for key: String in interaction_textures.keys():
|
||||
hint = hint.replace("{%s}" % key, "[img=%s]%s[/img]" % [texture_size, interaction_textures[key]])
|
||||
|
||||
return hint
|
||||
# TODO: Convert from string to array.
|
||||
# "Press {prompt} to {interact} interact{exclamation}"
|
||||
# ["Press ", Texture, " to ", Texture, " interact", Texture]
|
||||
func get_full_hint() -> Array:
|
||||
var prompts: Dictionary[String, Texture2D] = {}#additional_prompts.duplicate()
|
||||
prompts.set("{prompt}", button_prompt)
|
||||
|
||||
var entries: Array = []
|
||||
var strings: Array[String] = []
|
||||
|
||||
for key: String in prompts.keys():
|
||||
strings.append(hover_hint.split(key))
|
||||
|
||||
return entries
|
||||
|
||||
|
||||
func set_focused(value: bool) -> void:
|
||||
@ -52,13 +61,6 @@ func set_hover_hint(text: String) -> void:
|
||||
hint_prompt_changed.emit()
|
||||
|
||||
|
||||
func set_enabled(value: bool) -> void:
|
||||
var was_different: bool = enabled != value
|
||||
enabled = value
|
||||
|
||||
if was_different:
|
||||
enabled_changed.emit()
|
||||
|
||||
|
||||
@abstract func _interaction_started() -> void
|
||||
|
||||
|
||||
@ -4,9 +4,6 @@ extends Marker3D
|
||||
|
||||
signal loading_finished
|
||||
|
||||
## If [code]false[/code], prevents loading when inside the area,
|
||||
## but will unload (even when inside the area).
|
||||
@export var enabled: bool = true: set = set_enabled
|
||||
@export var threaded_loading: bool = true
|
||||
@export var prevent_unloading: bool = false
|
||||
@export var unload_delay: float = 3.0
|
||||
@ -41,15 +38,14 @@ var _unload_time_left: float = 0.0
|
||||
var _precomputed_aabb: AABB # Big bounding box covering all [_precomputed_aabbs] for faster checking.
|
||||
var _precomputed_aabbs: Array[AABB]
|
||||
var _previous_camera: Camera3D
|
||||
var _editor_previous_transform: Transform3D
|
||||
|
||||
|
||||
static func get_node_aabb(node: Node3D = null, ignore_top_level: bool = true, bounds_transform := Transform3D()) -> AABB:
|
||||
var aabb: AABB
|
||||
var _transform: Transform3D
|
||||
|
||||
# We are going down the child chain,
|
||||
# we want the aabb of each subsequent node to be on the same axis as the parent.
|
||||
#We area going down the child chain,
|
||||
#we want the aabb of each subsequent node to be on the same axis as the parent.
|
||||
if bounds_transform.is_equal_approx(Transform3D()):
|
||||
_transform = node.global_transform
|
||||
else:
|
||||
@ -101,18 +97,11 @@ func _get_configuration_warnings() -> PackedStringArray:
|
||||
|
||||
func _ready() -> void:
|
||||
precompute_aabb()
|
||||
_editor_previous_transform = global_transform
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if Engine.is_editor_hint():
|
||||
_editor_process_gizmo()
|
||||
|
||||
# Update aabb preview when transforming the node.
|
||||
if not _editor_previous_transform.is_equal_approx(global_transform):
|
||||
_editor_previous_transform = global_transform
|
||||
precompute_aabb()
|
||||
|
||||
return
|
||||
|
||||
if get_tree().debug_collisions_hint:
|
||||
@ -122,7 +111,7 @@ func _process(delta: float) -> void:
|
||||
if not is_instance_valid(camera):
|
||||
return
|
||||
|
||||
if enabled and is_position_in_bounds(camera.global_position):
|
||||
if is_position_in_bounds(camera.global_position):
|
||||
load_level()
|
||||
elif not prevent_unloading and is_level_loaded():
|
||||
_unload_time_left = maxf(_unload_time_left - delta, 0.0)
|
||||
@ -182,10 +171,6 @@ func get_camera() -> Camera3D:
|
||||
return camera
|
||||
|
||||
|
||||
func set_enabled(value: bool) -> void:
|
||||
enabled = value
|
||||
|
||||
|
||||
func is_position_in_bounds(point: Vector3) -> bool:
|
||||
if not _precomputed_aabb.has_point(point):
|
||||
return false
|
||||
@ -201,10 +186,10 @@ func is_position_in_bounds(point: Vector3) -> bool:
|
||||
|
||||
|
||||
func _draw_debug() -> void:
|
||||
for aabb: AABB in _precomputed_aabbs:
|
||||
Game.debug_draw("aabb", [aabb, Color.LAWN_GREEN])
|
||||
for aabb: AABB in load_aabbs:
|
||||
DebugDraw3D.draw_aabb(get_aabb_with_correct_position(aabb, self), Color.ORANGE)
|
||||
|
||||
Game.debug_draw("aabb", [_precomputed_aabb, Color.ORANGE_RED])
|
||||
DebugDraw3D.draw_aabb(get_aabb_with_correct_position(_precomputed_aabb, self), Color.ORANGE_RED)
|
||||
|
||||
|
||||
func _editor_edit_level() -> void:
|
||||
|
||||
@ -45,11 +45,7 @@ func initialize_level_streamers() -> void:
|
||||
|
||||
|
||||
func initialize_world_proxies() -> void:
|
||||
# Reverse order because children are added first, but need to be executed last.
|
||||
var proxies: Array[WorldProxy] = WorldProxy.world_proxies.duplicate()
|
||||
proxies.reverse()
|
||||
|
||||
for world_proxy: WorldProxy in proxies:
|
||||
for world_proxy: WorldProxy in WorldProxy.world_proxies:
|
||||
if is_ancestor_of(world_proxy):
|
||||
world_proxy.set_world(self)
|
||||
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
@tool
|
||||
class_name Game
|
||||
extends Node
|
||||
|
||||
@ -18,8 +17,8 @@ var current_save_data: SaveData = INITIAL_SAVE_DATA.duplicate()
|
||||
var world: World
|
||||
var main_menu: MainMenu
|
||||
|
||||
@onready var world_container: Node = %WorldContainer
|
||||
@onready var loading_screen: LoadingScreen = %LoadingScreen
|
||||
@onready var loading_screen: LoadingScreen = $LoadingScreen
|
||||
@onready var world_container: Node = $WorldContainer
|
||||
|
||||
|
||||
static func _static_init() -> void:
|
||||
@ -32,7 +31,6 @@ static func debug_draw(draw_shape: String, args: Array) -> void:
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if not Engine.is_editor_hint():
|
||||
load_main_menu()
|
||||
|
||||
|
||||
@ -56,6 +54,15 @@ func save_game() -> Error:
|
||||
return ResourceSaver.save(current_save_data, SAVE_PATH % [save_slot, file_name])
|
||||
|
||||
|
||||
#func _ready() -> void:
|
||||
#await load_world("res://src/worlds/exposition/exposition.tscn")
|
||||
#await get_tree().create_timer(5.0, false).timeout
|
||||
#await unload_world()
|
||||
#await loading_screen.fade_out()
|
||||
#await get_tree().create_timer(3.0, false).timeout
|
||||
#_ready()
|
||||
|
||||
|
||||
func load_world(world_path: String, save_previous: bool = true, load_from_save: bool = true) -> Error:
|
||||
if not ResourceLoader.exists(world_path, "PackedScene"):
|
||||
return ERR_FILE_NOT_FOUND
|
||||
|
||||
@ -8,7 +8,5 @@ script = ExtResource("1_7uq6d")
|
||||
metadata/_custom_type_script = "uid://cl1u038dbrou2"
|
||||
|
||||
[node name="WorldContainer" type="Node" parent="." unique_id=1835125942]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="LoadingScreen" parent="." unique_id=1509462056 instance=ExtResource("2_3msxb")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@ -82,7 +82,7 @@ func get_sensitivity() -> float:
|
||||
|
||||
|
||||
func _process_input(delta: float) -> void:
|
||||
if Input.mouse_mode != Input.MOUSE_MODE_CAPTURED or not InputManager.is_window_focused():
|
||||
if Input.mouse_mode != Input.MOUSE_MODE_CAPTURED or not InputManager.window_focused():
|
||||
return
|
||||
|
||||
if input_event is InputEventMouseMotion:
|
||||
|
||||
@ -34,9 +34,6 @@ func _on_interaction_ray_focused(area: InteractionArea) -> void:
|
||||
|
||||
|
||||
func _on_interaction_ray_focus_lost(area: InteractionArea) -> void:
|
||||
interaction_prompt.clear()
|
||||
_play_crosshair_anim(&"to_dot")
|
||||
|
||||
if is_instance_valid(area):
|
||||
area.hint_prompts_changed.disconnect(_populate_focused_hints)
|
||||
|
||||
@ -49,5 +46,20 @@ func _play_crosshair_anim(anim_name: StringName) -> void:
|
||||
func _populate_focused_hints(area: InteractionArea) -> void:
|
||||
interaction_prompt.clear()
|
||||
interaction_prompt.push_paragraph(HORIZONTAL_ALIGNMENT_CENTER)
|
||||
interaction_prompt.append_text("\n".join(area.get_interaction_strings()))
|
||||
|
||||
#for hint: Array in area.get_interaction_strings():
|
||||
#for entry: Variant in hint:
|
||||
#if typeof(entry) == TYPE_STRING:
|
||||
#interaction_prompt.append_text(entry)
|
||||
#elif entry is Texture2D:
|
||||
#interaction_prompt.add_image(entry, 42, 42)
|
||||
#
|
||||
#interaction_prompt.add_text("\n")
|
||||
|
||||
for string: Array in area.get_interaction_strings():
|
||||
if not string[0].is_empty() or not string[2].is_empty():
|
||||
interaction_prompt.append_text(string[0])
|
||||
interaction_prompt.add_image(string[1], 42, 42)
|
||||
interaction_prompt.append_text(string[2] + "\n")
|
||||
|
||||
interaction_prompt.pop_all()
|
||||
|
||||
@ -32,13 +32,14 @@ var can_run: bool = true
|
||||
var is_crouching: bool = false
|
||||
var crouch_speed_affection: float = 0.0
|
||||
|
||||
@onready var head: PlayerHead = %Head
|
||||
@onready var collision_shape: CollisionShape3D = %CylinderCollider
|
||||
@onready var standup_checker: Area3D = %StandupChecker
|
||||
@onready var head: PlayerHead = $Head
|
||||
@onready var collision_shape: CollisionShape3D = $CylinderCollider
|
||||
@onready var standup_checker: Area3D = $StandupChecker
|
||||
@onready var interaction_ray: InteractionRay = %InteractionRay
|
||||
@onready var flashlight: Flashlight = %Flashlight
|
||||
|
||||
|
||||
#@onready var stair_stepper: StairStepper = $StairStepper
|
||||
func _init() -> void:
|
||||
player = self
|
||||
|
||||
@ -49,7 +50,15 @@ func _ready() -> void:
|
||||
|
||||
flashlight.manager = flashlight_manager
|
||||
|
||||
|
||||
#func _ready() -> void:
|
||||
#if not get_tree().current_scene.is_node_ready():
|
||||
#await get_tree().current_scene.ready
|
||||
#
|
||||
#var spawn_point := PlayerSpawnPoint.get_spawnpoint_by_identifier(Game.instance.spawn_id)
|
||||
#
|
||||
#if is_instance_valid(spawn_point):
|
||||
#global_position = spawn_point.global_position
|
||||
#head.global_rotation = spawn_point.global_rotation
|
||||
func _physics_process(delta: float) -> void:
|
||||
#var lagspike: bool = randf() < 0.005
|
||||
#if lagspike:
|
||||
@ -128,7 +137,7 @@ func apply_gravity(delta: float) -> void:
|
||||
|
||||
|
||||
func get_input_direction() -> Vector3:
|
||||
if not InputManager.is_window_focused():
|
||||
if not InputManager.window_focused():
|
||||
return Vector3.ZERO
|
||||
|
||||
var input_dir := Input.get_vector(
|
||||
|
||||
@ -13,8 +13,7 @@
|
||||
[ext_resource type="Script" uid="uid://dd0i7xqjwgc6r" path="res://src/core/camera/effects/view_roll_effect.gd" id="7_3mv4n"]
|
||||
[ext_resource type="Script" uid="uid://dyoa3tnirv7wh" path="res://src/core/camera/camera_effect_target.gd" id="7_ghuot"]
|
||||
[ext_resource type="Script" uid="uid://gvuvxikepb2r" path="res://src/gameplay/characters/player/hud.gd" id="11_y2ktv"]
|
||||
[ext_resource type="Texture2D" uid="uid://biljky5uh45hg" path="res://src/ui/hud/crosshair_outline.png" id="13_qx1cj"]
|
||||
[ext_resource type="PackedScene" uid="uid://ct2u3f03lwsnr" path="res://src/ui/hud/hud_subtitle.tscn" id="15_hqe5n"]
|
||||
[ext_resource type="Texture2D" uid="uid://cwvfdx2v41k0h" path="res://src/ui/hud/crosshair.png" id="13_qx1cj"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_vq0uu"]
|
||||
script = ExtResource("2_1ixuj")
|
||||
@ -166,17 +165,19 @@ shape = SubResource("CapsuleShape3D_bdj5f")
|
||||
disabled = true
|
||||
|
||||
[node name="CylinderCollider" type="CollisionShape3D" parent="." unique_id=397310478]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0)
|
||||
shape = SubResource("CylinderShape3D_bdj5f")
|
||||
|
||||
[node name="Head" type="Node3D" parent="." unique_id=647306642 node_paths=PackedStringArray("camera", "character")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.6, 0)
|
||||
script = ExtResource("2_fjt7c")
|
||||
camera = NodePath("EffectsRoot/ShakingCamera")
|
||||
character = NodePath("..")
|
||||
|
||||
[node name="InteractionRay" parent="Head" unique_id=941602125 instance=ExtResource("4_de0uv")]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -1.75)
|
||||
|
||||
[node name="Flashlight" type="Node3D" parent="Head" unique_id=884032976 node_paths=PackedStringArray("light")]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("5_vxew7")
|
||||
@ -184,7 +185,7 @@ light = NodePath("FlashlightSpot")
|
||||
metadata/_custom_type_script = "uid://1i0linakw8mg"
|
||||
|
||||
[node name="FlashlightSpot" type="SpotLight3D" parent="Head/Flashlight" unique_id=1000286492]
|
||||
light_energy = 1.5
|
||||
light_energy = 3.0
|
||||
light_specular = 0.15
|
||||
light_bake_mode = 0
|
||||
shadow_enabled = true
|
||||
@ -192,10 +193,6 @@ spot_range = 30.0
|
||||
spot_attenuation = 2.0
|
||||
spot_angle_attenuation = 0.5
|
||||
|
||||
[node name="InteractionRay" parent="Head" unique_id=941602125 instance=ExtResource("4_de0uv")]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -1.75)
|
||||
|
||||
[node name="EffectsRoot" type="Node3D" parent="Head" unique_id=274091696 node_paths=PackedStringArray("camera")]
|
||||
script = ExtResource("7_ghuot")
|
||||
camera = NodePath("ShakingCamera")
|
||||
@ -245,7 +242,6 @@ target = NodePath("..")
|
||||
metadata/_custom_type_script = "uid://ds461t4g8nlnh"
|
||||
|
||||
[node name="StandupChecker" type="Area3D" parent="." unique_id=1209822543]
|
||||
unique_name_in_owner = true
|
||||
collision_layer = 0
|
||||
input_ray_pickable = false
|
||||
|
||||
@ -292,5 +288,5 @@ unique_name_in_owner = true
|
||||
scale = Vector2(0.25, 0.25)
|
||||
sprite_frames = SubResource("SpriteFrames_p81y6")
|
||||
animation = &"to_hollow"
|
||||
|
||||
[node name="HudSubtitle" parent="Hud" unique_id=123148710 instance=ExtResource("15_hqe5n")]
|
||||
frame = 5
|
||||
frame_progress = 1.0
|
||||
|
||||
@ -7,9 +7,8 @@ extends Node3D
|
||||
|
||||
var world: World
|
||||
|
||||
@onready var world_proxy: WorldProxy = %WorldProxy
|
||||
@onready var pickup_interaction: PickupInteraction = %PickupInteraction
|
||||
@onready var interaction_area: InteractionArea = %InteractionArea
|
||||
@onready var world_proxy: WorldProxy = $WorldProxy
|
||||
@onready var pickup_interaction: PickupInteraction = $PickupInteraction
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
[ext_resource type="Script" uid="uid://nsxr1qkvivsf" path="res://src/gameplay/systems/flashlight/flashlight_battery.gd" id="1_p5331"]
|
||||
[ext_resource type="Script" uid="uid://ckdo7huqoleoi" path="res://src/core/interaction/interaction_types/pickup.gd" id="2_0r1sb"]
|
||||
[ext_resource type="Script" uid="uid://qifiwdgyx6e" path="res://src/core/world/level/world_proxy.gd" id="2_3nps0"]
|
||||
[ext_resource type="Script" uid="uid://ch00l1e1rteyw" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="3_3nps0"]
|
||||
[ext_resource type="PackedScene" uid="uid://2dre1e56emw6" path="res://src/core/interaction/interaction_area.tscn" id="3_ouj7b"]
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_0r1sb"]
|
||||
@ -10,9 +11,12 @@ top_radius = 0.05
|
||||
bottom_radius = 0.05
|
||||
height = 0.15
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ouj7b"]
|
||||
cull_mode = 1
|
||||
shading_mode = 0
|
||||
[sub_resource type="Texture2D" id="Texture2D_er8ho"]
|
||||
resource_local_to_scene = false
|
||||
resource_name = ""
|
||||
script = ExtResource("3_3nps0")
|
||||
path = "interact"
|
||||
metadata/_custom_type_script = "uid://c2w177bb5r70x"
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_3nps0"]
|
||||
height = 0.2
|
||||
@ -23,28 +27,20 @@ script = ExtResource("1_p5331")
|
||||
metadata/_custom_type_script = "uid://nsxr1qkvivsf"
|
||||
|
||||
[node name="WorldProxy" type="Node" parent="." unique_id=930661856]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("2_3nps0")
|
||||
metadata/_custom_type_script = "uid://qifiwdgyx6e"
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1939916981]
|
||||
mesh = SubResource("CylinderMesh_0r1sb")
|
||||
|
||||
[node name="FocusHightlight" type="MeshInstance3D" parent="MeshInstance3D" unique_id=2040210883]
|
||||
transform = Transform3D(1.035, 0, 0, 0, 1.035, 0, 0, 0, 1.035, 0, 0, 0)
|
||||
material_override = SubResource("StandardMaterial3D_ouj7b")
|
||||
mesh = SubResource("CylinderMesh_0r1sb")
|
||||
|
||||
[node name="PickupInteraction" type="Node" parent="." unique_id=1627706216]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("2_0r1sb")
|
||||
hover_hint = "Press {interact} to pickup"
|
||||
hover_hint = "Press {prompt} to pickup"
|
||||
button_prompt = SubResource("Texture2D_er8ho")
|
||||
metadata/_custom_type_script = "uid://ckdo7huqoleoi"
|
||||
|
||||
[node name="InteractionArea" parent="." unique_id=1987460629 node_paths=PackedStringArray("interaction_types", "focus_highlight_node") instance=ExtResource("3_ouj7b")]
|
||||
unique_name_in_owner = true
|
||||
[node name="InteractionArea" parent="." unique_id=1987460629 node_paths=PackedStringArray("interaction_types") instance=ExtResource("3_ouj7b")]
|
||||
interaction_types = [NodePath("../PickupInteraction")]
|
||||
focus_highlight_node = NodePath("../MeshInstance3D/FocusHightlight")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractionArea" unique_id=1272180976]
|
||||
shape = SubResource("CylinderShape3D_3nps0")
|
||||
|
||||
@ -3,8 +3,16 @@
|
||||
[ext_resource type="Script" uid="uid://dkao86mwhq1tm" path="res://src/gameplay/systems/power_box/fuse_pickup.gd" id="1_b733i"]
|
||||
[ext_resource type="Script" uid="uid://ckdo7huqoleoi" path="res://src/core/interaction/interaction_types/pickup.gd" id="2_of2nm"]
|
||||
[ext_resource type="Script" uid="uid://qifiwdgyx6e" path="res://src/core/world/level/world_proxy.gd" id="2_p036h"]
|
||||
[ext_resource type="Script" uid="uid://ch00l1e1rteyw" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="3_hqmg0"]
|
||||
[ext_resource type="PackedScene" uid="uid://2dre1e56emw6" path="res://src/core/interaction/interaction_area.tscn" id="4_3b6jw"]
|
||||
|
||||
[sub_resource type="Texture2D" id="Texture2D_3b6jw"]
|
||||
resource_local_to_scene = false
|
||||
resource_name = ""
|
||||
script = ExtResource("3_hqmg0")
|
||||
path = "interact"
|
||||
metadata/_custom_type_script = "uid://c2w177bb5r70x"
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3b6jw"]
|
||||
albedo_color = Color(0.4862745, 0.6, 1, 1)
|
||||
|
||||
@ -27,7 +35,8 @@ metadata/_custom_type_script = "uid://qifiwdgyx6e"
|
||||
|
||||
[node name="PickupInteraction" type="Node" parent="." unique_id=285803844]
|
||||
script = ExtResource("2_of2nm")
|
||||
hover_hint = "Press {interact} to pickup"
|
||||
hover_hint = "Press {prompt} to pickup"
|
||||
button_prompt = SubResource("Texture2D_3b6jw")
|
||||
metadata/_custom_type_script = "uid://ckdo7huqoleoi"
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=476632181]
|
||||
|
||||
@ -3,8 +3,16 @@
|
||||
[ext_resource type="Script" uid="uid://bpvawt7ate0ug" path="res://src/gameplay/systems/power_box/power_box.gd" id="1_m14vv"]
|
||||
[ext_resource type="Script" uid="uid://ckdo7huqoleoi" path="res://src/core/interaction/interaction_types/pickup.gd" id="2_35cpc"]
|
||||
[ext_resource type="Script" uid="uid://qifiwdgyx6e" path="res://src/core/world/level/world_proxy.gd" id="2_v6qxf"]
|
||||
[ext_resource type="Script" uid="uid://ch00l1e1rteyw" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="3_35cpc"]
|
||||
[ext_resource type="PackedScene" uid="uid://2dre1e56emw6" path="res://src/core/interaction/interaction_area.tscn" id="4_v6qxf"]
|
||||
|
||||
[sub_resource type="Texture2D" id="Texture2D_35cpc"]
|
||||
resource_local_to_scene = false
|
||||
resource_name = ""
|
||||
script = ExtResource("3_35cpc")
|
||||
path = "interact"
|
||||
metadata/_custom_type_script = "uid://ch00l1e1rteyw"
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_v6qxf"]
|
||||
size = Vector3(0.5, 0.8, 0.5)
|
||||
|
||||
@ -22,6 +30,7 @@ metadata/_custom_type_script = "uid://qifiwdgyx6e"
|
||||
|
||||
[node name="PickupInteraction" type="Node" parent="." unique_id=1698155134]
|
||||
script = ExtResource("2_35cpc")
|
||||
button_prompt = SubResource("Texture2D_35cpc")
|
||||
metadata/_custom_type_script = "uid://ckdo7huqoleoi"
|
||||
|
||||
[node name="InteractionArea" parent="." unique_id=1987460629 node_paths=PackedStringArray("interaction_types") instance=ExtResource("4_v6qxf")]
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB |
@ -1,40 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://biljky5uh45hg"
|
||||
path="res://.godot/imported/crosshair_outline.png-dabc3110529c569dd574195e16b52c92.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/ui/hud/crosshair_outline.png"
|
||||
dest_files=["res://.godot/imported/crosshair_outline.png-dabc3110529c569dd574195e16b52c92.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
@ -1,12 +0,0 @@
|
||||
class_name HudSubtitle
|
||||
extends Control
|
||||
|
||||
@onready var rich_text_label: RichTextLabel = %RichTextLabel
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
var parts: PackedStringArray = []
|
||||
for playback: DialogEntryPlayback in DialogPlayer.active_dialog_playbacks:
|
||||
parts.append(playback.get_dialog_subtitle())
|
||||
|
||||
rich_text_label.text = "\n".join(parts)
|
||||
@ -1 +0,0 @@
|
||||
uid://ssyyrfvcmird
|
||||
@ -1,37 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://ct2u3f03lwsnr"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ssyyrfvcmird" path="res://src/ui/hud/hud_subtitle.gd" id="1_07tug"]
|
||||
|
||||
[node name="HudSubtitle" type="Control" unique_id=123148710]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = ExtResource("1_07tug")
|
||||
metadata/_custom_type_script = "uid://ssyyrfvcmird"
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=441028605]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
theme_override_constants/margin_left = 12
|
||||
theme_override_constants/margin_top = 12
|
||||
theme_override_constants/margin_right = 12
|
||||
theme_override_constants/margin_bottom = 12
|
||||
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer" unique_id=1994554868]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
theme_override_constants/outline_size = 4
|
||||
bbcode_enabled = true
|
||||
text = "Example subtitle"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 2
|
||||
@ -4,50 +4,15 @@ extends Control
|
||||
signal load_game_request(save_data: SaveData, slot_index: int)
|
||||
signal quit_request
|
||||
|
||||
const USER_SETTINGS_PATH: String = "user://settings.ini"
|
||||
const SAVES_DIR: String = "user://saves/"
|
||||
const SAVE_DATA_PATH: String = SAVES_DIR + "%s/save_data.tres"
|
||||
|
||||
@onready var continue_button: Button = %ContinueButton
|
||||
@onready var load_button: Button = %LoadButton
|
||||
@onready var new_game_button: Button = %NewGameButton
|
||||
@onready var quit_button: Button = %QuitButton
|
||||
|
||||
@onready var saves_scroll_container: ScrollContainer = %SavesScrollContainer
|
||||
@onready var saves_scroll_container: ScrollContainer = $SavesScrollContainer
|
||||
@onready var saves_container: VBoxContainer = %SavesContainer
|
||||
|
||||
|
||||
static func get_save_slots() -> PackedInt32Array:
|
||||
if not DirAccess.dir_exists_absolute(SAVES_DIR):
|
||||
return []
|
||||
|
||||
var dirs: PackedStringArray = DirAccess.get_directories_at(SAVES_DIR)
|
||||
var index: int = 0
|
||||
|
||||
while index < dirs.size():
|
||||
var dir_name: String = dirs[index]
|
||||
if dir_name.is_valid_int() and not (dir_name.begins_with("+") or dir_name.begins_with("-")):
|
||||
index += 1
|
||||
else:
|
||||
dirs.remove_at(index)
|
||||
|
||||
return type_convert(dirs, TYPE_PACKED_INT32_ARRAY)
|
||||
|
||||
|
||||
static func get_unique_save_slot_index() -> int:
|
||||
var index: int = 0
|
||||
var taken_slots: PackedInt32Array = get_save_slots()
|
||||
|
||||
while taken_slots.has(index):
|
||||
index += 1
|
||||
|
||||
return index
|
||||
|
||||
|
||||
static func get_save_path(slot_index: int) -> String:
|
||||
return SAVE_DATA_PATH % slot_index
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
continue_button.pressed.connect(_on_continue_pressed)
|
||||
load_button.pressed.connect(_on_load_pressed)
|
||||
@ -59,7 +24,7 @@ func _ready() -> void:
|
||||
|
||||
func has_save() -> bool:
|
||||
var config := ConfigFile.new()
|
||||
config.load(USER_SETTINGS_PATH)
|
||||
config.load("user://settings.ini")
|
||||
return config.has_section_key("game", "last_slot")
|
||||
|
||||
|
||||
@ -68,14 +33,36 @@ func populate_save_entries() -> void:
|
||||
child.queue_free()
|
||||
|
||||
for save_slot: int in get_save_slots():
|
||||
var save_path: String = get_save_path(save_slot)
|
||||
var save_path: String = "user://%s/save_data.tres" % save_slot
|
||||
var button := SaveEntryButton.construct_save_entry_button(saves_container, save_path, save_slot)
|
||||
button.pressed.connect(_on_save_entry_pressed.bind(save_slot))
|
||||
|
||||
|
||||
func get_save_slots() -> PackedInt32Array:
|
||||
if not DirAccess.dir_exists_absolute("user://saves/"):
|
||||
return []
|
||||
|
||||
var dirs: PackedStringArray = DirAccess.get_directories_at("user://saves/")
|
||||
return type_convert(dirs, TYPE_PACKED_INT32_ARRAY)
|
||||
|
||||
|
||||
func get_unique_save_slot_index() -> int:
|
||||
var index: int = 0
|
||||
var taken_slots: PackedInt32Array = get_save_slots()
|
||||
|
||||
while taken_slots.has(index):
|
||||
index += 1
|
||||
|
||||
return index
|
||||
|
||||
|
||||
func get_save_path(slot_index: int) -> String:
|
||||
return "user://saves/%s/save_data.tres" % slot_index
|
||||
|
||||
|
||||
func _on_continue_pressed() -> void:
|
||||
var config := ConfigFile.new()
|
||||
config.load(USER_SETTINGS_PATH)
|
||||
config.load("user://settings.ini")
|
||||
var slot: int = config.get_value("game", "last_slot", 0)
|
||||
var path: String = get_save_path(slot)
|
||||
|
||||
@ -87,7 +74,7 @@ func _on_continue_pressed() -> void:
|
||||
return
|
||||
|
||||
config.set_value("game", "last_slot", slot)
|
||||
config.save(USER_SETTINGS_PATH)
|
||||
config.save("user://settings.ini")
|
||||
|
||||
var save_data: SaveData = load(path)
|
||||
load_game_request.emit(save_data, slot)
|
||||
@ -104,9 +91,10 @@ func _on_new_game_pressed() -> void:
|
||||
load_game_request.emit(save_data, slot_index)
|
||||
|
||||
var config := ConfigFile.new()
|
||||
config.load(USER_SETTINGS_PATH)
|
||||
var path: String = "user://settings.ini"
|
||||
config.load(path)
|
||||
config.set_value("game", "last_slot", slot_index)
|
||||
config.save(USER_SETTINGS_PATH)
|
||||
config.save(path)
|
||||
|
||||
|
||||
func _on_quit_pressed() -> void:
|
||||
@ -115,9 +103,9 @@ func _on_quit_pressed() -> void:
|
||||
|
||||
func _on_save_entry_pressed(save_slot: int) -> void:
|
||||
var config := ConfigFile.new()
|
||||
config.load(USER_SETTINGS_PATH)
|
||||
config.load("user://settings.ini")
|
||||
config.set_value("game", "last_slot", save_slot)
|
||||
config.save(USER_SETTINGS_PATH)
|
||||
config.save("user://settings.ini")
|
||||
|
||||
var save_path: String = get_save_path(save_slot)
|
||||
|
||||
|
||||
@ -1,22 +1,6 @@
|
||||
[gd_scene format=3 uid="uid://7v62dybcabgw"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://ckaouf136x7rh" path="res://src/ui/main_menu/main_menu.gd" id="1_2hyyg"]
|
||||
[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/dev/dark/dark_01.tres" id="2_4ux21"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_4ux21"]
|
||||
sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
|
||||
ground_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
|
||||
|
||||
[sub_resource type="Sky" id="Sky_osdni"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_4ux21")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_3oi2e"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_osdni")
|
||||
ambient_light_source = 2
|
||||
ambient_light_color = Color(0.4390491, 0.43904912, 0.43904912, 1)
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
|
||||
[node name="MainMenu" type="Control" unique_id=481021069]
|
||||
layout_mode = 3
|
||||
@ -73,7 +57,6 @@ layout_mode = 2
|
||||
text = "QUIT"
|
||||
|
||||
[node name="SavesScrollContainer" type="ScrollContainer" parent="." unique_id=1084479536]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
@ -110,19 +93,3 @@ text = "Save 1"
|
||||
[node name="Button4" type="Button" parent="SavesScrollContainer/SavesContainer" unique_id=366833041]
|
||||
layout_mode = 2
|
||||
text = "Save 1"
|
||||
|
||||
[node name="Background" type="Node3D" parent="." unique_id=877986421]
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="Background" unique_id=3797920]
|
||||
environment = SubResource("Environment_3oi2e")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="Background" unique_id=1208848045]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, -0.90000004)
|
||||
|
||||
[node name="Geometry" type="CSGCombiner3D" parent="Background" unique_id=1192727861]
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="Background/Geometry" unique_id=1467898282]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, -3)
|
||||
flip_faces = true
|
||||
size = Vector3(9, 5, 6)
|
||||
material = ExtResource("2_4ux21")
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
[gd_scene format=3 uid="uid://cnfgc6k86hp1q"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://8y3swwnmxwg2" path="res://src/worlds/world.tscn" id="1_3iyfg"]
|
||||
[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/dev/dark/dark_01.tres" id="2_f04cf"]
|
||||
[ext_resource type="Script" uid="uid://s1vhbwkyewdg" path="res://src/gameplay/systems/flashlight/flashlight_manager.gd" id="2_whdyi"]
|
||||
[ext_resource type="PackedScene" uid="uid://yuthv3c7rx8" path="res://src/ui/pause_menu/pause_menu.tscn" id="2_yht7d"]
|
||||
[ext_resource type="Material" uid="uid://r527wj0qbkvs" path="res://assets/dev/orange/orange_02.tres" id="3_en67y"]
|
||||
[ext_resource type="Material" uid="uid://d02jll28bgkap" path="res://assets/dev/orange/orange_05.tres" id="3_gdn1s"]
|
||||
[ext_resource type="Script" uid="uid://bgau5aa5a00w3" path="res://src/core/world/level/level_streamer.gd" id="3_maf5p"]
|
||||
[ext_resource type="Material" uid="uid://bahys2ntbh2ap" path="res://assets/dev/orange/orange_01.tres" id="3_wtnit"]
|
||||
[ext_resource type="Material" uid="uid://biu40ot7f55no" path="res://assets/dev/dark/dark_04.tres" id="4_8xmty"]
|
||||
[ext_resource type="PackedScene" uid="uid://cprtg457nr86q" path="res://assets/models/plush/godot_plush_v2.glb" id="8_qm8ha"]
|
||||
[ext_resource type="PackedScene" uid="uid://bkq8nkmqu7drf" path="res://src/gameplay/systems/flashlight/flashlight_battery.tscn" id="9_n68sy"]
|
||||
[ext_resource type="Script" uid="uid://qpwf8svieydl" path="res://src/worlds/exposition/levels/entrance_hall/entrance_hall_power_box.gd" id="10_btgc1"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2wxc6rij53vs" path="res://src/gameplay/systems/flashlight/flashlight_trigger.tscn" id="10_dy1qy"]
|
||||
@ -14,9 +16,8 @@
|
||||
[ext_resource type="Script" uid="uid://y1nxrfv31pke" path="res://tools/cutscene_animation_player.gd" id="11_map4s"]
|
||||
[ext_resource type="PackedScene" uid="uid://bbqf7j8s2n81l" path="res://src/gameplay/systems/power_box/fuse_pickup.tscn" id="11_qm8ha"]
|
||||
[ext_resource type="PackedScene" uid="uid://lyl5v6s6waw" path="res://_development/ayuroo/maestro/_mo_chase_test.tscn" id="14_264wa"]
|
||||
[ext_resource type="Script" uid="uid://qifiwdgyx6e" path="res://src/core/world/level/world_proxy.gd" id="19_du0pf"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_glp4g"]
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_gdn1s"]
|
||||
sky_top_color = Color(0.055987924, 0.081590004, 0.17344469, 1)
|
||||
sky_horizon_color = Color(0.07963555, 0.093164064, 0.14665467, 1)
|
||||
ground_horizon_color = Color(0.07963555, 0.093164064, 0.14665467, 1)
|
||||
@ -24,7 +25,7 @@ sun_angle_max = 2.93
|
||||
sun_curve = 2.2392747
|
||||
|
||||
[sub_resource type="Sky" id="Sky_dy1qy"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_glp4g")
|
||||
sky_material = SubResource("ProceduralSkyMaterial_gdn1s")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_dy1qy"]
|
||||
background_mode = 2
|
||||
@ -32,10 +33,6 @@ sky = SubResource("Sky_dy1qy")
|
||||
tonemap_mode = 2
|
||||
glow_enabled = true
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_gdn1s"]
|
||||
sun_angle_max = 2.93
|
||||
sun_curve = 2.2392747
|
||||
|
||||
[sub_resource type="Sky" id="Sky_wb8ak"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_gdn1s")
|
||||
|
||||
@ -100,12 +97,16 @@ tracks/1/keys = {
|
||||
"values": [Vector3(0, 0, 0), Vector3(0, -1.8325957, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_yht7d"]
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_gdn1s"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_gdn1s"),
|
||||
&"open": SubResource("Animation_8xmty")
|
||||
}
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wtnit"]
|
||||
transparency = 1
|
||||
albedo_color = Color(1, 1, 1, 0.35686275)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_map4s"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
@ -284,106 +285,283 @@ _data = {
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_dy1qy"]
|
||||
size = Vector3(14.6, 3, 1)
|
||||
|
||||
[node name="Exposition" unique_id=1613733883 node_paths=PackedStringArray("level_streamers") instance=ExtResource("1_3iyfg")]
|
||||
level_streamers = [NodePath("LevelStreamers/EntranceHall")]
|
||||
[node name="Exposition" unique_id=1613733883 instance=ExtResource("1_3iyfg")]
|
||||
|
||||
[node name="PlayerCharacter" parent="." index="0" unique_id=1678220543 node_paths=PackedStringArray("flashlight_manager")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0000005, 17)
|
||||
flashlight_manager = NodePath("FlashlightManager")
|
||||
|
||||
[node name="FlashlightManager" type="Node" parent="PlayerCharacter" index="6" unique_id=583526169]
|
||||
script = ExtResource("2_whdyi")
|
||||
metadata/_custom_type_script = "uid://s1vhbwkyewdg"
|
||||
|
||||
[node name="NightEnvironment" type="WorldEnvironment" parent="." index="1" unique_id=1572071534]
|
||||
[node name="NightEnvironment" type="WorldEnvironment" parent="." index="0" unique_id=1572071534]
|
||||
environment = SubResource("Environment_dy1qy")
|
||||
|
||||
[node name="DayEnvironment" type="WorldEnvironment" parent="." index="2" unique_id=168205352]
|
||||
[node name="DayEnvironment" type="WorldEnvironment" parent="." index="1" unique_id=168205352]
|
||||
environment = SubResource("Environment_whdyi")
|
||||
|
||||
[node name="DaySun" type="DirectionalLight3D" parent="." index="2" unique_id=1667672001]
|
||||
transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0)
|
||||
visible = false
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="NightSun" type="DirectionalLight3D" parent="." index="3" unique_id=372201677]
|
||||
transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0)
|
||||
light_color = Color(0.31085983, 0.314331, 0.35950518, 1)
|
||||
light_angular_distance = 0.75
|
||||
shadow_enabled = true
|
||||
|
||||
[node name="DaySun" type="DirectionalLight3D" parent="." index="4" unique_id=1667672001]
|
||||
transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0)
|
||||
visible = false
|
||||
shadow_enabled = true
|
||||
[node name="PlayerCharacter" parent="." index="4" unique_id=1678220543 node_paths=PackedStringArray("flashlight_manager")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0000005, 17)
|
||||
flashlight_manager = NodePath("FlashlightManager")
|
||||
|
||||
[node name="Doors" type="CSGCombiner3D" parent="." index="5" unique_id=623293063]
|
||||
[node name="FlashlightManager" type="Node" parent="PlayerCharacter" index="6" unique_id=583526169]
|
||||
script = ExtResource("2_whdyi")
|
||||
metadata/_custom_type_script = "uid://s1vhbwkyewdg"
|
||||
|
||||
[node name="EntranceHall" type="Node3D" parent="." index="5" unique_id=1518685491]
|
||||
|
||||
[node name="Doors" type="CSGCombiner3D" parent="EntranceHall" index="0" unique_id=2012245375]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -19.6)
|
||||
use_collision = true
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Doors" index="0" unique_id=661035765]
|
||||
libraries/ = SubResource("AnimationLibrary_yht7d")
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="EntranceHall/Doors" index="0" unique_id=906939002]
|
||||
libraries/ = SubResource("AnimationLibrary_gdn1s")
|
||||
|
||||
[node name="DoorLeft" type="CSGCombiner3D" parent="Doors" index="1" unique_id=952971802]
|
||||
[node name="DoorLeft" type="CSGCombiner3D" parent="EntranceHall/Doors" index="1" unique_id=1094260622]
|
||||
transform = Transform3D(0.9999997, 0, 0, 0, 1, 0, 0, 0, 0.9999997, -5.2, 0, 0.10000038)
|
||||
|
||||
[node name="Box" type="CSGBox3D" parent="Doors/DoorLeft" index="0" unique_id=1212613004]
|
||||
[node name="Box" type="CSGBox3D" parent="EntranceHall/Doors/DoorLeft" index="0" unique_id=1833029438]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.45, 7, 0)
|
||||
visible = false
|
||||
size = Vector3(5.5, 14, 1)
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Box3" type="CSGBox3D" parent="Doors/DoorLeft" index="1" unique_id=788913396]
|
||||
[node name="Box3" type="CSGBox3D" parent="EntranceHall/Doors/DoorLeft" index="1" unique_id=1258502275]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.45, 5.625, 0)
|
||||
size = Vector3(5.5, 11.25, 1)
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Box4" type="CSGBox3D" parent="Doors/DoorLeft" index="2" unique_id=1245695811]
|
||||
[node name="Box4" type="CSGBox3D" parent="EntranceHall/Doors/DoorLeft" index="2" unique_id=1346859939]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.825, 7, 0)
|
||||
size = Vector3(2.75, 14, 1)
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Box2" type="CSGCylinder3D" parent="Doors/DoorLeft" index="3" unique_id=946557532]
|
||||
[node name="Box2" type="CSGCylinder3D" parent="EntranceHall/Doors/DoorLeft" index="3" unique_id=1015521100]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 2.45, 11.25, 0)
|
||||
radius = 2.75
|
||||
height = 1.0
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="DoorRight" type="CSGCombiner3D" parent="Doors" index="2" unique_id=215853960]
|
||||
[node name="DoorRight" type="CSGCombiner3D" parent="EntranceHall/Doors" index="2" unique_id=275591387]
|
||||
transform = Transform3D(0.9999997, 0, 0, 0, 1, 0, 0, 0, 0.9999997, 5.2, 0, 0.10000038)
|
||||
|
||||
[node name="Box" type="CSGBox3D" parent="Doors/DoorRight" index="0" unique_id=944987501]
|
||||
[node name="Box" type="CSGBox3D" parent="EntranceHall/Doors/DoorRight" index="0" unique_id=404654783]
|
||||
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -2.4625, 7, 0)
|
||||
visible = false
|
||||
size = Vector3(5.5, 14, 1)
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Box3" type="CSGBox3D" parent="Doors/DoorRight" index="1" unique_id=1942036079]
|
||||
[node name="Box3" type="CSGBox3D" parent="EntranceHall/Doors/DoorRight" index="1" unique_id=1124114693]
|
||||
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -2.4625, 5.625, 0)
|
||||
size = Vector3(5.5, 11.25, 1)
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Box4" type="CSGBox3D" parent="Doors/DoorRight" index="2" unique_id=274266953]
|
||||
[node name="Box4" type="CSGBox3D" parent="EntranceHall/Doors/DoorRight" index="2" unique_id=461171599]
|
||||
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -3.8374999, 7, 0)
|
||||
size = Vector3(2.75, 14, 1)
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Box2" type="CSGCylinder3D" parent="Doors/DoorRight" index="3" unique_id=589341751]
|
||||
[node name="Box2" type="CSGCylinder3D" parent="EntranceHall/Doors/DoorRight" index="3" unique_id=1740694143]
|
||||
transform = Transform3D(-1, 8.742278e-08, -3.821371e-15, 0, -4.371139e-08, -1, -8.742278e-08, -1, 4.371139e-08, -2.4625, 11.25, 0)
|
||||
radius = 2.75
|
||||
height = 1.0
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Floor" type="CSGBox3D" parent="Doors" index="3" unique_id=359423735]
|
||||
[node name="Floor" type="CSGBox3D" parent="EntranceHall/Doors" index="3" unique_id=872627719]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0.10000038)
|
||||
size = Vector3(11, 1, 1)
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="LevelStreamers" type="Node3D" parent="." index="6" unique_id=460675243]
|
||||
[node name="Blockout" type="CSGCombiner3D" parent="EntranceHall" index="1" unique_id=2092187673]
|
||||
use_collision = true
|
||||
|
||||
[node name="EntranceHall" type="Marker3D" parent="LevelStreamers" index="0" unique_id=1730849561]
|
||||
script = ExtResource("3_maf5p")
|
||||
level_id = &"entrance_hall"
|
||||
scene_path = "uid://cksacjkic7wl6"
|
||||
load_aabbs = Array[AABB]([AABB(-22, -2, -20, 41, 23, 40), AABB(-18, 0, -36, 41, 19, 16)])
|
||||
metadata/_custom_type_script = "uid://bgau5aa5a00w3"
|
||||
[node name="Floor" type="CSGBox3D" parent="EntranceHall/Blockout" index="0" unique_id=106297379]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
size = Vector3(40, 1, 38)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="SecondEntranceHall" type="Node3D" parent="." index="7" unique_id=282414961]
|
||||
[node name="Ceiling" type="CSGBox3D" parent="EntranceHall/Blockout" index="1" unique_id=678154528]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 18.5, 0)
|
||||
size = Vector3(40, 1, 38)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="HollowSphere" type="CSGSphere3D" parent="EntranceHall/Blockout/Ceiling" index="0" unique_id=123150142]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
operation = 2
|
||||
radius = 12.0
|
||||
radial_segments = 24
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="CenterCashier" type="CSGCombiner3D" parent="EntranceHall/Blockout" index="2" unique_id=1862985509]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
|
||||
[node name="Statue" type="CSGCombiner3D" parent="EntranceHall/Blockout/CenterCashier" index="0" unique_id=134083437]
|
||||
|
||||
[node name="Room" type="CSGCombiner3D" parent="EntranceHall/Blockout/CenterCashier" index="1" unique_id=120658381]
|
||||
|
||||
[node name="Cylinder" type="CSGCylinder3D" parent="EntranceHall/Blockout/CenterCashier/Room" index="0" unique_id=1559637996]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25, 0)
|
||||
radius = 6.0
|
||||
height = 4.5
|
||||
sides = 18
|
||||
material = ExtResource("3_wtnit")
|
||||
|
||||
[node name="HollowCylinder" type="CSGCylinder3D" parent="EntranceHall/Blockout/CenterCashier/Room" index="1" unique_id=1402496092]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7656252, 0)
|
||||
operation = 2
|
||||
radius = 5.8
|
||||
height = 4.6312504
|
||||
sides = 18
|
||||
material = ExtResource("3_wtnit")
|
||||
|
||||
[node name="Window" type="CSGBox3D" parent="EntranceHall/Blockout/CenterCashier/Room" index="2" unique_id=556425626]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.95, 0)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 2, 12)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="Window2" type="CSGBox3D" parent="EntranceHall/Blockout/CenterCashier/Room" index="3" unique_id=1652618075]
|
||||
transform = Transform3D(0.70710677, 0, -0.70710677, 0, 1, 0, 0.70710677, 0, 0.70710677, 0, 1.95, 0)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 2, 12)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="_TEMPDoor" type="CSGBox3D" parent="EntranceHall/Blockout/CenterCashier/Room" index="4" unique_id=136289796]
|
||||
transform = Transform3D(0.70710677, 0, -0.70710677, 0, 1, 0, 0.70710677, 0, 0.70710677, -3.535534, 1.45, 3.535534)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 3, 2)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="Window3" type="CSGBox3D" parent="EntranceHall/Blockout/CenterCashier/Room" index="5" unique_id=1044909127]
|
||||
transform = Transform3D(0, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, 0, 0, 1.95, 0)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 2, 12)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="Window4" type="CSGBox3D" parent="EntranceHall/Blockout/CenterCashier/Room" index="6" unique_id=2033585943]
|
||||
transform = Transform3D(-0.70710665, 0, -0.70710665, 0, 1, 0, 0.70710665, 0, -0.70710665, 0, 1.95, 0)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 2, 12)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="Dome" type="CSGCombiner3D" parent="EntranceHall/Blockout" index="3" unique_id=949578487]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 19, 0)
|
||||
|
||||
[node name="Sphere" type="CSGSphere3D" parent="EntranceHall/Blockout/Dome" index="0" unique_id=796313331]
|
||||
radius = 13.0
|
||||
radial_segments = 24
|
||||
material = SubResource("StandardMaterial3D_wtnit")
|
||||
|
||||
[node name="DomeDetails" type="CSGCombiner3D" parent="EntranceHall/Blockout/Dome" index="1" unique_id=1959193638]
|
||||
|
||||
[node name="Torus" type="CSGTorus3D" parent="EntranceHall/Blockout/Dome/DomeDetails" index="0" unique_id=1458632213]
|
||||
transform = Transform3D(1, 0, 0, 0, 2.9802322e-08, -1, 0, 1, 2.9802322e-08, 0, 0, 0)
|
||||
inner_radius = 13.075
|
||||
outer_radius = 14.0
|
||||
sides = 24
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Torus2" type="CSGTorus3D" parent="EntranceHall/Blockout/Dome/DomeDetails" index="1" unique_id=778282688]
|
||||
transform = Transform3D(0.70710677, -0.70710677, -2.1073424e-08, 0, 2.9802322e-08, -1, 0.70710677, 0.70710677, 2.1073424e-08, 0, 0, 0)
|
||||
inner_radius = 13.075
|
||||
outer_radius = 14.0
|
||||
sides = 24
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Torus3" type="CSGTorus3D" parent="EntranceHall/Blockout/Dome/DomeDetails" index="2" unique_id=793102935]
|
||||
transform = Transform3D(0, -0.99999994, -2.980232e-08, 0, 2.9802322e-08, -1, 0.99999994, 0, 0, 0, 0, 0)
|
||||
inner_radius = 13.075
|
||||
outer_radius = 14.0
|
||||
sides = 24
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="Torus4" type="CSGTorus3D" parent="EntranceHall/Blockout/Dome/DomeDetails" index="3" unique_id=357788534]
|
||||
transform = Transform3D(-0.70710665, -0.70710665, -2.107342e-08, 0, 2.9802322e-08, -1, 0.70710665, -0.70710665, -2.107342e-08, 0, 0, 0)
|
||||
inner_radius = 13.075
|
||||
outer_radius = 14.0
|
||||
sides = 24
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="TopTorus" type="CSGTorus3D" parent="EntranceHall/Blockout/Dome/DomeDetails" index="4" unique_id=1057763023]
|
||||
transform = Transform3D(0.9999998, 0, 0, 0, 0.9999998, 0, 0, 0, 1, 0, 12.263981, 0)
|
||||
inner_radius = 5.0
|
||||
outer_radius = 6.0
|
||||
sides = 24
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="TorusCutoff" type="CSGSphere3D" parent="EntranceHall/Blockout/Dome/DomeDetails" index="5" unique_id=1278980607]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.358425, 0)
|
||||
operation = 2
|
||||
radius = 5.6310983
|
||||
radial_segments = 24
|
||||
material = ExtResource("3_en67y")
|
||||
|
||||
[node name="LowerCutoff" type="CSGBox3D" parent="EntranceHall/Blockout/Dome" index="2" unique_id=2066422133]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -7.25, 0)
|
||||
operation = 2
|
||||
size = Vector3(29, 14.5, 28)
|
||||
material = SubResource("StandardMaterial3D_wtnit")
|
||||
|
||||
[node name="FrontWall" type="CSGBox3D" parent="EntranceHall/Blockout" index="4" unique_id=767189909]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 19.5)
|
||||
size = Vector3(40, 18, 1)
|
||||
material = ExtResource("4_8xmty")
|
||||
|
||||
[node name="DoorCutLeft" type="CSGBox3D" parent="EntranceHall/Blockout/FrontWall" index="0" unique_id=787685923]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 2.5, -7.5, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 2, 3)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="DoorCutLeft2" type="CSGBox3D" parent="EntranceHall/Blockout/FrontWall" index="1" unique_id=1636072458]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -2.5, -7.5, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 2, 3)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="EntranceHall/Blockout/FrontWall" index="2" unique_id=1660686906]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, -9, 0)
|
||||
operation = 2
|
||||
radius = 11.0
|
||||
sides = 18
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="LowerCutoff" type="CSGBox3D" parent="EntranceHall/Blockout/FrontWall/CSGCylinder3D" index="0" unique_id=1970869844]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -5.25)
|
||||
operation = 2
|
||||
size = Vector3(25, 1, 12.5)
|
||||
material = ExtResource("2_f04cf")
|
||||
|
||||
[node name="BackWall" type="CSGCombiner3D" parent="EntranceHall/Blockout" index="5" unique_id=1852128943]
|
||||
|
||||
[node name="Box" type="CSGBox3D" parent="EntranceHall/Blockout/BackWall" index="0" unique_id=651549013]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.75, 10, -19.5)
|
||||
size = Vector3(14.5, 18, 1)
|
||||
material = ExtResource("4_8xmty")
|
||||
|
||||
[node name="Box2" type="CSGBox3D" parent="EntranceHall/Blockout/BackWall" index="1" unique_id=762610247]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.75, 10, -19.5)
|
||||
size = Vector3(14.5, 18, 1)
|
||||
material = ExtResource("4_8xmty")
|
||||
|
||||
[node name="Box3" type="CSGBox3D" parent="EntranceHall/Blockout/BackWall" index="2" unique_id=1251599122]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 17, -19.5)
|
||||
size = Vector3(11, 4, 1)
|
||||
material = ExtResource("4_8xmty")
|
||||
|
||||
[node name="RightWall" type="CSGCombiner3D" parent="EntranceHall/Blockout" index="6" unique_id=427128707]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 1, 0)
|
||||
|
||||
[node name="Box" type="CSGBox3D" parent="EntranceHall/Blockout/RightWall" index="0" unique_id=156076418]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9, 0)
|
||||
size = Vector3(1, 18, 40)
|
||||
material = ExtResource("4_8xmty")
|
||||
|
||||
[node name="SecondEntranceHall" type="Node3D" parent="." index="6" unique_id=282414961]
|
||||
|
||||
[node name="Blockout" type="CSGCombiner3D" parent="SecondEntranceHall" index="0" unique_id=1024650246]
|
||||
use_collision = true
|
||||
@ -417,6 +595,18 @@ operation = 2
|
||||
size = Vector3(17, 11, 5)
|
||||
material = ExtResource("4_8xmty")
|
||||
|
||||
[node name="godot_plush V2" parent="." index="7" unique_id=1756431274 instance=ExtResource("8_qm8ha")]
|
||||
transform = Transform3D(-50, 0, 4.371139e-06, 0, 50, 0, -4.371139e-06, 0, -50, 0, 5.628097, 0)
|
||||
|
||||
[node name="godot_plush_01" parent="godot_plush V2" index="0" unique_id=983026135]
|
||||
visible = false
|
||||
|
||||
[node name="godot_plush_sitted" parent="godot_plush V2" index="1" unique_id=1406071640]
|
||||
visible = false
|
||||
|
||||
[node name="godot_plush_02" parent="godot_plush V2" index="2" unique_id=815057431]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0025618896, 0)
|
||||
|
||||
[node name="Objects" type="Node3D" parent="." index="8" unique_id=249052389]
|
||||
|
||||
[node name="FlashlightBattery" parent="Objects" index="0" unique_id=1021450063 node_paths=PackedStringArray("manager") instance=ExtResource("9_n68sy")]
|
||||
@ -445,16 +635,13 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.50000006, 2.0499978, 5.8)
|
||||
manager = NodePath("../../PlayerCharacter/FlashlightManager")
|
||||
refill_amount = 0.5
|
||||
|
||||
[node name="LogicCluster" type="Node3D" parent="Objects" index="6" unique_id=556526856 node_paths=PackedStringArray("doors_animation_player")]
|
||||
[node name="LogicCluster" type="Node3D" parent="Objects" index="6" unique_id=556526856 node_paths=PackedStringArray("world", "doors_animation_player")]
|
||||
transform = Transform3D(1.0000001, 0, 0, 0, 1, 0, 0, 0, 1.0000001, 0, 0, 0)
|
||||
script = ExtResource("10_btgc1")
|
||||
doors_animation_player = NodePath("../../Doors/AnimationPlayer")
|
||||
world = NodePath("../..")
|
||||
doors_animation_player = NodePath("../../EntranceHall/Doors/AnimationPlayer")
|
||||
|
||||
[node name="WorldProxy" type="Node" parent="Objects/LogicCluster" index="0" unique_id=227334375]
|
||||
script = ExtResource("19_du0pf")
|
||||
metadata/_custom_type_script = "uid://qifiwdgyx6e"
|
||||
|
||||
[node name="Cutscene" type="Node3D" parent="Objects/LogicCluster" index="1" unique_id=970055626]
|
||||
[node name="Cutscene" type="Node3D" parent="Objects/LogicCluster" index="0" unique_id=970055626]
|
||||
|
||||
[node name="EndAlignment" type="Marker3D" parent="Objects/LogicCluster/Cutscene" index="0" unique_id=399304482]
|
||||
transform = Transform3D(1.0000001, 0, 0, 0, 1, 0, 0, 0, 1.0000001, 0, 1, -5)
|
||||
@ -476,10 +663,10 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, -5)
|
||||
top_level = true
|
||||
fov = 65.0
|
||||
|
||||
[node name="PowerBoxFuse" parent="Objects/LogicCluster" index="2" unique_id=1951712625 instance=ExtResource("10_xp6ux")]
|
||||
[node name="PowerBoxFuse" parent="Objects/LogicCluster" index="1" unique_id=1951712625 instance=ExtResource("10_xp6ux")]
|
||||
transform = Transform3D(0.96592575, 0, 0.25881898, 0, 1, 0, -0.25881898, 0, 0.96592575, -1.2618543, 2.5, -5.657638)
|
||||
|
||||
[node name="FusePickup" parent="Objects/LogicCluster" index="3" unique_id=38269817 node_paths=PackedStringArray("power_box") instance=ExtResource("11_qm8ha")]
|
||||
[node name="FusePickup" parent="Objects/LogicCluster" index="2" unique_id=38269817 node_paths=PackedStringArray("power_box") instance=ExtResource("11_qm8ha")]
|
||||
transform = Transform3D(0.9999998, 0, 0, 0, 1, 0, 0, 0, 0.9999998, -4.2999997, 2.0499978, -3.9999995)
|
||||
power_box = NodePath("../PowerBoxFuse")
|
||||
|
||||
@ -514,3 +701,4 @@ transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -20.
|
||||
visible = false
|
||||
world = NodePath("..")
|
||||
|
||||
[editable path="godot_plush V2"]
|
||||
|
||||
@ -1,282 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://cksacjkic7wl6"]
|
||||
|
||||
[ext_resource type="Material" uid="uid://r527wj0qbkvs" path="res://assets/dev/orange/orange_02.tres" id="1_4sesj"]
|
||||
[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/dev/dark/dark_01.tres" id="2_ro4g0"]
|
||||
[ext_resource type="Material" uid="uid://bahys2ntbh2ap" path="res://assets/dev/orange/orange_01.tres" id="3_4uqqm"]
|
||||
[ext_resource type="Material" uid="uid://biu40ot7f55no" path="res://assets/dev/dark/dark_04.tres" id="4_3ohxo"]
|
||||
[ext_resource type="PackedScene" uid="uid://qvgrds4w5qlk" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_PaperPile_03_2.glb" id="5_m5411"]
|
||||
[ext_resource type="PackedScene" uid="uid://w5f6qhe2k7nt" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_PaperPile_03_1.glb" id="6_8s83o"]
|
||||
[ext_resource type="PackedScene" uid="uid://dvypbwty4jpw4" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_PaperPile_03.glb" id="7_45xuj"]
|
||||
[ext_resource type="PackedScene" uid="uid://brudyosqqlxho" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_CardboardFileBox_02_closed.glb" id="8_hci5i"]
|
||||
[ext_resource type="PackedScene" uid="uid://c55o1tgvneib2" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_CardboardFileBox_02_open_01.glb" id="9_hx1l4"]
|
||||
[ext_resource type="PackedScene" uid="uid://bp5tnpr2xeqcw" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_CardboardFileBox_01_closed.glb" id="10_mgf24"]
|
||||
[ext_resource type="PackedScene" uid="uid://1m2vet7eedwm" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_Closet_b1.glb" id="11_t7ac6"]
|
||||
[ext_resource type="PackedScene" uid="uid://di85vgulxf3qx" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_Chair_01.glb" id="12_ndl0p"]
|
||||
[ext_resource type="PackedScene" uid="uid://cprtg457nr86q" path="res://assets/models/plush/godot_plush_v2.glb" id="13_ro4g0"]
|
||||
[ext_resource type="PackedScene" uid="uid://dt1fqe1fhp1mi" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_PaperPile_01.glb" id="14_hx1l4"]
|
||||
[ext_resource type="PackedScene" uid="uid://dv4o5ldywhctm" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_PaperFilePen_01.glb" id="15_mgf24"]
|
||||
[ext_resource type="PackedScene" uid="uid://dnj6f7phs8lmy" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_PaperPile_02.glb" id="16_t7ac6"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2csp3q6ctuwm" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_RadioTelephone_01.glb" id="17_ndl0p"]
|
||||
[ext_resource type="PackedScene" uid="uid://ctkwxcldpgnk5" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_ComicBooks_02.glb" id="18_id567"]
|
||||
[ext_resource type="PackedScene" uid="uid://c8tu01ufnbr74" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_ComicBooks_01.glb" id="19_ngprr"]
|
||||
[ext_resource type="PackedScene" uid="uid://d3ak24nb0j3h1" path="res://_development/ayuroo/_asset_packs/fc_research_tent/interior_props/SM_CerealBox_01.glb" id="20_dcj1l"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wtnit"]
|
||||
transparency = 1
|
||||
albedo_color = Color(1, 1, 1, 0.35686275)
|
||||
|
||||
[node name="EntranceHall" type="Node3D" unique_id=1922543926]
|
||||
|
||||
[node name="Blockout" type="CSGCombiner3D" parent="." unique_id=1464342270]
|
||||
use_collision = true
|
||||
|
||||
[node name="Floor" type="CSGBox3D" parent="Blockout" unique_id=981718431]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
size = Vector3(40, 1, 38)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="Ceiling" type="CSGBox3D" parent="Blockout" unique_id=1841940119]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 18.5, 0)
|
||||
size = Vector3(40, 1, 38)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="HollowSphere" type="CSGSphere3D" parent="Blockout/Ceiling" unique_id=2138697938]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||
operation = 2
|
||||
radius = 12.0
|
||||
radial_segments = 24
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="CenterCashier" type="CSGCombiner3D" parent="Blockout" unique_id=1986799842]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
|
||||
[node name="Statue" type="CSGCombiner3D" parent="Blockout/CenterCashier" unique_id=761625484]
|
||||
|
||||
[node name="Room" type="CSGCombiner3D" parent="Blockout/CenterCashier" unique_id=915954706]
|
||||
|
||||
[node name="Cylinder" type="CSGCylinder3D" parent="Blockout/CenterCashier/Room" unique_id=791128983]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25, 0)
|
||||
radius = 6.0
|
||||
height = 4.5
|
||||
sides = 18
|
||||
material = ExtResource("3_4uqqm")
|
||||
|
||||
[node name="HollowCylinder" type="CSGCylinder3D" parent="Blockout/CenterCashier/Room" unique_id=517097479]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7656252, 0)
|
||||
operation = 2
|
||||
radius = 5.8
|
||||
height = 4.6312504
|
||||
sides = 18
|
||||
material = ExtResource("3_4uqqm")
|
||||
|
||||
[node name="Window" type="CSGBox3D" parent="Blockout/CenterCashier/Room" unique_id=1058717011]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.95, 0)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 2, 12)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="Window2" type="CSGBox3D" parent="Blockout/CenterCashier/Room" unique_id=49546759]
|
||||
transform = Transform3D(0.70710677, 0, -0.70710677, 0, 1, 0, 0.70710677, 0, 0.70710677, 0, 1.95, 0)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 2, 12)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="_TEMPDoor" type="CSGBox3D" parent="Blockout/CenterCashier/Room" unique_id=2097227883]
|
||||
transform = Transform3D(0.70710677, 0, -0.70710677, 0, 1, 0, 0.70710677, 0, 0.70710677, -3.535534, 1.45, 3.535534)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 3, 2)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="Window3" type="CSGBox3D" parent="Blockout/CenterCashier/Room" unique_id=503374188]
|
||||
transform = Transform3D(0, 0, -0.99999994, 0, 1, 0, 0.99999994, 0, 0, 0, 1.95, 0)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 2, 12)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="Window4" type="CSGBox3D" parent="Blockout/CenterCashier/Room" unique_id=997856821]
|
||||
transform = Transform3D(-0.70710665, 0, -0.70710665, 0, 1, 0, 0.70710665, 0, -0.70710665, 0, 1.95, 0)
|
||||
operation = 2
|
||||
size = Vector3(1.5, 2, 12)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="Dome" type="CSGCombiner3D" parent="Blockout" unique_id=1518873811]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 19, 0)
|
||||
|
||||
[node name="Sphere" type="CSGSphere3D" parent="Blockout/Dome" unique_id=1240820870]
|
||||
radius = 13.0
|
||||
radial_segments = 24
|
||||
material = SubResource("StandardMaterial3D_wtnit")
|
||||
|
||||
[node name="DomeDetails" type="CSGCombiner3D" parent="Blockout/Dome" unique_id=1621148910]
|
||||
|
||||
[node name="Torus" type="CSGTorus3D" parent="Blockout/Dome/DomeDetails" unique_id=1726696752]
|
||||
transform = Transform3D(1, 0, 0, 0, 2.9802322e-08, -1, 0, 1, 2.9802322e-08, 0, 0, 0)
|
||||
inner_radius = 13.075
|
||||
outer_radius = 14.0
|
||||
sides = 24
|
||||
material = ExtResource("1_4sesj")
|
||||
|
||||
[node name="Torus2" type="CSGTorus3D" parent="Blockout/Dome/DomeDetails" unique_id=1848013987]
|
||||
transform = Transform3D(0.70710677, -0.70710677, -2.1073424e-08, 0, 2.9802322e-08, -1, 0.70710677, 0.70710677, 2.1073424e-08, 0, 0, 0)
|
||||
inner_radius = 13.075
|
||||
outer_radius = 14.0
|
||||
sides = 24
|
||||
material = ExtResource("1_4sesj")
|
||||
|
||||
[node name="Torus3" type="CSGTorus3D" parent="Blockout/Dome/DomeDetails" unique_id=526929359]
|
||||
transform = Transform3D(0, -0.99999994, -2.980232e-08, 0, 2.9802322e-08, -1, 0.99999994, 0, 0, 0, 0, 0)
|
||||
inner_radius = 13.075
|
||||
outer_radius = 14.0
|
||||
sides = 24
|
||||
material = ExtResource("1_4sesj")
|
||||
|
||||
[node name="Torus4" type="CSGTorus3D" parent="Blockout/Dome/DomeDetails" unique_id=441749211]
|
||||
transform = Transform3D(-0.70710665, -0.70710665, -2.107342e-08, 0, 2.9802322e-08, -1, 0.70710665, -0.70710665, -2.107342e-08, 0, 0, 0)
|
||||
inner_radius = 13.075
|
||||
outer_radius = 14.0
|
||||
sides = 24
|
||||
material = ExtResource("1_4sesj")
|
||||
|
||||
[node name="TopTorus" type="CSGTorus3D" parent="Blockout/Dome/DomeDetails" unique_id=338189784]
|
||||
transform = Transform3D(0.9999998, 0, 0, 0, 0.9999998, 0, 0, 0, 1, 0, 12.263981, 0)
|
||||
inner_radius = 5.0
|
||||
outer_radius = 6.0
|
||||
sides = 24
|
||||
material = ExtResource("1_4sesj")
|
||||
|
||||
[node name="TorusCutoff" type="CSGSphere3D" parent="Blockout/Dome/DomeDetails" unique_id=1573441356]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 14.358425, 0)
|
||||
operation = 2
|
||||
radius = 5.6310983
|
||||
radial_segments = 24
|
||||
material = ExtResource("1_4sesj")
|
||||
|
||||
[node name="LowerCutoff" type="CSGBox3D" parent="Blockout/Dome" unique_id=182032145]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -7.25, 0)
|
||||
operation = 2
|
||||
size = Vector3(29, 14.5, 28)
|
||||
material = SubResource("StandardMaterial3D_wtnit")
|
||||
|
||||
[node name="FrontWall" type="CSGBox3D" parent="Blockout" unique_id=1194334786]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 10, 19.5)
|
||||
size = Vector3(40, 18, 1)
|
||||
material = ExtResource("4_3ohxo")
|
||||
|
||||
[node name="DoorCutLeft" type="CSGBox3D" parent="Blockout/FrontWall" unique_id=115120624]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 2.5, -7.5, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 2, 3)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="DoorCutLeft2" type="CSGBox3D" parent="Blockout/FrontWall" unique_id=1732807929]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -2.5, -7.5, 0)
|
||||
operation = 2
|
||||
size = Vector3(2, 2, 3)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Blockout/FrontWall" unique_id=1802029672]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, -9, 0)
|
||||
operation = 2
|
||||
radius = 11.0
|
||||
sides = 18
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="LowerCutoff" type="CSGBox3D" parent="Blockout/FrontWall/CSGCylinder3D" unique_id=910198742]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -5.25)
|
||||
operation = 2
|
||||
size = Vector3(25, 1, 12.5)
|
||||
material = ExtResource("2_ro4g0")
|
||||
|
||||
[node name="BackWall" type="CSGCombiner3D" parent="Blockout" unique_id=317398196]
|
||||
|
||||
[node name="Box" type="CSGBox3D" parent="Blockout/BackWall" unique_id=1748317091]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.75, 10, -19.5)
|
||||
size = Vector3(14.5, 18, 1)
|
||||
material = ExtResource("4_3ohxo")
|
||||
|
||||
[node name="Box2" type="CSGBox3D" parent="Blockout/BackWall" unique_id=1160242589]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.75, 10, -19.5)
|
||||
size = Vector3(14.5, 18, 1)
|
||||
material = ExtResource("4_3ohxo")
|
||||
|
||||
[node name="Box3" type="CSGBox3D" parent="Blockout/BackWall" unique_id=1687352900]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 17, -19.5)
|
||||
size = Vector3(11, 4, 1)
|
||||
material = ExtResource("4_3ohxo")
|
||||
|
||||
[node name="RightWall" type="CSGCombiner3D" parent="Blockout" unique_id=1186414279]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 1, 0)
|
||||
|
||||
[node name="Box" type="CSGBox3D" parent="Blockout/RightWall" unique_id=1541981230]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9, 0)
|
||||
size = Vector3(1, 18, 40)
|
||||
material = ExtResource("4_3ohxo")
|
||||
|
||||
[node name="Props" type="Node3D" parent="." unique_id=1024337945]
|
||||
|
||||
[node name="godot_plush V2" parent="Props" unique_id=1730647663 instance=ExtResource("13_ro4g0")]
|
||||
transform = Transform3D(-50, 0, 4.371139e-06, 0, 50, 0, -4.371139e-06, 0, -50, 0, 5.628097, 0)
|
||||
|
||||
[node name="godot_plush_01" parent="Props/godot_plush V2" index="0" unique_id=391290764]
|
||||
visible = false
|
||||
|
||||
[node name="godot_plush_sitted" parent="Props/godot_plush V2" index="1" unique_id=703787110]
|
||||
visible = false
|
||||
|
||||
[node name="godot_plush_02" parent="Props/godot_plush V2" index="2" unique_id=688355995]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0025618896, 0)
|
||||
|
||||
[node name="SM_PaperPile_03_2" parent="Props" unique_id=1345844095 instance=ExtResource("5_m5411")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.718074, 1.0000002, 0.91673136)
|
||||
|
||||
[node name="SM_PaperPile_03_1" parent="Props" unique_id=1405386528 instance=ExtResource("6_8s83o")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15694028, 1.0000007, 0.6348417)
|
||||
|
||||
[node name="SM_PaperPile_03" parent="Props" unique_id=1152191568 instance=ExtResource("7_45xuj")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.9146078, 1.0000002, 2.7609625)
|
||||
|
||||
[node name="SM_CardboardFileBox_02_closed" parent="Props" unique_id=1652579900 instance=ExtResource("8_hci5i")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.817931, 1.0000015, 1.2458999)
|
||||
|
||||
[node name="SM_CardboardFileBox_02_open_01" parent="Props" unique_id=893917537 instance=ExtResource("9_hx1l4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.503678, 1.0000011, 2.1690526)
|
||||
|
||||
[node name="SM_CardboardFileBox_01_closed" parent="Props" unique_id=1230475848 instance=ExtResource("10_mgf24")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.4848406, 1.0000011, 1.309094)
|
||||
|
||||
[node name="SM_Closet_b1" parent="Props" unique_id=640104480 instance=ExtResource("11_t7ac6")]
|
||||
transform = Transform3D(0.9396926, 0, -0.34202012, 0, 1, 0, 0.34202012, 0, 0.9396926, 1.4325718, 1.0000005, -5.5614686)
|
||||
|
||||
[node name="SM_Chair_01" parent="Props" unique_id=438450022 instance=ExtResource("12_ndl0p")]
|
||||
transform = Transform3D(0.9396926, 0, -0.34202012, 0, 1, 0, 0.34202012, 0, 0.9396926, 2.9192212, 1.0028769, 3.78964)
|
||||
|
||||
[node name="SM_Chair_02" parent="Props" unique_id=1717374755 instance=ExtResource("12_ndl0p")]
|
||||
transform = Transform3D(1, -1.4950173e-08, -6.7055225e-08, -7.450581e-09, -4.1075268e-08, 0.99999994, -1.4950176e-08, -1.0000001, -4.107527e-08, 3.919, 1.35, 1.79)
|
||||
|
||||
[node name="_TMP" type="Node3D" parent="Props" unique_id=1432658199]
|
||||
|
||||
[node name="SM_PaperPile_01" parent="Props/_TMP" unique_id=52655774 instance=ExtResource("14_hx1l4")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.050662, 1.0000005, 1.0565416)
|
||||
|
||||
[node name="SM_PaperFilePen_01" parent="Props/_TMP" unique_id=745932442 instance=ExtResource("15_mgf24")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.1075568, 1.0017344, 0.21156907)
|
||||
|
||||
[node name="SM_PaperPile_02" parent="Props/_TMP" unique_id=1667321464 instance=ExtResource("16_t7ac6")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.8432698, 1.0000005, 0.67616963)
|
||||
|
||||
[node name="SM_RadioTelephone_01" parent="Props/_TMP" unique_id=107255587 instance=ExtResource("17_ndl0p")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.0042534, 1.0000005, -1.0021183)
|
||||
|
||||
[node name="SM_RadioTelephone_02" parent="Props/_TMP" unique_id=1337907733 instance=ExtResource("17_ndl0p")]
|
||||
transform = Transform3D(0.76604444, 0, 0.6427876, 0, 1, 0, -0.6427876, 0, 0.76604444, 1.596, 2.55, -5.102)
|
||||
|
||||
[node name="SM_ComicBooks_02" parent="Props/_TMP" unique_id=1014914008 instance=ExtResource("18_id567")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3010767, 1.0000005, -1.1365142)
|
||||
|
||||
[node name="SM_ComicBooks_01" parent="Props/_TMP" unique_id=827009623 instance=ExtResource("19_ngprr")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2338903, 1.0000005, -1.7645805)
|
||||
|
||||
[node name="SM_CerealBox_01" parent="Props/_TMP" unique_id=1966092815 instance=ExtResource("20_dcj1l")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.1755064, 1.0000006, -2.2027547)
|
||||
|
||||
[editable path="Props/godot_plush V2"]
|
||||
@ -1,19 +1,15 @@
|
||||
extends Node3D
|
||||
|
||||
@export var world: World
|
||||
@export var doors_animation_player: AnimationPlayer
|
||||
|
||||
var world: World
|
||||
|
||||
@onready var power_box_fuse: PowerBox = $PowerBoxFuse
|
||||
@onready var fuse_pickup: FusePickup = $FusePickup
|
||||
@onready var power_box_animation: CutsceneAnimationPlayer = $Cutscene/PowerBoxAnimation
|
||||
@onready var world_proxy: WorldProxy = $WorldProxy
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
world = await world_proxy.wait_for_world()
|
||||
|
||||
power_box_fuse.power_restored.connect(_on_power_restored)
|
||||
power_box_fuse.power_revoked.connect(_on_power_revoked)
|
||||
|
||||
|
||||
@ -1,68 +0,0 @@
|
||||
[gd_scene format=3 uid="uid://bqx6t4agunl7h"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://ct2u3f03lwsnr" path="res://src/ui/hud/hud_subtitle.tscn" id="1_koq4j"]
|
||||
[ext_resource type="Script" uid="uid://blxophwhpim0l" path="res://src/core/dialog/dialog_player.gd" id="2_4qqmy"]
|
||||
[ext_resource type="Script" uid="uid://crem3vn3eyf38" path="res://src/core/dialog/dialog_entry.gd" id="3_j86jr"]
|
||||
[ext_resource type="Resource" uid="uid://ju7es8xi1gpc" path="res://_development/ayuroo/voicelines/conductor/test_dialog.tres" id="4_pnxnv"]
|
||||
|
||||
[sub_resource type="GDScript" id="GDScript_j86jr"]
|
||||
script/source = "extends Control
|
||||
|
||||
@export var dialog_key: StringName
|
||||
@export_range(0.0, 1.0, 0.001, \"or_greater\", \"suffix:s\") var from_position: float = 0.0
|
||||
@export_range(0.0, 1.0, 0.001, \"or_greater\", \"suffix:s\") var inital_delay: float = 0.5
|
||||
|
||||
@onready var dialog_player: DialogPlayer = $DialogPlayer
|
||||
@onready var replay_button: Button = %ReplayButton
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
replay_button.pressed.connect(_on_replay_button_pressed)
|
||||
|
||||
await get_tree().create_timer(inital_delay).timeout
|
||||
_on_replay_button_pressed()
|
||||
|
||||
|
||||
func _on_replay_button_pressed() -> void:
|
||||
dialog_player.play(dialog_key, from_position)
|
||||
"
|
||||
|
||||
[node name="DialogTestScene" type="Control" unique_id=1728136061]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = SubResource("GDScript_j86jr")
|
||||
dialog_key = &"listen_here"
|
||||
|
||||
[node name="HudSubtitle" parent="." unique_id=123148710 instance=ExtResource("1_koq4j")]
|
||||
layout_mode = 1
|
||||
|
||||
[node name="ReplayButton" type="Button" parent="." unique_id=283603298]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -30.0
|
||||
offset_top = -15.5
|
||||
offset_right = 30.0
|
||||
offset_bottom = 15.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
text = "Replay"
|
||||
|
||||
[node name="DialogPlayer" type="Node" parent="." unique_id=928993916]
|
||||
script = ExtResource("2_4qqmy")
|
||||
audio_player = NodePath("AudioStreamPlayer")
|
||||
dialogs = Dictionary[StringName, ExtResource("3_j86jr")]({
|
||||
&"listen_here": ExtResource("4_pnxnv")
|
||||
})
|
||||
metadata/_custom_type_script = "uid://blxophwhpim0l"
|
||||
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="DialogPlayer" unique_id=1284459]
|
||||
Loading…
Reference in New Issue
Block a user