diff --git a/game/assets/action_hints/interact.tres b/game/assets/action_hints/interact.tres new file mode 100644 index 0000000..dbc4bbe --- /dev/null +++ b/game/assets/action_hints/interact.tres @@ -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" diff --git a/game/assets/dev/dark/dark_04.tres b/game/assets/dev/dark/dark_04.tres index 59c5594..1312d15 100644 --- a/game/assets/dev/dark/dark_04.tres +++ b/game/assets/dev/dark/dark_04.tres @@ -1,9 +1,9 @@ [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] -albedo_texture = ExtResource("1_l8w0p") +albedo_texture = ExtResource("1_ib6js") uv1_triplanar = true uv1_world_triplanar = true texture_filter = 5 diff --git a/game/assets/dev/dark/dark_05.tres b/game/assets/dev/dark/dark_05.tres index 9b24ccb..eb2c668 100644 --- a/game/assets/dev/dark/dark_05.tres +++ b/game/assets/dev/dark/dark_05.tres @@ -1,9 +1,9 @@ [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] -albedo_texture = ExtResource("1_c2346") +albedo_texture = ExtResource("1_p236r") uv1_triplanar = true uv1_world_triplanar = true texture_filter = 5 diff --git a/game/assets/dev/dark/texture_04.png.import b/game/assets/dev/dark/texture_04.png.import index 50effd2..a9e8ba6 100644 --- a/game/assets/dev/dark/texture_04.png.import +++ b/game/assets/dev/dark/texture_04.png.import @@ -3,19 +3,20 @@ importer="texture" type="CompressedTexture2D" uid="uid://wb1xv8sdexfr" -path="res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.ctex" +path.s3tc="res://.godot/imported/texture_04.png-ab0c8f7791533824774bd7c2ee0b712c.s3tc.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc"], +"vram_texture": true } [deps] 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] -compress/mode=0 +compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 compress/uastc_level=0 @@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -37,4 +38,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=1 +detect_3d/compress_to=0 diff --git a/game/assets/models/plush/godot_plush_v2.glb.import b/game/assets/models/plush/godot_plush_v2.glb.import index dac815b..0654aee 100644 --- a/game/assets/models/plush/godot_plush_v2.glb.import +++ b/game/assets/models/plush/godot_plush_v2.glb.import @@ -44,6 +44,26 @@ _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 diff --git a/game/assets/models/plush/godot_plush_v2_Cube_001.res b/game/assets/models/plush/godot_plush_v2_Cube_001.res new file mode 100644 index 0000000..3a7c938 Binary files /dev/null and b/game/assets/models/plush/godot_plush_v2_Cube_001.res differ diff --git a/game/assets/models/plush/godot_plush_v2_Cube_002.res b/game/assets/models/plush/godot_plush_v2_Cube_002.res new file mode 100644 index 0000000..35e22e1 Binary files /dev/null and b/game/assets/models/plush/godot_plush_v2_Cube_002.res differ diff --git a/game/localization/localization.csv b/game/localization/localization.csv index 8ea3133..459d470 100644 --- a/game/localization/localization.csv +++ b/game/localization/localization.csv @@ -2,6 +2,7 @@ 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 diff --git a/game/localization/localization.de.translation b/game/localization/localization.de.translation index cd577d0..68dace7 100644 Binary files a/game/localization/localization.de.translation and b/game/localization/localization.de.translation differ diff --git a/game/localization/localization.en.translation b/game/localization/localization.en.translation index d95cc46..e660622 100644 Binary files a/game/localization/localization.en.translation and b/game/localization/localization.en.translation differ diff --git a/game/localization/localization.es.translation b/game/localization/localization.es.translation index 21e6988..e7d47b6 100644 Binary files a/game/localization/localization.es.translation and b/game/localization/localization.es.translation differ diff --git a/game/localization/localization.ja.translation b/game/localization/localization.ja.translation index 761a676..cd45e8a 100644 Binary files a/game/localization/localization.ja.translation and b/game/localization/localization.ja.translation differ diff --git a/game/project.godot b/game/project.godot index 3117306..5d8c826 100644 --- a/game/project.godot +++ b/game/project.godot @@ -50,6 +50,10 @@ folder_colors={ "res://tools/": "gray" } +[filesystem] + +import/blender/enabled=false + [importer_defaults] scene={ diff --git a/game/src/core/world/level/level_streamer.gd b/game/src/core/world/level/level_streamer.gd index bc1317e..54c4c2f 100644 --- a/game/src/core/world/level/level_streamer.gd +++ b/game/src/core/world/level/level_streamer.gd @@ -4,6 +4,9 @@ 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 @@ -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_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 area going down the child chain, - #we want the aabb of each subsequent node to be on the same axis as the parent. + # We are 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: @@ -97,11 +101,18 @@ 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: @@ -111,7 +122,7 @@ func _process(delta: float) -> void: if not is_instance_valid(camera): return - if is_position_in_bounds(camera.global_position): + if enabled and 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) @@ -171,6 +182,10 @@ 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 @@ -186,10 +201,10 @@ func is_position_in_bounds(point: Vector3) -> bool: func _draw_debug() -> void: - for aabb: AABB in load_aabbs: - DebugDraw3D.draw_aabb(get_aabb_with_correct_position(aabb, self), Color.ORANGE) + for aabb: AABB in _precomputed_aabbs: + 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: diff --git a/game/src/core/world/world.gd b/game/src/core/world/world.gd index b79b137..ff7d2fb 100644 --- a/game/src/core/world/world.gd +++ b/game/src/core/world/world.gd @@ -45,7 +45,11 @@ func initialize_level_streamers() -> 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): world_proxy.set_world(self) diff --git a/game/src/game.gd b/game/src/game.gd index 1ce1234..49ce5b7 100644 --- a/game/src/game.gd +++ b/game/src/game.gd @@ -1,3 +1,4 @@ +@tool class_name Game extends Node @@ -17,8 +18,8 @@ var current_save_data: SaveData = INITIAL_SAVE_DATA.duplicate() var world: World 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: @@ -31,7 +32,8 @@ static func debug_draw(draw_shape: String, args: Array) -> 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: @@ -54,15 +56,6 @@ 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 diff --git a/game/src/game.tscn b/game/src/game.tscn index b6d4579..32b5712 100644 --- a/game/src/game.tscn +++ b/game/src/game.tscn @@ -8,5 +8,7 @@ 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 diff --git a/game/src/gameplay/systems/flashlight/flashlight_battery.gd b/game/src/gameplay/systems/flashlight/flashlight_battery.gd index d47910b..10673f6 100644 --- a/game/src/gameplay/systems/flashlight/flashlight_battery.gd +++ b/game/src/gameplay/systems/flashlight/flashlight_battery.gd @@ -7,8 +7,9 @@ extends Node3D var world: World -@onready var world_proxy: WorldProxy = $WorldProxy -@onready var pickup_interaction: PickupInteraction = $PickupInteraction +@onready var world_proxy: WorldProxy = %WorldProxy +@onready var pickup_interaction: PickupInteraction = %PickupInteraction +@onready var interaction_area: InteractionArea = %InteractionArea func _ready() -> void: diff --git a/game/src/ui/main_menu/main_menu.gd b/game/src/ui/main_menu/main_menu.gd index 9a1c8d6..e13a647 100644 --- a/game/src/ui/main_menu/main_menu.gd +++ b/game/src/ui/main_menu/main_menu.gd @@ -4,15 +4,50 @@ 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) @@ -24,7 +59,7 @@ func _ready() -> void: func has_save() -> bool: var config := ConfigFile.new() - config.load("user://settings.ini") + config.load(USER_SETTINGS_PATH) return config.has_section_key("game", "last_slot") @@ -33,36 +68,14 @@ func populate_save_entries() -> void: child.queue_free() 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) 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.ini") + config.load(USER_SETTINGS_PATH) var slot: int = config.get_value("game", "last_slot", 0) var path: String = get_save_path(slot) @@ -74,7 +87,7 @@ func _on_continue_pressed() -> void: return config.set_value("game", "last_slot", slot) - config.save("user://settings.ini") + config.save(USER_SETTINGS_PATH) var save_data: SaveData = load(path) 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) var config := ConfigFile.new() - var path: String = "user://settings.ini" - config.load(path) + config.load(USER_SETTINGS_PATH) config.set_value("game", "last_slot", slot_index) - config.save(path) + config.save(USER_SETTINGS_PATH) func _on_quit_pressed() -> void: @@ -103,9 +115,9 @@ func _on_quit_pressed() -> void: func _on_save_entry_pressed(save_slot: int) -> void: var config := ConfigFile.new() - config.load("user://settings.ini") + config.load(USER_SETTINGS_PATH) 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) diff --git a/game/src/ui/main_menu/main_menu.tscn b/game/src/ui/main_menu/main_menu.tscn index 6251e08..217cb5c 100644 --- a/game/src/ui/main_menu/main_menu.tscn +++ b/game/src/ui/main_menu/main_menu.tscn @@ -1,6 +1,22 @@ [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 @@ -57,6 +73,7 @@ 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 @@ -93,3 +110,19 @@ 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") diff --git a/game/src/worlds/exposition/exposition.tscn b/game/src/worlds/exposition/exposition.tscn index 8d52b98..373cf0c 100644 --- a/game/src/worlds/exposition/exposition.tscn +++ b/game/src/worlds/exposition/exposition.tscn @@ -1,14 +1,12 @@ [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="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="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"] @@ -16,8 +14,9 @@ [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_gdn1s"] +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_glp4g"] 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) @@ -25,7 +24,7 @@ sun_angle_max = 2.93 sun_curve = 2.2392747 [sub_resource type="Sky" id="Sky_dy1qy"] -sky_material = SubResource("ProceduralSkyMaterial_gdn1s") +sky_material = SubResource("ProceduralSkyMaterial_glp4g") [sub_resource type="Environment" id="Environment_dy1qy"] background_mode = 2 @@ -33,6 +32,10 @@ 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") @@ -97,16 +100,12 @@ tracks/1/keys = { "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 = { &"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" @@ -285,26 +284,10 @@ _data = { [sub_resource type="BoxShape3D" id="BoxShape3D_dy1qy"] 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] -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")] +[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") @@ -312,256 +295,95 @@ flashlight_manager = NodePath("FlashlightManager") script = ExtResource("2_whdyi") 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) use_collision = true -[node name="AnimationPlayer" type="AnimationPlayer" parent="EntranceHall/Doors" index="0" unique_id=906939002] -libraries/ = SubResource("AnimationLibrary_gdn1s") +[node name="AnimationPlayer" type="AnimationPlayer" parent="Doors" index="0" unique_id=661035765] +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) -[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) visible = false size = Vector3(5.5, 14, 1) 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) size = Vector3(5.5, 11.25, 1) 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) size = Vector3(2.75, 14, 1) 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) radius = 2.75 height = 1.0 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) -[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) visible = false size = Vector3(5.5, 14, 1) 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) size = Vector3(5.5, 11.25, 1) 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) size = Vector3(2.75, 14, 1) 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) radius = 2.75 height = 1.0 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) size = Vector3(11, 1, 1) material = ExtResource("3_en67y") -[node name="Blockout" type="CSGCombiner3D" parent="EntranceHall" index="1" unique_id=2092187673] -use_collision = true +[node name="LevelStreamers" type="Node3D" parent="." index="6" unique_id=460675243] -[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="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="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="SecondEntranceHall" type="Node3D" parent="." index="7" unique_id=282414961] [node name="Blockout" type="CSGCombiner3D" parent="SecondEntranceHall" index="0" unique_id=1024650246] use_collision = true @@ -595,18 +417,6 @@ 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")] @@ -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") 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) script = ExtResource("10_btgc1") -world = NodePath("../..") -doors_animation_player = NodePath("../../EntranceHall/Doors/AnimationPlayer") +doors_animation_player = NodePath("../../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] 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 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) -[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) 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 world = NodePath("..") -[editable path="godot_plush V2"] diff --git a/game/src/worlds/exposition/levels/entrance_hall.tscn b/game/src/worlds/exposition/levels/entrance_hall.tscn new file mode 100644 index 0000000..46e04d7 --- /dev/null +++ b/game/src/worlds/exposition/levels/entrance_hall.tscn @@ -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"] diff --git a/game/src/worlds/exposition/levels/entrance_hall/entrance_hall_power_box.gd b/game/src/worlds/exposition/levels/entrance_hall/entrance_hall_power_box.gd index b9c34ad..b6a562c 100644 --- a/game/src/worlds/exposition/levels/entrance_hall/entrance_hall_power_box.gd +++ b/game/src/worlds/exposition/levels/entrance_hall/entrance_hall_power_box.gd @@ -1,15 +1,19 @@ 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)