LevelStreamer improvements and WorldProxy changes

- LevelStreamer gizmo preview now updates when it's transform changes.
- Cleaned up main menu.
- Seperated entrance hall section into it's own scene (level).
This commit is contained in:
SchimmelSpreu83 2026-03-17 00:27:37 +01:00
parent ca427041e7
commit 2462174a02
23 changed files with 505 additions and 311 deletions

View File

@ -0,0 +1,10 @@
[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"

View File

@ -1,9 +1,9 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://biu40ot7f55no"] [gd_resource type="StandardMaterial3D" format=3 uid="uid://biu40ot7f55no"]
[ext_resource type="Texture2D" uid="uid://djftxgnhedhk2" path="res://assets/dev/dark/texture_05.png" id="1_l8w0p"] [ext_resource type="Texture2D" uid="uid://wb1xv8sdexfr" path="res://assets/dev/dark/texture_04.png" id="1_ib6js"]
[resource] [resource]
albedo_texture = ExtResource("1_l8w0p") albedo_texture = ExtResource("1_ib6js")
uv1_triplanar = true uv1_triplanar = true
uv1_world_triplanar = true uv1_world_triplanar = true
texture_filter = 5 texture_filter = 5

View File

@ -1,9 +1,9 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://dto0mke6wp060"] [gd_resource type="StandardMaterial3D" format=3 uid="uid://dto0mke6wp060"]
[ext_resource type="Texture2D" uid="uid://d4m1r5bjq4lbe" path="res://assets/dev/dark/texture_01.png" id="1_c2346"] [ext_resource type="Texture2D" uid="uid://djftxgnhedhk2" path="res://assets/dev/dark/texture_05.png" id="1_p236r"]
[resource] [resource]
albedo_texture = ExtResource("1_c2346") albedo_texture = ExtResource("1_p236r")
uv1_triplanar = true uv1_triplanar = true
uv1_world_triplanar = true uv1_world_triplanar = true
texture_filter = 5 texture_filter = 5

View File

@ -3,19 +3,20 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://wb1xv8sdexfr" uid="uid://wb1xv8sdexfr"
path="res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.ctex" path.s3tc="res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.s3tc.ctex"
metadata={ metadata={
"vram_texture": false "imported_formats": ["s3tc_bptc"],
"vram_texture": true
} }
[deps] [deps]
source_file="res://assets/dev/dark/texture_04.png" source_file="res://assets/dev/dark/texture_04.png"
dest_files=["res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.ctex"] dest_files=["res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.s3tc.ctex"]
[params] [params]
compress/mode=0 compress/mode=2
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0 compress/uastc_level=0
@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=true
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
@ -37,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=0

View File

@ -44,6 +44,26 @@ _subresources={
"use_external/fallback_path": "res://assets/models/plush/godot_plush.tres", "use_external/fallback_path": "res://assets/models/plush/godot_plush.tres",
"use_external/path": "uid://bp26kj1cs4p1s" "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 gltf/naming_version=2

Binary file not shown.

Binary file not shown.

View File

@ -2,6 +2,7 @@ KEYS,en,de,es,ja
# UI # UI
CONTINUE,Continue,Weiterspielen,Continue,Continue CONTINUE,Continue,Weiterspielen,Continue,Continue
LOAD,Load,Laden,Load,Load
NEW_GAME,New Game,Neues Spiel,New Game,New Game NEW_GAME,New Game,Neues Spiel,New Game,New Game
SETTINGS,Settings,Einstellungen,Settings,Settings SETTINGS,Settings,Einstellungen,Settings,Settings
QUIT,Quit,Beenden,Quit,Quit QUIT,Quit,Beenden,Quit,Quit

Can't render this file because it has a wrong number of fields in line 3.

View File

@ -50,6 +50,10 @@ folder_colors={
"res://tools/": "gray" "res://tools/": "gray"
} }
[filesystem]
import/blender/enabled=false
[importer_defaults] [importer_defaults]
scene={ scene={

View File

@ -4,6 +4,9 @@ extends Marker3D
signal loading_finished 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 threaded_loading: bool = true
@export var prevent_unloading: bool = false @export var prevent_unloading: bool = false
@export var unload_delay: float = 3.0 @export var unload_delay: float = 3.0
@ -38,14 +41,15 @@ var _unload_time_left: float = 0.0
var _precomputed_aabb: AABB # Big bounding box covering all [_precomputed_aabbs] for faster checking. var _precomputed_aabb: AABB # Big bounding box covering all [_precomputed_aabbs] for faster checking.
var _precomputed_aabbs: Array[AABB] var _precomputed_aabbs: Array[AABB]
var _previous_camera: Camera3D 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: static func get_node_aabb(node: Node3D = null, ignore_top_level: bool = true, bounds_transform := Transform3D()) -> AABB:
var aabb: AABB var aabb: AABB
var _transform: Transform3D var _transform: Transform3D
#We area going down the child chain, # 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 want the aabb of each subsequent node to be on the same axis as the parent.
if bounds_transform.is_equal_approx(Transform3D()): if bounds_transform.is_equal_approx(Transform3D()):
_transform = node.global_transform _transform = node.global_transform
else: else:
@ -97,11 +101,18 @@ func _get_configuration_warnings() -> PackedStringArray:
func _ready() -> void: func _ready() -> void:
precompute_aabb() precompute_aabb()
_editor_previous_transform = global_transform
func _process(delta: float) -> void: func _process(delta: float) -> void:
if Engine.is_editor_hint(): if Engine.is_editor_hint():
_editor_process_gizmo() _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 return
if get_tree().debug_collisions_hint: if get_tree().debug_collisions_hint:
@ -111,7 +122,7 @@ func _process(delta: float) -> void:
if not is_instance_valid(camera): if not is_instance_valid(camera):
return return
if is_position_in_bounds(camera.global_position): if enabled and is_position_in_bounds(camera.global_position):
load_level() load_level()
elif not prevent_unloading and is_level_loaded(): elif not prevent_unloading and is_level_loaded():
_unload_time_left = maxf(_unload_time_left - delta, 0.0) _unload_time_left = maxf(_unload_time_left - delta, 0.0)
@ -171,6 +182,10 @@ func get_camera() -> Camera3D:
return camera return camera
func set_enabled(value: bool) -> void:
enabled = value
func is_position_in_bounds(point: Vector3) -> bool: func is_position_in_bounds(point: Vector3) -> bool:
if not _precomputed_aabb.has_point(point): if not _precomputed_aabb.has_point(point):
return false return false
@ -186,10 +201,10 @@ func is_position_in_bounds(point: Vector3) -> bool:
func _draw_debug() -> void: func _draw_debug() -> void:
for aabb: AABB in load_aabbs: for aabb: AABB in _precomputed_aabbs:
DebugDraw3D.draw_aabb(get_aabb_with_correct_position(aabb, self), Color.ORANGE) Game.debug_draw("aabb", [aabb, Color.LAWN_GREEN])
DebugDraw3D.draw_aabb(get_aabb_with_correct_position(_precomputed_aabb, self), Color.ORANGE_RED) Game.debug_draw("aabb", [_precomputed_aabb, Color.ORANGE_RED])
func _editor_edit_level() -> void: func _editor_edit_level() -> void:

View File

@ -45,7 +45,11 @@ func initialize_level_streamers() -> void:
func initialize_world_proxies() -> void: func initialize_world_proxies() -> void:
for world_proxy: WorldProxy in WorldProxy.world_proxies: # 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:
if is_ancestor_of(world_proxy): if is_ancestor_of(world_proxy):
world_proxy.set_world(self) world_proxy.set_world(self)

View File

@ -1,3 +1,4 @@
@tool
class_name Game class_name Game
extends Node extends Node
@ -17,8 +18,8 @@ var current_save_data: SaveData = INITIAL_SAVE_DATA.duplicate()
var world: World var world: World
var main_menu: MainMenu var main_menu: MainMenu
@onready var loading_screen: LoadingScreen = $LoadingScreen @onready var world_container: Node = %WorldContainer
@onready var world_container: Node = $WorldContainer @onready var loading_screen: LoadingScreen = %LoadingScreen
static func _static_init() -> void: static func _static_init() -> void:
@ -31,7 +32,8 @@ static func debug_draw(draw_shape: String, args: Array) -> void:
func _ready() -> void: func _ready() -> void:
load_main_menu() if not Engine.is_editor_hint():
load_main_menu()
func load_game(save_data: SaveData, save_slot: int) -> void: func load_game(save_data: SaveData, save_slot: int) -> void:
@ -54,15 +56,6 @@ func save_game() -> Error:
return ResourceSaver.save(current_save_data, SAVE_PATH % [save_slot, file_name]) 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: func load_world(world_path: String, save_previous: bool = true, load_from_save: bool = true) -> Error:
if not ResourceLoader.exists(world_path, "PackedScene"): if not ResourceLoader.exists(world_path, "PackedScene"):
return ERR_FILE_NOT_FOUND return ERR_FILE_NOT_FOUND

View File

@ -8,5 +8,7 @@ script = ExtResource("1_7uq6d")
metadata/_custom_type_script = "uid://cl1u038dbrou2" metadata/_custom_type_script = "uid://cl1u038dbrou2"
[node name="WorldContainer" type="Node" parent="." unique_id=1835125942] [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")] [node name="LoadingScreen" parent="." unique_id=1509462056 instance=ExtResource("2_3msxb")]
unique_name_in_owner = true

View File

@ -7,8 +7,9 @@ extends Node3D
var world: World var world: World
@onready var world_proxy: WorldProxy = $WorldProxy @onready var world_proxy: WorldProxy = %WorldProxy
@onready var pickup_interaction: PickupInteraction = $PickupInteraction @onready var pickup_interaction: PickupInteraction = %PickupInteraction
@onready var interaction_area: InteractionArea = %InteractionArea
func _ready() -> void: func _ready() -> void:

View File

@ -4,15 +4,50 @@ extends Control
signal load_game_request(save_data: SaveData, slot_index: int) signal load_game_request(save_data: SaveData, slot_index: int)
signal quit_request 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 continue_button: Button = %ContinueButton
@onready var load_button: Button = %LoadButton @onready var load_button: Button = %LoadButton
@onready var new_game_button: Button = %NewGameButton @onready var new_game_button: Button = %NewGameButton
@onready var quit_button: Button = %QuitButton @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 @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: func _ready() -> void:
continue_button.pressed.connect(_on_continue_pressed) continue_button.pressed.connect(_on_continue_pressed)
load_button.pressed.connect(_on_load_pressed) load_button.pressed.connect(_on_load_pressed)
@ -24,7 +59,7 @@ func _ready() -> void:
func has_save() -> bool: func has_save() -> bool:
var config := ConfigFile.new() var config := ConfigFile.new()
config.load("user://settings.ini") config.load(USER_SETTINGS_PATH)
return config.has_section_key("game", "last_slot") return config.has_section_key("game", "last_slot")
@ -33,36 +68,14 @@ func populate_save_entries() -> void:
child.queue_free() child.queue_free()
for save_slot: int in get_save_slots(): for save_slot: int in get_save_slots():
var save_path: String = "user://%s/save_data.tres" % save_slot var save_path: String = get_save_path(save_slot)
var button := SaveEntryButton.construct_save_entry_button(saves_container, save_path, 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)) 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: func _on_continue_pressed() -> void:
var config := ConfigFile.new() var config := ConfigFile.new()
config.load("user://settings.ini") config.load(USER_SETTINGS_PATH)
var slot: int = config.get_value("game", "last_slot", 0) var slot: int = config.get_value("game", "last_slot", 0)
var path: String = get_save_path(slot) var path: String = get_save_path(slot)
@ -74,7 +87,7 @@ func _on_continue_pressed() -> void:
return return
config.set_value("game", "last_slot", slot) config.set_value("game", "last_slot", slot)
config.save("user://settings.ini") config.save(USER_SETTINGS_PATH)
var save_data: SaveData = load(path) var save_data: SaveData = load(path)
load_game_request.emit(save_data, slot) load_game_request.emit(save_data, slot)
@ -91,10 +104,9 @@ func _on_new_game_pressed() -> void:
load_game_request.emit(save_data, slot_index) load_game_request.emit(save_data, slot_index)
var config := ConfigFile.new() var config := ConfigFile.new()
var path: String = "user://settings.ini" config.load(USER_SETTINGS_PATH)
config.load(path)
config.set_value("game", "last_slot", slot_index) config.set_value("game", "last_slot", slot_index)
config.save(path) config.save(USER_SETTINGS_PATH)
func _on_quit_pressed() -> void: func _on_quit_pressed() -> void:
@ -103,9 +115,9 @@ func _on_quit_pressed() -> void:
func _on_save_entry_pressed(save_slot: int) -> void: func _on_save_entry_pressed(save_slot: int) -> void:
var config := ConfigFile.new() var config := ConfigFile.new()
config.load("user://settings.ini") config.load(USER_SETTINGS_PATH)
config.set_value("game", "last_slot", save_slot) config.set_value("game", "last_slot", save_slot)
config.save("user://settings.ini") config.save(USER_SETTINGS_PATH)
var save_path: String = get_save_path(save_slot) var save_path: String = get_save_path(save_slot)

View File

@ -1,6 +1,22 @@
[gd_scene format=3 uid="uid://7v62dybcabgw"] [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="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] [node name="MainMenu" type="Control" unique_id=481021069]
layout_mode = 3 layout_mode = 3
@ -57,6 +73,7 @@ layout_mode = 2
text = "QUIT" text = "QUIT"
[node name="SavesScrollContainer" type="ScrollContainer" parent="." unique_id=1084479536] [node name="SavesScrollContainer" type="ScrollContainer" parent="." unique_id=1084479536]
unique_name_in_owner = true
visible = false visible = false
layout_mode = 1 layout_mode = 1
anchors_preset = -1 anchors_preset = -1
@ -93,3 +110,19 @@ text = "Save 1"
[node name="Button4" type="Button" parent="SavesScrollContainer/SavesContainer" unique_id=366833041] [node name="Button4" type="Button" parent="SavesScrollContainer/SavesContainer" unique_id=366833041]
layout_mode = 2 layout_mode = 2
text = "Save 1" 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")

View File

@ -1,14 +1,12 @@
[gd_scene format=3 uid="uid://cnfgc6k86hp1q"] [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="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="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="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://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="Material" uid="uid://d02jll28bgkap" path="res://assets/dev/orange/orange_05.tres" id="3_gdn1s"]
[ext_resource type="Material" uid="uid://bahys2ntbh2ap" path="res://assets/dev/orange/orange_01.tres" id="3_wtnit"] [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://biu40ot7f55no" path="res://assets/dev/dark/dark_04.tres" id="4_8xmty"] [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="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="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"] [ext_resource type="PackedScene" uid="uid://c2wxc6rij53vs" path="res://src/gameplay/systems/flashlight/flashlight_trigger.tscn" id="10_dy1qy"]
@ -16,8 +14,9 @@
[ext_resource type="Script" uid="uid://y1nxrfv31pke" path="res://tools/cutscene_animation_player.gd" id="11_map4s"] [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://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="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_gdn1s"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_glp4g"]
sky_top_color = Color(0.055987924, 0.081590004, 0.17344469, 1) sky_top_color = Color(0.055987924, 0.081590004, 0.17344469, 1)
sky_horizon_color = Color(0.07963555, 0.093164064, 0.14665467, 1) sky_horizon_color = Color(0.07963555, 0.093164064, 0.14665467, 1)
ground_horizon_color = Color(0.07963555, 0.093164064, 0.14665467, 1) ground_horizon_color = Color(0.07963555, 0.093164064, 0.14665467, 1)
@ -25,7 +24,7 @@ sun_angle_max = 2.93
sun_curve = 2.2392747 sun_curve = 2.2392747
[sub_resource type="Sky" id="Sky_dy1qy"] [sub_resource type="Sky" id="Sky_dy1qy"]
sky_material = SubResource("ProceduralSkyMaterial_gdn1s") sky_material = SubResource("ProceduralSkyMaterial_glp4g")
[sub_resource type="Environment" id="Environment_dy1qy"] [sub_resource type="Environment" id="Environment_dy1qy"]
background_mode = 2 background_mode = 2
@ -33,6 +32,10 @@ sky = SubResource("Sky_dy1qy")
tonemap_mode = 2 tonemap_mode = 2
glow_enabled = true 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"] [sub_resource type="Sky" id="Sky_wb8ak"]
sky_material = SubResource("ProceduralSkyMaterial_gdn1s") sky_material = SubResource("ProceduralSkyMaterial_gdn1s")
@ -97,16 +100,12 @@ tracks/1/keys = {
"values": [Vector3(0, 0, 0), Vector3(0, -1.8325957, 0)] "values": [Vector3(0, 0, 0), Vector3(0, -1.8325957, 0)]
} }
[sub_resource type="AnimationLibrary" id="AnimationLibrary_gdn1s"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_yht7d"]
_data = { _data = {
&"RESET": SubResource("Animation_gdn1s"), &"RESET": SubResource("Animation_gdn1s"),
&"open": SubResource("Animation_8xmty") &"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"] [sub_resource type="Animation" id="Animation_map4s"]
length = 0.001 length = 0.001
tracks/0/type = "value" tracks/0/type = "value"
@ -285,26 +284,10 @@ _data = {
[sub_resource type="BoxShape3D" id="BoxShape3D_dy1qy"] [sub_resource type="BoxShape3D" id="BoxShape3D_dy1qy"]
size = Vector3(14.6, 3, 1) size = Vector3(14.6, 3, 1)
[node name="Exposition" unique_id=1613733883 instance=ExtResource("1_3iyfg")] [node name="Exposition" unique_id=1613733883 node_paths=PackedStringArray("level_streamers") instance=ExtResource("1_3iyfg")]
level_streamers = [NodePath("LevelStreamers/EntranceHall")]
[node name="NightEnvironment" type="WorldEnvironment" parent="." index="0" unique_id=1572071534] [node name="PlayerCharacter" parent="." index="0" unique_id=1678220543 node_paths=PackedStringArray("flashlight_manager")]
environment = SubResource("Environment_dy1qy")
[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="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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0000005, 17)
flashlight_manager = NodePath("FlashlightManager") flashlight_manager = NodePath("FlashlightManager")
@ -312,256 +295,95 @@ flashlight_manager = NodePath("FlashlightManager")
script = ExtResource("2_whdyi") script = ExtResource("2_whdyi")
metadata/_custom_type_script = "uid://s1vhbwkyewdg" metadata/_custom_type_script = "uid://s1vhbwkyewdg"
[node name="EntranceHall" type="Node3D" parent="." index="5" unique_id=1518685491] [node name="NightEnvironment" type="WorldEnvironment" parent="." index="1" unique_id=1572071534]
environment = SubResource("Environment_dy1qy")
[node name="Doors" type="CSGCombiner3D" parent="EntranceHall" index="0" unique_id=2012245375] [node name="DayEnvironment" type="WorldEnvironment" parent="." index="2" unique_id=168205352]
environment = SubResource("Environment_whdyi")
[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="Doors" type="CSGCombiner3D" parent="." index="5" unique_id=623293063]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -19.6) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -19.6)
use_collision = true use_collision = true
[node name="AnimationPlayer" type="AnimationPlayer" parent="EntranceHall/Doors" index="0" unique_id=906939002] [node name="AnimationPlayer" type="AnimationPlayer" parent="Doors" index="0" unique_id=661035765]
libraries/ = SubResource("AnimationLibrary_gdn1s") libraries/ = SubResource("AnimationLibrary_yht7d")
[node name="DoorLeft" type="CSGCombiner3D" parent="EntranceHall/Doors" index="1" unique_id=1094260622] [node name="DoorLeft" type="CSGCombiner3D" parent="Doors" index="1" unique_id=952971802]
transform = Transform3D(0.9999997, 0, 0, 0, 1, 0, 0, 0, 0.9999997, -5.2, 0, 0.10000038) transform = Transform3D(0.9999997, 0, 0, 0, 1, 0, 0, 0, 0.9999997, -5.2, 0, 0.10000038)
[node name="Box" type="CSGBox3D" parent="EntranceHall/Doors/DoorLeft" index="0" unique_id=1833029438] [node name="Box" type="CSGBox3D" parent="Doors/DoorLeft" index="0" unique_id=1212613004]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.45, 7, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.45, 7, 0)
visible = false visible = false
size = Vector3(5.5, 14, 1) size = Vector3(5.5, 14, 1)
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="Box3" type="CSGBox3D" parent="EntranceHall/Doors/DoorLeft" index="1" unique_id=1258502275] [node name="Box3" type="CSGBox3D" parent="Doors/DoorLeft" index="1" unique_id=788913396]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.45, 5.625, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.45, 5.625, 0)
size = Vector3(5.5, 11.25, 1) size = Vector3(5.5, 11.25, 1)
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="Box4" type="CSGBox3D" parent="EntranceHall/Doors/DoorLeft" index="2" unique_id=1346859939] [node name="Box4" type="CSGBox3D" parent="Doors/DoorLeft" index="2" unique_id=1245695811]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.825, 7, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.825, 7, 0)
size = Vector3(2.75, 14, 1) size = Vector3(2.75, 14, 1)
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="Box2" type="CSGCylinder3D" parent="EntranceHall/Doors/DoorLeft" index="3" unique_id=1015521100] [node name="Box2" type="CSGCylinder3D" parent="Doors/DoorLeft" index="3" unique_id=946557532]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 2.45, 11.25, 0) transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 2.45, 11.25, 0)
radius = 2.75 radius = 2.75
height = 1.0 height = 1.0
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="DoorRight" type="CSGCombiner3D" parent="EntranceHall/Doors" index="2" unique_id=275591387] [node name="DoorRight" type="CSGCombiner3D" parent="Doors" index="2" unique_id=215853960]
transform = Transform3D(0.9999997, 0, 0, 0, 1, 0, 0, 0, 0.9999997, 5.2, 0, 0.10000038) transform = Transform3D(0.9999997, 0, 0, 0, 1, 0, 0, 0, 0.9999997, 5.2, 0, 0.10000038)
[node name="Box" type="CSGBox3D" parent="EntranceHall/Doors/DoorRight" index="0" unique_id=404654783] [node name="Box" type="CSGBox3D" parent="Doors/DoorRight" index="0" unique_id=944987501]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -2.4625, 7, 0) transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -2.4625, 7, 0)
visible = false visible = false
size = Vector3(5.5, 14, 1) size = Vector3(5.5, 14, 1)
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="Box3" type="CSGBox3D" parent="EntranceHall/Doors/DoorRight" index="1" unique_id=1124114693] [node name="Box3" type="CSGBox3D" parent="Doors/DoorRight" index="1" unique_id=1942036079]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -2.4625, 5.625, 0) 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) size = Vector3(5.5, 11.25, 1)
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="Box4" type="CSGBox3D" parent="EntranceHall/Doors/DoorRight" index="2" unique_id=461171599] [node name="Box4" type="CSGBox3D" parent="Doors/DoorRight" index="2" unique_id=274266953]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, -3.8374999, 7, 0) 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) size = Vector3(2.75, 14, 1)
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="Box2" type="CSGCylinder3D" parent="EntranceHall/Doors/DoorRight" index="3" unique_id=1740694143] [node name="Box2" type="CSGCylinder3D" parent="Doors/DoorRight" index="3" unique_id=589341751]
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) 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 radius = 2.75
height = 1.0 height = 1.0
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="Floor" type="CSGBox3D" parent="EntranceHall/Doors" index="3" unique_id=872627719] [node name="Floor" type="CSGBox3D" parent="Doors" index="3" unique_id=359423735]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0.10000038) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0.10000038)
size = Vector3(11, 1, 1) size = Vector3(11, 1, 1)
material = ExtResource("3_en67y") material = ExtResource("3_en67y")
[node name="Blockout" type="CSGCombiner3D" parent="EntranceHall" index="1" unique_id=2092187673] [node name="LevelStreamers" type="Node3D" parent="." index="6" unique_id=460675243]
use_collision = true
[node name="Floor" type="CSGBox3D" parent="EntranceHall/Blockout" index="0" unique_id=106297379] [node name="EntranceHall" type="Marker3D" parent="LevelStreamers" index="0" unique_id=1730849561]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) script = ExtResource("3_maf5p")
size = Vector3(40, 1, 38) level_id = &"entrance_hall"
material = ExtResource("2_f04cf") 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="Ceiling" type="CSGBox3D" parent="EntranceHall/Blockout" index="1" unique_id=678154528] [node name="SecondEntranceHall" type="Node3D" parent="." index="7" unique_id=282414961]
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] [node name="Blockout" type="CSGCombiner3D" parent="SecondEntranceHall" index="0" unique_id=1024650246]
use_collision = true use_collision = true
@ -595,18 +417,6 @@ operation = 2
size = Vector3(17, 11, 5) size = Vector3(17, 11, 5)
material = ExtResource("4_8xmty") 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="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")] [node name="FlashlightBattery" parent="Objects" index="0" unique_id=1021450063 node_paths=PackedStringArray("manager") instance=ExtResource("9_n68sy")]
@ -635,13 +445,16 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.50000006, 2.0499978, 5.8)
manager = NodePath("../../PlayerCharacter/FlashlightManager") manager = NodePath("../../PlayerCharacter/FlashlightManager")
refill_amount = 0.5 refill_amount = 0.5
[node name="LogicCluster" type="Node3D" parent="Objects" index="6" unique_id=556526856 node_paths=PackedStringArray("world", "doors_animation_player")] [node name="LogicCluster" type="Node3D" parent="Objects" index="6" unique_id=556526856 node_paths=PackedStringArray("doors_animation_player")]
transform = Transform3D(1.0000001, 0, 0, 0, 1, 0, 0, 0, 1.0000001, 0, 0, 0) transform = Transform3D(1.0000001, 0, 0, 0, 1, 0, 0, 0, 1.0000001, 0, 0, 0)
script = ExtResource("10_btgc1") script = ExtResource("10_btgc1")
world = NodePath("../..") doors_animation_player = NodePath("../../Doors/AnimationPlayer")
doors_animation_player = NodePath("../../EntranceHall/Doors/AnimationPlayer")
[node name="Cutscene" type="Node3D" parent="Objects/LogicCluster" index="0" unique_id=970055626] [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="EndAlignment" type="Marker3D" parent="Objects/LogicCluster/Cutscene" index="0" unique_id=399304482] [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) transform = Transform3D(1.0000001, 0, 0, 0, 1, 0, 0, 0, 1.0000001, 0, 1, -5)
@ -663,10 +476,10 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, -5)
top_level = true top_level = true
fov = 65.0 fov = 65.0
[node name="PowerBoxFuse" parent="Objects/LogicCluster" index="1" unique_id=1951712625 instance=ExtResource("10_xp6ux")] [node name="PowerBoxFuse" parent="Objects/LogicCluster" index="2" 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) 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="2" unique_id=38269817 node_paths=PackedStringArray("power_box") instance=ExtResource("11_qm8ha")] [node name="FusePickup" parent="Objects/LogicCluster" index="3" 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) transform = Transform3D(0.9999998, 0, 0, 0, 1, 0, 0, 0, 0.9999998, -4.2999997, 2.0499978, -3.9999995)
power_box = NodePath("../PowerBoxFuse") power_box = NodePath("../PowerBoxFuse")
@ -701,4 +514,3 @@ transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -20.
visible = false visible = false
world = NodePath("..") world = NodePath("..")
[editable path="godot_plush V2"]

View File

@ -0,0 +1,282 @@
[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"]

View File

@ -1,15 +1,19 @@
extends Node3D extends Node3D
@export var world: World
@export var doors_animation_player: AnimationPlayer @export var doors_animation_player: AnimationPlayer
var world: World
@onready var power_box_fuse: PowerBox = $PowerBoxFuse @onready var power_box_fuse: PowerBox = $PowerBoxFuse
@onready var fuse_pickup: FusePickup = $FusePickup @onready var fuse_pickup: FusePickup = $FusePickup
@onready var power_box_animation: CutsceneAnimationPlayer = $Cutscene/PowerBoxAnimation @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. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
world = await world_proxy.wait_for_world()
power_box_fuse.power_restored.connect(_on_power_restored) power_box_fuse.power_restored.connect(_on_power_restored)
power_box_fuse.power_revoked.connect(_on_power_revoked) power_box_fuse.power_revoked.connect(_on_power_revoked)