Compare commits

..

No commits in common. "development" and "4.6.0-rc1" have entirely different histories.

209 changed files with 6991 additions and 3970 deletions

5
.gitignore vendored
View File

@ -8,10 +8,6 @@ export.cfg
export_credentials.cfg
*.tmp
# Mics Backup and temp files
*.blend1
*.md.backup
# Imported translations (automatically generated from CSV files)
*.translation
@ -40,7 +36,6 @@ mono_crash.*.json
AGENTS.md
CHANGELOG.md
ISSUES.md
.devcontainer/
**/.idea
**/.DS_Store

View File

@ -47,7 +47,6 @@ func _update_events():
# TODO: Find a cleaner way to cast these values
var tmp: Array = []
if Engine.is_editor_hint():
print("reading project settings")
tmp = ProjectSettings.get_setting("input/" + action)["events"]
else:
tmp = InputMap.action_get_events(action)

View File

@ -5,5 +5,5 @@ func _ready() -> void:
$MarkdownLabel.display_file("res://addons/markdownlabel/README.md")
$MarkdownLabel.task_checkbox_clicked.connect(
func(id: int, line: int, checked: bool, text: String) -> void:
print("%s task #%d on line %d: %s" % ["Checked" if checked else "Unchecked", id, line, text])
print_debug("%s task #%d on line %d: %s" % ["Checked" if checked else "Unchecked", id, line, text])
)

View File

@ -640,7 +640,7 @@ func _reset_escaped_chars(_text: String,code:=false) -> String:
func _debug(string: String) -> void:
if not _debug_mode:
return
print(string)
print_debug(string)
func _denotes_fenced_code_block(line: String, character: String) -> bool:
var stripped_line := line.strip_edges()

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dbwcsy5klf2o1"
path="res://.godot/imported/107215__keithpeter__birmingham-erdington-canal-transformer-3.wav-abc5cb917678fd9eb9a68b1f697f63cc.sample"
[deps]
source_file="res://base-environments/transition/audio/107215__keithpeter__birmingham-erdington-canal-transformer-3.wav"
dest_files=["res://.godot/imported/107215__keithpeter__birmingham-erdington-canal-transformer-3.wav-abc5cb917678fd9eb9a68b1f697f63cc.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://31dunmt6i7ck"
path="res://.godot/imported/328953__sandermotions__escalator-1.wav-13ca6f1515b00824916859f10801afb8.sample"
[deps]
source_file="res://base-environments/transition/audio/328953__sandermotions__escalator-1.wav"
dest_files=["res://.godot/imported/328953__sandermotions__escalator-1.wav-13ca6f1515b00824916859f10801afb8.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dxxhtgf3k8ueh"
path="res://.godot/imported/388049__jacekksiazek__fluorescent-lamp-with-broken-ignitor.wav-d0e93eab8a188d5d7663547820e28a04.sample"
[deps]
source_file="res://base-environments/transition/audio/388049__jacekksiazek__fluorescent-lamp-with-broken-ignitor.wav"
dest_files=["res://.godot/imported/388049__jacekksiazek__fluorescent-lamp-with-broken-ignitor.wav-d0e93eab8a188d5d7663547820e28a04.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://cwfr6sgcwg7sl"
path="res://.godot/imported/450918__kyles__metro-subway-montreal-verdun-station-arrive-and-leave-semidistant-from-bridge-over-tracks-overpass.ogg-12fe2c5a0e3d8b5a363ae7108e4bdca5.oggvorbisstr"
[deps]
source_file="res://base-environments/transition/audio/450918__kyles__metro-subway-montreal-verdun-station-arrive-and-leave-semidistant-from-bridge-over-tracks-overpass.ogg"
dest_files=["res://.godot/imported/450918__kyles__metro-subway-montreal-verdun-station-arrive-and-leave-semidistant-from-bridge-over-tracks-overpass.ogg-12fe2c5a0e3d8b5a363ae7108e4bdca5.oggvorbisstr"]
[params]
loop=false
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://ba7s5uqc4iu66"
path="res://.godot/imported/537769__janbezouska__factory-fluorescent-light-buzz.wav-895aa9e245e1ca30292a119cee78a69d.sample"
[deps]
source_file="res://base-environments/transition/audio/537769__janbezouska__factory-fluorescent-light-buzz.wav"
dest_files=["res://.godot/imported/537769__janbezouska__factory-fluorescent-light-buzz.wav-895aa9e245e1ca30292a119cee78a69d.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,19 +0,0 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://d4i1dsvl7tm5o"
path="res://.godot/imported/717561__trp__220401-fluorescent-light-buzz-high-pitched-videontg.mp3-d33503667b4af35637fb18c6ddbf4a5f.mp3str"
[deps]
source_file="res://base-environments/transition/audio/717561__trp__220401-fluorescent-light-buzz-high-pitched-videontg.mp3"
dest_files=["res://.godot/imported/717561__trp__220401-fluorescent-light-buzz-high-pitched-videontg.mp3-d33503667b4af35637fb18c6ddbf4a5f.mp3str"]
[params]
loop=true
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

File diff suppressed because one or more lines are too long

View File

@ -1,123 +0,0 @@
## A dolly tweens all contents to and from two destination points, and to its origin.
class_name Dolly
extends Node3D
@export var index : int = -1
@export var signage_group : String
@export_group("Motion")
@export_subgroup("Arrival")
@export var pre_arrival_time : float = 17.0 # hold train for this long (to sync with audio!)
@export var arrival_time : float = 15.0 # train takes this long to enter (shorter = faster)
@export var trans_arrival : Tween.TransitionType = Tween.TRANS_CIRC
@export var ease_arrival : Tween.EaseType = Tween.EASE_OUT
@export_subgroup("In Station")
@export var station_wait_time : float = 20.0
@export_subgroup("Departure")
@export var door_close_time : float = 1.0
@export var leave_time : float = 15.0 # train takes this long to leave the platform
@export var trans_departure : Tween.TransitionType = Tween.TRANS_QUAD
@export var ease_departure : Tween.EaseType = Tween.EASE_IN
@onready var origination : Node3D = $Origination
@onready var destination : Node3D = $Destination
@onready var subway : SubwayTrain = $Subway
@onready var subway_audio_main : AudioStreamPlayer3D = %SubwayTrainAudio
@onready var subway_audio_2 : AudioStreamPlayer3D = %SubwayTrainAudioIntense
var player_on_board : bool:
get: return %EntryDetect.overlaps_body(State.player)
var tween : Tween = null
## Player is about to arrive
signal train_approaching(track : Dolly)
## Player has fully arrived at station
signal train_arrived(track : Dolly)
## Player is departing in train
signal train_departing(track : Dolly)
## Player has fully left the station with train
signal train_left(track : Dolly)
func _ready() -> void:
reset()
func set_line(line: StringName):
subway.set_line(line)
## One arrival and departure
func cycle() -> void:
await arrive()
await leave()
func reset() -> void:
if tween: tween.kill()
subway.global_position = origination.global_position
func _seat_player() -> void:
prints("Player departs inside Train", self.name)
State.player.reparent(subway)
func _unseat_player() -> void:
prints("Player arrives on Train", self.name)
State.player.reparent(get_parent())
func arrive(endstation : bool = false) -> void:
subway_audio_main.play()
subway_audio_2.play()
await get_tree().create_timer(pre_arrival_time).timeout
if player_on_board:
train_approaching.emit(self)
if tween: tween.kill()
tween = create_tween().set_trans(trans_arrival).set_ease(ease_arrival)
tween.parallel().tween_property(subway, "global_position", self.global_position, arrival_time)
await tween.finished
subway.door_open = true
if player_on_board:
_unseat_player()
train_arrived.emit(self)
if endstation:
subway_audio_main.stop()
subway_audio_2.stop()
func leave() -> void:
await get_tree().create_timer(station_wait_time).timeout
subway.door_open = false
await get_tree().create_timer(door_close_time).timeout
if player_on_board:
_seat_player()
train_departing.emit(self)
if tween: tween.kill()
tween = create_tween().set_trans(trans_departure).set_ease(ease_departure)
tween.parallel().tween_property(subway, "global_position", destination.global_position, leave_time)
# Player is on board and will be leaving
await tween.finished
# Player was on board and has left the station
if player_on_board: train_left.emit(self)
reset() # Warp back / rewind train position

View File

@ -1 +0,0 @@
uid://dgfje4druu3sw

View File

@ -1,104 +0,0 @@
class_name Fahrplan extends Node3D
## easy graph: <station> : [Track1Train1 (next halt), Track1Train2], [Track2Train1(next halt), ...]
## CAVEAT: These must be direct children of the fahrplan!
@onready var fahrplan : Dictionary[Station, Array] = {
$hirschfeld: [["u2", $uni_mensa, "u1", $parity_square],[]],
$uni_mensa : [["u2", $uni_main],[]],
$uni_main: [["u2", $ministry],["u8", $rosenthal, "u2", $uni_mensa, "u1", $saint_exupery]],
$parity_square : [["u4", $saint_exupery, "u1", $saint_exupery], []],
$saint_exupery : [["u4", $rosenthal], ["u1", $uni_main]],
$ministry : [null, null], # Endstation
$rosenthal : [null, null], # Endstation
}
## List of all registered station nodes, used to unparent them
@onready var stations : Array[Station] = fahrplan.keys()
@onready var tracks : Array[Dolly] = [%Track0Dolly, %Track1Dolly]
@export var empty_train_random_delay : Vector2 = Vector2(5.0, 20.0)
func _set_signage_texts(group: StringName, message: String) -> void:
get_tree().set_group(group, "text", "")
for i in range(len(message)):
get_tree().set_group(group, "text", message.substr(0, i+1))
await get_tree().create_timer(0.05).timeout
func _ready() -> void:
await get_tree().process_frame
tracks[0].train_left.connect(_player_train_left)
tracks[1].train_left.connect(_player_train_left)
_unparent_all_stations_except($hirschfeld)
enter_station(current)
## The current station
var current : Station
var stop := false
var destinations : Array[Station] = [null, null]
## Begins the scheduled traffic (looping through the list of destinations) on a given track
func _begin_traffic_loop(track: Dolly, cancel: Array) -> void:
if not track.player_on_board and fahrplan[current][track.index] == null: # empty trains dont arrive at endstation
_set_signage_texts(track.signage_group, "Gleis gesperrt")
return
if fahrplan[current][track.index] == null: # empty trains dont arrive at endstation
track.arrive(true)
_set_signage_texts(track.signage_group, "Endstation")
return
var routes : Array = fahrplan[current][track.index]
if routes.is_empty():
_set_signage_texts(track.signage_group, "Verkehr z. Zt.\nunregelmäßig")
return
while true:
if cancel.is_empty(): return # abort the loop
var line : StringName = routes.pop_front()
var next : Station = routes.pop_front()
routes.append(line) # It's a ring buffer
routes.append(next) # It's a ring buffer
destinations[track.index] = next
track.set_line(line)
_set_signage_texts(track.signage_group, current.get_label(line, next)) # TODO: load nice string
# Vary our schedule a little by making empty trains wait a random amount of time
if not track.player_on_board:
await get_tree().create_timer(randf_range(empty_train_random_delay.x, empty_train_random_delay.y)).timeout
if cancel.is_empty(): return # abort the loop
await track.cycle() # arrive and depart
var cancellation_token : Array
func enter_station(station: Station):
prints("------------", "ENTER STATION", station, station.name, "------------")
remove_child(current)
current = station
add_child(station)
cancellation_token = ["go"] # Allocate a new stopping token
_begin_traffic_loop(tracks[0], cancellation_token)
_begin_traffic_loop(tracks[1], cancellation_token)
func _player_train_left(track: Dolly) -> void:
cancellation_token.clear()
enter_station(destinations[track.index])
func _unparent_all_stations_except(except : Node3D):
for station in stations:
assert(station.get_parent() == self, "A station that isn't a child of Fahrplan is in the Fahrplan: %s" % station.name)
station.visible = true # Make visible by default, parenting handles visibility and collision
if station == except:
current = station
continue
remove_child(station)

View File

@ -1 +0,0 @@
uid://bi4cwmajhpa5f

View File

@ -1,8 +0,0 @@
extends Node3D
class_name Station
@export var i18n_key : StringName
@export var train_labels : Dictionary[StringName,String] = {}
func get_label(line: StringName, next_stop: Station) -> String:
return train_labels.get(line+next_stop.name, line+next_stop.name)

View File

@ -1 +0,0 @@
uid://pmhadgsfinjc

View File

@ -1,24 +0,0 @@
extends Room
class_name SubwaySequence
func _ready() -> void:
id = State.rooms.TRANSITION
super._ready()
func get_ready_async() -> void:
await super.get_ready_async()
func start_room_async():
await super.start_room_async()
Scenes.player_enable.emit(true)
await Main.curtain.open()
func pull_save_state(save: SaveGame) -> void:
save.sequences_enabled = Scenes.enabled_sequences
save_game = save
# Call parent to restore player position
super.pull_save_state(save)

View File

@ -1,22 +1,12 @@
extends Node3D
class_name SubwayTrain
@export var materials : Dictionary[StringName, Material] = {}
extends Node3D
@export var door_open: bool:
set(open):
if door_open == open: return
if is_node_ready() and door_open != open:
if open:
$AnimationPlayer.play("door_open")
else:
$AnimationPlayer.play("door_close")
door_open=open
if open:
%TrainModel/AnimationPlayer.play("door_open")
else:
%TrainModel/AnimationPlayer.play("door_close")
%FrontWallClosed.disabled = door_open
func set_line(line : StringName):
$TrainModel/traun_hull.material_overlay = materials[line]
$TrainModel/LineLabelBack.text = line.to_upper()
$TrainModel/LineLabelFront.text = line.to_upper()

View File

@ -37,29 +37,6 @@ import_script/path=""
materials/extract=1
materials/extract_format=0
materials/extract_path="res://base-environments/transition/import/textures"
_subresources={
"materials": {
"ParedTunel": {
"use_external/enabled": true,
"use_external/fallback_path": "res://base-environments/transition/import/textures/ParedTunel.tres",
"use_external/path": "uid://bcim2jku0oi5s"
},
"station_floor": {
"use_external/enabled": true,
"use_external/fallback_path": "res://base-environments/transition/import/textures/station_floor.tres",
"use_external/path": "uid://duhe1nn0uwulo"
},
"station_tiles": {
"use_external/enabled": true,
"use_external/fallback_path": "res://base-environments/transition/import/textures/station_tiles.tres",
"use_external/path": "uid://b3wybjajg4dr3"
},
"unlit_station_tiles": {
"use_external/enabled": true,
"use_external/fallback_path": "res://base-environments/transition/import/textures/unlit_station_tiles.tres",
"use_external/path": "uid://85u11etmwhac"
}
}
}
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1

View File

@ -14,8 +14,7 @@ metallic_texture_channel = 2
roughness_texture = ExtResource("2_i1m4q")
roughness_texture_channel = 1
emission_enabled = true
emission_energy_multiplier = 4.0
emission_on_uv2 = true
emission_energy_multiplier = 30.0
emission_texture = ExtResource("3_fnaaw")
normal_enabled = true
normal_texture = ExtResource("4_wnwnf")

View File

@ -15,7 +15,7 @@ metallic_texture_channel = 2
roughness_texture = ExtResource("2_5i5r4")
roughness_texture_channel = 1
emission_enabled = true
emission_energy_multiplier = 3.0
emission_energy_multiplier = 5.0
emission_texture = ExtResource("3_68xv4")
normal_enabled = true
normal_texture = ExtResource("4_5bw0m")

View File

@ -4,6 +4,4 @@
resource_name = "display"
cull_mode = 2
albedo_color = Color(0.16613327, 0.10919999, 0.28, 1)
metallic = 0.1
metallic_specular = 0.3
roughness = 0.15
roughness = 0.1

View File

@ -1,11 +1,9 @@
[gd_scene load_steps=12 format=3 uid="uid://tuv111h6jsnu"]
[gd_scene load_steps=10 format=3 uid="uid://tuv111h6jsnu"]
[ext_resource type="PackedScene" uid="uid://swh2v0icrwum" path="res://base-environments/transition/import/meta_station.glb" id="1_yekr5"]
[ext_resource type="Shader" uid="uid://i3k8blcd043t" path="res://base-environments/transition/shaders/escalator_disp.gdshader" id="2_klf6x"]
[ext_resource type="AudioStream" uid="uid://dbwcsy5klf2o1" path="res://base-environments/transition/audio/107215__keithpeter__birmingham-erdington-canal-transformer-3.wav" id="2_yyrp7"]
[ext_resource type="Texture2D" uid="uid://dfkqm1qqjq7sg" path="res://base-environments/transition/import/meta_station_stairs_albedo-stairs_alpha.png" id="3_e0ljd"]
[ext_resource type="Texture2D" uid="uid://bkakclhq1uwda" path="res://base-environments/transition/shaders/stairs_normal.png" id="4_yyrp7"]
[ext_resource type="FontFile" uid="uid://8es6n8tktmx6" path="res://import/fonts/Doto-ExtraBold.ttf" id="5_e0ljd"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_jh12p"]
render_priority = 0
@ -64,47 +62,11 @@ gi_mode = 0
[node name="water" parent="." index="1"]
gi_mode = 0
[node name="signal_lights_004" parent="." index="21"]
gi_mode = 2
[node name="TransformerBuzzAudio" type="AudioStreamPlayer3D" parent="signal_lights_004" index="0"]
transform = Transform3D(1, 0, 0, 0, 1, -8.526513e-14, 0, 8.526513e-14, 1, 2.947373, 0.36035156, 1.2887176e-07)
stream = ExtResource("2_yyrp7")
unit_size = 2.0
autoplay = true
bus = &"sfx"
[node name="signal_lights_003" parent="." index="22"]
gi_mode = 2
[node name="signal_lights_002" parent="." index="23"]
gi_mode = 2
[node name="TransformerBuzzAudio" type="AudioStreamPlayer3D" parent="signal_lights_002" index="0"]
transform = Transform3D(1, 0, -8.351873e-23, 0, 1, 1.9106857e-15, -8.351873e-23, 0, 1, -8.365656, -0.024308532, 3.6567445e-07)
stream = ExtResource("2_yyrp7")
unit_size = 2.0
autoplay = true
bus = &"sfx"
[node name="signal_lights_001" parent="." index="24"]
gi_mode = 2
[node name="railway_lighting" parent="." index="35"]
cast_shadow = 0
gi_mode = 2
[node name="FluorescentLuz" parent="." index="41"]
cast_shadow = 0
[node name="escalator_stairs_L" parent="." index="43"]
custom_aabb = AABB(-0.8, 0, -1, 1.6, 3.5, 7)
gi_mode = 0
surface_material_override/0 = SubResource("ShaderMaterial_jh12p")
[node name="Ceiling" parent="." index="44"]
cast_shadow = 0
[node name="escalator_stairs_L_001" parent="." index="46"]
transform = Transform3D(1, 0, 2.3841858e-07, 0, 1, 0, -2.3841858e-07, 0, 1, -0.854971, 3.1997495, 4.8378654)
material_override = SubResource("ShaderMaterial_klf6x")
@ -148,203 +110,3 @@ material_override = SubResource("ShaderMaterial_e0ljd")
gi_mode = 0
mesh = SubResource("PlaneMesh_yyrp7")
skeleton = NodePath("")
[node name="station_display_R" parent="." index="48"]
cast_shadow = 0
[node name="Label3D" type="Label3D" parent="station_display_R" index="0" groups=["signage2"]]
transform = Transform3D(1, 0, 1.9895195e-13, 0, 1, 0, -1.9895195e-13, 0, 1, -0.8458553, 0.35, 0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Label3D2" type="Label3D" parent="station_display_R" index="1" groups=["signage2"]]
transform = Transform3D(-1, 0, -8.742282e-08, 0, 1, 0, 8.742282e-08, 0, -1, 0.85590327, 0.35, -0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Cube_012" parent="." index="49"]
cast_shadow = 0
[node name="Label3D" type="Label3D" parent="Cube_012" index="0" groups=["signage1"]]
transform = Transform3D(1, 0, 1.9895197e-13, 0, 1, 0, -1.9895197e-13, 0, 1, -0.8458555, 0.35, 0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Label3D2" type="Label3D" parent="Cube_012" index="1" groups=["signage1"]]
transform = Transform3D(-1, 0, -8.742293e-08, 0, 1, 0, 8.742293e-08, 0, -1, 0.85590315, 0.35, -0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Cube_014" parent="." index="50"]
cast_shadow = 0
[node name="Label3D" type="Label3D" parent="Cube_014" index="0" groups=["signage2"]]
transform = Transform3D(1, 0, 1.9895195e-13, 0, 1, 0, -1.9895195e-13, 0, 1, -0.8458553, 0.35, 0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Label3D2" type="Label3D" parent="Cube_014" index="1" groups=["signage2"]]
transform = Transform3D(-1, 0, -8.742282e-08, 0, 1, 0, 8.742282e-08, 0, -1, 0.85590327, 0.35, -0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Cube_016" parent="." index="51"]
cast_shadow = 0
[node name="Label3D" type="Label3D" parent="Cube_016" index="0" groups=["signage1", "signage2"]]
transform = Transform3D(1, 0, 1.9895197e-13, 0, 1, 0, -1.9895197e-13, 0, 1, -0.8458553, 0.35, 0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Label3D2" type="Label3D" parent="Cube_016" index="1" groups=["signage1"]]
transform = Transform3D(-1, 0, -8.742293e-08, 0, 1, 0, 8.742293e-08, 0, -1, 0.85590315, 0.35, -0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Cube_010" parent="." index="52"]
cast_shadow = 0
[node name="Label3D" type="Label3D" parent="Cube_010" index="0" groups=["signage2"]]
transform = Transform3D(1, 0, 1.9895195e-13, 0, 1, 0, -1.9895195e-13, 0, 1, -0.8458553, 0.35, 0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Label3D2" type="Label3D" parent="Cube_010" index="1" groups=["signage2"]]
transform = Transform3D(-1, 0, -8.742282e-08, 0, 1, 0, 8.742282e-08, 0, -1, 0.85590327, 0.35, -0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Cube_017" parent="." index="53"]
cast_shadow = 0
[node name="Label3D" type="Label3D" parent="Cube_017" index="0" groups=["signage1"]]
transform = Transform3D(1, 0, 1.9895197e-13, 0, 1, 0, -1.9895197e-13, 0, 1, -0.8458555, 0.35, 0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Label3D2" type="Label3D" parent="Cube_017" index="1" groups=["signage1"]]
transform = Transform3D(-1, 0, -8.742293e-08, 0, 1, 0, 8.742293e-08, 0, -1, 0.855903, 0.35, -0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Cube_018" parent="." index="54"]
cast_shadow = 0
[node name="Label3D" type="Label3D" parent="Cube_018" index="0" groups=["signage2"]]
transform = Transform3D(1, 0, 1.9895195e-13, 0, 1, 0, -1.9895195e-13, 0, 1, -0.8458553, 0.35, 0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Label3D2" type="Label3D" parent="Cube_018" index="1" groups=["signage2"]]
transform = Transform3D(-1, 0, -8.742282e-08, 0, 1, 0, 8.742282e-08, 0, -1, 0.85590327, 0.35, -0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Cube_019" parent="." index="55"]
cast_shadow = 0
[node name="Label3D" type="Label3D" parent="Cube_019" index="0" groups=["signage1"]]
transform = Transform3D(1, 0, 1.9895197e-13, 0, 1, 0, -1.9895197e-13, 0, 1, -0.8458553, 0.35, 0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0
[node name="Label3D2" type="Label3D" parent="Cube_019" index="1" groups=["signage1"]]
transform = Transform3D(-1, 0, -8.742293e-08, 0, 1, 0, 8.742293e-08, 0, -1, 0.85590315, 0.35, -0.1)
transparency = 0.6
modulate = Color(2.454227, 1.0085243, 0.54216844, 1)
text = "Loem Ipsum
dolor sit amed"
font = ExtResource("5_e0ljd")
outline_size = 2
horizontal_alignment = 0
vertical_alignment = 0

View File

@ -9,18 +9,15 @@
[resource]
resource_name = "station_ceiling"
vertex_color_use_as_albedo = true
albedo_color = Color(0.48570347, 0.48570353, 0.48570347, 1)
albedo_texture = ExtResource("1_fw6ln")
metallic = 0.5
metallic_specular = 0.2
metallic_texture = ExtResource("2_ilmcm")
roughness_texture = ExtResource("2_ilmcm")
roughness_texture_channel = 1
emission_enabled = true
emission = Color(0.9894878, 0.815461, 0.7171153, 1)
emission_energy_multiplier = 0.5
emission_operator = 1
emission_texture = ExtResource("4_4f468")
normal_enabled = true
normal_scale = 0.2
normal_texture = ExtResource("3_k7xpx")
ao_enabled = true
ao_light_affect = 0.5

View File

@ -8,7 +8,6 @@
[resource]
resource_name = "train_windows"
transparency = 4
cull_mode = 2
albedo_texture = ExtResource("1_qqnyp")
metallic = 1.0
metallic_texture = ExtResource("2_orwl3")

View File

@ -9,7 +9,6 @@
resource_name = "train_windows_transparent"
transparency = 1
blend_mode = 4
cull_mode = 2
albedo_texture = ExtResource("1_p8q8d")
metallic = 1.0
metallic_texture = ExtResource("2_eds1u")

View File

@ -1,5 +1,5 @@
shader_type spatial;
render_mode cull_disabled, blend_add, unshaded;
render_mode cull_back, blend_add, unshaded;
varying vec3 world_pos;
uniform float state = 0.0;

View File

@ -0,0 +1,18 @@
class_name Station extends Resource
enum id {
HIRSCHFELD,
PARITY,
EXUPERY,
ROSENTHAL,
UNI_1,
UNI_2,
MINISTRY
}
@export var station_name: StringName = ""
@export var memory: Scenes.id = Scenes.id.YOUTH_DRAVEN
@export_file("*.tscn") var station_path: String = ""
@export var arriving_lines: Dictionary[TrainLine.id, float]
@export var departing_lines: Dictionary[TrainLine.id, float]
@export var announcement: AudioStream

View File

@ -0,0 +1 @@
uid://cyeh7sa20bmcf

View File

@ -1,8 +1,6 @@
extends Station
extends Node3D
signal leave_room
func _ready() -> void:
%PlayerDetect.body_entered.connect(func(body):
if visible and body is PlayerController:
State.room.save_game.subway_burnout = true
await Main.curtain.black()
State.room.proceed.emit(Main.adulthood_room_path))
%PlayerDetect.body_entered.connect(func(body): if body is PlayerController: leave_room.emit())

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,8 +0,0 @@
extends Station
func _ready() -> void:
%PlayerDetect.body_entered.connect(func(body):
if visible and body is PlayerController:
State.room.save_game.subway_burnout = false
await Main.curtain.black()
State.room.proceed.emit(Main.adulthood_room_path))

View File

@ -1 +0,0 @@
uid://c3wiasfotoy5

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,185 @@
extends RoomTemplate
@export var all_stations: Dictionary[Station.id, Station]
@export var all_lines: Dictionary[TrainLine.id, TrainLine]
func _ready() -> void:
super._ready()
id = State.rooms.TRANSITION
func start_room():
super.start_room()
%LeftDetection.body_entered.connect(on_left_train_enter)
%RightDetection.body_entered.connect(on_right_train_enter)
%LeftDetection.body_exited.connect(on_left_train_exit)
%RightDetection.body_exited.connect(on_right_train_exit)
%burnout_station.leave_room.connect(func():
proceed.emit(Main.adulthood_room_path))
%PlayerController.process_mode = Node.PROCESS_MODE_INHERIT
# Give player control immediately, then open
Scenes.player_enable.emit(true)
await Main.curtain.open()
var left_first_station: bool = false
func on_first_station() -> void:
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_DND
await get_tree().create_timer(5.0).timeout
%ShedulePlayer_R.play("train_arriving")
await get_tree().create_timer(12.0).timeout
if left_first_station: return
%ShedulePlayer_R.play("train_leaving")
await get_tree().create_timer(3.0).timeout
%RightLabel.text = "do not board"
await get_tree().create_timer(6.0).timeout
%ShedulePlayer_L.play("train_arriving")
var on_second_platform: bool = false
func on_first_transition(_is_left: bool = false):
%StationPlayer.play("first_transition")
await get_tree().create_timer(1.0).timeout
on_second_platform = true
func on_second_transition():
%StationPlayer.play("second_transition")
func on_third_transition():
%StationPlayer.play("third_transition")
func pull_save_state(save: SaveGame) -> void:
#FIXME
save.sequences_enabled = Scenes.enabled_sequences
save.current_room = State.rooms.ADULTHOOD
save_game = save
# Call parent to restore player position
super.pull_save_state(save)
func prepare_transition():
for child in %Stations.get_children():
if child is Node3D:
if not child.name == "burnout_station":
child.queue_free()
func unload():
pass
func on_left_train_enter(_body) -> void:
if not left_first_station:
left_first_station = true
await get_tree().create_timer(2.0).timeout
%Train2.get_child(0).door_open = false
on_first_transition(true)
await get_tree().create_timer(5.0).timeout
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_VOLUNTARY
%SubwayMap.current_station = Scenes.id.ADULT_VOLUNTARY
%RightLabel.text = "U3 Gesundquell \n via Rosenthal Hospital"
await get_tree().create_timer(5.0).timeout
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_AUTISM
%SubwayMap.current_station = Scenes.id.ADULT_AUTISM
await get_tree().create_timer(5.0).timeout
%Train2.get_child(0).door_open = true
await get_tree().create_timer(5.0).timeout
if not changeover:
%Train2.get_child(0).door_open = false
on_second_transition()
await get_tree().create_timer(5.0).timeout
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_SELF_ADVOCACY
%SubwayMap.current_station = Scenes.id.ADULT_SELF_ADVOCACY
%RightLabel.text = "do not board"
%LeftLabel.text = "do not board"
on_final = true
await get_tree().create_timer(5.0).timeout
%Train2.get_child(0).door_open = true
else:
%ShedulePlayer_L.play("train_leaving")
%LeftLabel.text = "do not board"
return
if changeover:
%ShedulePlayer_R.play("train_leaving")
await get_tree().create_timer(2.0).timeout
%Train2.get_child(0).door_open = false
on_second_transition()
await get_tree().create_timer(5.0).timeout
save_game.seen.append(str(Scenes.id.ADULT_THERAPY_UNI))
%SubwayMap.current_station = Scenes.id.ADULT_THERAPY_UNI
%RightLabel.text = "do not board"
%LeftLabel.text = "do not board"
on_final = true
await get_tree().create_timer(5.0).timeout
%Train2.get_child(0).door_open = true
var on_final: bool = false:
set(final):
#FIXME: this needs to be a proper sequence!
on_final = final
await get_tree().create_timer(0.5).timeout
if final: prepare_transition()
var on_direct_path: bool = false
func on_right_train_enter(_body) -> void:
if not left_first_station:
on_direct_path = true
%Train.get_child(0).door_open = false
await get_tree().create_timer(2.0).timeout
left_first_station = true
on_first_transition(false)
await get_tree().create_timer(5.0).timeout
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_EATING
%SubwayMap.current_station = Scenes.id.ADULT_EATING
%LeftLabel.text = "U8 Gesundquell \n via Rosenthal Hospital"
await get_tree().create_timer(5.0).timeout
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_SELF_ADVOCACY
%SubwayMap.current_station = Scenes.id.ADULT_SELF_ADVOCACY
await get_tree().create_timer(5.0).timeout
%Train.get_child(0).door_open = true
await get_tree().create_timer(5.0).timeout
if not changeover:
%Train.get_child(0).door_open = false
on_second_transition()
await get_tree().create_timer(5.0).timeout
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_BURNOUT
%SubwayMap.current_station = Scenes.id.ADULT_BURNOUT
%RightLabel.text = "do not board"
%LeftLabel.text = "do not board"
on_final = true
await get_tree().create_timer(5.0).timeout
%Train.get_child(0).door_open = true
else:
%ShedulePlayer_R.play("train_leaving")
%RightLabel.text = "do not board"
return
if changeover:
on_second_transition()
if on_direct_path: %ShedulePlayer_L.play("train_leaving")
await get_tree().create_timer(5.0).timeout
Scenes.enabled_sequences += 1 << Scenes.id.ADULT_AUTISM
%SubwayMap.current_station = Scenes.id.ADULT_AUTISM
await get_tree().create_timer(2.0).timeout
%Train2.get_child(0).door_open = false
%RightLabel.text = "do not board"
%LeftLabel.text = "do not board"
on_final = true
await get_tree().create_timer(5.0).timeout
%Train.get_child(0).door_open = true
var changeover: bool = false
func on_left_train_exit(_body):
if on_second_platform and not on_final:
changeover = true
%ShedulePlayer_R.play("train_arriving")
func on_right_train_exit(_body):
if on_second_platform and not on_final:
changeover = true
%ShedulePlayer_L.play("train_arriving")
await get_tree().create_timer(10).timeout
%RightLabel.text = "U1 weissnicht \n via Saint-Exupery Sq."
await get_tree().create_timer(5).timeout
%ShedulePlayer_R.play("train_arriving")

View File

@ -1,575 +0,0 @@
[gd_scene load_steps=46 format=3 uid="uid://fgp3tbah7msy"]
[ext_resource type="Script" uid="uid://snugj1gnggjj" path="res://base-environments/transition/code/subway_sequence.gd" id="1_yfan7"]
[ext_resource type="PackedScene" uid="uid://mkccbig41bqb" path="res://logic-scenes/player_controller/player_controller.tscn" id="2_il5go"]
[ext_resource type="Script" uid="uid://bi4cwmajhpa5f" path="res://base-environments/transition/code/fahrplan.gd" id="4_yfan7"]
[ext_resource type="PackedScene" uid="uid://d2j0d88axhfue" path="res://base-environments/transition/stations/dungeon_station.tscn" id="5_rum2v"]
[ext_resource type="VoxelGIData" uid="uid://d0ywd1vewvryc" path="res://base-environments/transition/vfx/dungeon_VoxelGI.res" id="6_ii0j1"]
[ext_resource type="AudioStream" uid="uid://ba7s5uqc4iu66" path="res://base-environments/transition/audio/537769__janbezouska__factory-fluorescent-light-buzz.wav" id="7_rkl48"]
[ext_resource type="PackedScene" uid="uid://bk1l1a7eae838" path="res://base-environments/transition/misc/subway_map.tscn" id="8_rcbu2"]
[ext_resource type="PackedScene" uid="uid://dmvn3x67nduqp" path="res://base-environments/transition/stations/uni_station.tscn" id="9_bdj4u"]
[ext_resource type="Script" uid="uid://pmhadgsfinjc" path="res://base-environments/transition/code/station.gd" id="10_iq74k"]
[ext_resource type="VoxelGIData" uid="uid://pb8f1dk8ginr" path="res://base-environments/transition/vfx/ministry_gi.res" id="11_il5go"]
[ext_resource type="VoxelGIData" uid="uid://b5b1dkf1rrsh6" path="res://base-environments/transition/vfx/saint_exupery_gi.tres" id="11_iq74k"]
[ext_resource type="VoxelGIData" uid="uid://bwsoyukt82gvb" path="res://base-environments/transition/uni_mensa_gi.tres" id="11_rum2v"]
[ext_resource type="PackedScene" uid="uid://inavuxjmq6hi" path="res://base-environments/transition/stations/burnout_station.tscn" id="11_vomua"]
[ext_resource type="VoxelGIData" uid="uid://dram781e770bj" path="res://base-environments/transition/vfx/uni_voxelGI.tres" id="12_ii0j1"]
[ext_resource type="Script" uid="uid://c3wiasfotoy5" path="res://base-environments/transition/stations/therapy_station.gd" id="12_il5go"]
[ext_resource type="PackedScene" uid="uid://uhayiqixlv0e" path="res://base-environments/transition/stations/volunteer_station.tscn" id="13_265nv"]
[ext_resource type="VoxelGIData" uid="uid://uml26uico8na" path="res://base-environments/transition/vfx/rosenthal_gi.tres" id="14_iq74k"]
[ext_resource type="Material" uid="uid://dchm78gv31r6a" path="res://base-environments/transition/shaders/timetravel.tres" id="15_hdxw7"]
[ext_resource type="Script" uid="uid://br1w2nt4pj8lt" path="res://vfx/post_processing/post_process_shader_template.gd" id="16_a6spw"]
[ext_resource type="VoxelGIData" uid="uid://wr8uuicetrvx" path="res://base-environments/transition/vfx/parity_square_gi.tres" id="16_iq74k"]
[ext_resource type="Script" uid="uid://mgertkn5ub0g" path="res://dev-util/hdr_sdr_switch.gd" id="17_ov8kk"]
[ext_resource type="PackedScene" uid="uid://df3ur5wll8vx7" path="res://base-environments/transition/subway_track.tscn" id="17_yfan7"]
[sub_resource type="ViewportTexture" id="ViewportTexture_rkl48"]
viewport_path = NodePath("Logic/Fahrplan/hirschfeld/SubwayMap3D/MapViewport")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_il5go"]
resource_local_to_scene = true
albedo_color = Color(0.70380783, 0.70380783, 0.70380783, 1)
albedo_texture = SubResource("ViewportTexture_rkl48")
metallic = 0.3
metallic_specular = 0.3
roughness = 0.15
emission_enabled = true
emission = Color(1, 1, 1, 1)
emission_energy_multiplier = 0.1
emission_operator = 1
emission_texture = SubResource("ViewportTexture_rkl48")
[sub_resource type="QuadMesh" id="QuadMesh_rkl48"]
resource_local_to_scene = true
material = SubResource("StandardMaterial3D_il5go")
size = Vector2(1.505, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rkl48"]
resource_name = "beam_metal.001"
cull_mode = 2
albedo_color = Color(0.27999386, 0.27999386, 0.27999386, 1)
metallic = 0.8
metallic_specular = 0.3
roughness = 0.2
uv1_scale = Vector3(0.1, 0.1, 0.1)
[sub_resource type="BoxMesh" id="BoxMesh_rkl48"]
material = SubResource("StandardMaterial3D_rkl48")
size = Vector3(0.1, 0.7, 1.5)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sofnd"]
albedo_color = Color(0.5953387, 0.22751653, 9.62615e-08, 1)
metallic = 0.7
roughness = 0.5
clearcoat_enabled = true
clearcoat_roughness = 0.1
[sub_resource type="BoxMesh" id="BoxMesh_8c5ii"]
size = Vector3(0.15, 1.2, 1.7)
[sub_resource type="BoxMesh" id="BoxMesh_symoa"]
size = Vector3(0.3, 1, 1.5)
[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_rkl48"]
[sub_resource type="BoxShape3D" id="BoxShape3D_yfan7"]
size = Vector3(8, 2.5, 0.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_il5go"]
size = Vector3(4, 2.5, 0.4)
[sub_resource type="BoxShape3D" id="BoxShape3D_iq74k"]
size = Vector3(4.392578, 2.5, 0.4)
[sub_resource type="BoxShape3D" id="BoxShape3D_biibr"]
size = Vector3(4.392578, 2.5, 0.4)
[sub_resource type="BoxShape3D" id="BoxShape3D_rum2v"]
size = Vector3(4.393, 2.5, 0.6)
[sub_resource type="BoxShape3D" id="BoxShape3D_ii0j1"]
size = Vector3(0.4, 2.5, 0.5)
[sub_resource type="BoxShape3D" id="BoxShape3D_ltric"]
size = Vector3(2.393, 1.0219727, 1.1)
[sub_resource type="BoxShape3D" id="BoxShape3D_rcbu2"]
size = Vector3(4.325035, 0.5001221, 29.45169)
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_wgcl8"]
sky_top_color = Color(0.138464, 0.0447571, 0.169373, 1)
sky_horizon_color = Color(4.62055e-06, 0.722684, 0.905603, 1)
ground_bottom_color = Color(0.578219, 0.40697, 0.222187, 1)
ground_horizon_color = Color(0.138283, 0.487665, 0.674041, 1)
ground_curve = 0.165643
ground_energy_multiplier = 0.2
[sub_resource type="Sky" id="Sky_5ahgt"]
sky_material = SubResource("ProceduralSkyMaterial_wgcl8")
[sub_resource type="Environment" id="Environment_8c5ii"]
sky = SubResource("Sky_5ahgt")
ambient_light_color = Color(0.15686275, 0.15686275, 0.15686275, 1)
ambient_light_sky_contribution = 0.0
tonemap_mode = 3
tonemap_exposure = 1.1
ssao_enabled = true
sdfgi_read_sky_light = false
sdfgi_cascades = 3
sdfgi_min_cell_size = 0.01953125
sdfgi_energy = 0.5
glow_enabled = true
glow_levels/2 = 0.05
glow_levels/3 = 0.1
glow_levels/4 = 0.2
glow_levels/5 = 0.4
glow_levels/6 = 0.5
glow_normalized = true
glow_intensity = 0.5
glow_strength = 0.7
glow_mix = 1.0
glow_bloom = 0.2
glow_hdr_threshold = 0.5
glow_hdr_luminance_cap = 50.0
fog_enabled = true
fog_light_color = Color(0.03529412, 0.15294118, 0.1882353, 1)
fog_density = 0.02
fog_height = 0.25
fog_height_density = 0.5
volumetric_fog_density = 0.03
volumetric_fog_albedo = Color(0.395, 0.6122501, 0.79, 1)
adjustment_enabled = true
adjustment_contrast = 0.99
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_symoa"]
[sub_resource type="CompositorEffect" id="CompositorEffect_820wi"]
resource_local_to_scene = false
resource_name = ""
enabled = false
effect_callback_type = 4
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("16_a6spw")
shader_code = "//color.rgb = pow(color.rgb, vec3(1.3));
color.rgb = max(vec3(0.0), pow(color.rgb, vec3(1.6, 1.5, 1.4)) * vec3(5.0, 4.0, 4.0) + vec3(-0.01, 0.01, -0.0));
//float gray = color.r * 0.2125 + color.g * 0.7154 + color.b * 0.0721;
//color.rgb = vec3(gray);"
metadata/_custom_type_script = "uid://br1w2nt4pj8lt"
[sub_resource type="Compositor" id="Compositor_e75no"]
compositor_effects = Array[CompositorEffect]([SubResource("CompositorEffect_820wi")])
[node name="SubwaySequence" type="Node3D"]
script = ExtResource("1_yfan7")
id = 2
[node name="Logic" type="Node3D" parent="." groups=["labels"]]
unique_name_in_owner = true
[node name="PlayerController" parent="Logic" instance=ExtResource("2_il5go")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.0218763, 6.1035156e-05, -5.6086483)
continuous_cd = true
[node name="Track0Dolly" parent="Logic" instance=ExtResource("17_yfan7")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.2, -0.2, -32.5)
index = 0
signage_group = "signage2"
[node name="Track1Dolly" parent="Logic" instance=ExtResource("17_yfan7")]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -6.2, -0.2, -32.5)
index = 1
signage_group = "signage1"
[node name="Fahrplan" type="Node3D" parent="Logic"]
script = ExtResource("4_yfan7")
metadata/_custom_type_script = "uid://bi4cwmajhpa5f"
[node name="hirschfeld" parent="Logic/Fahrplan" groups=["signage1"] instance=ExtResource("5_rum2v")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.015596004, 0.007891655, -0.018885009)
script = ExtResource("10_iq74k")
i18n_key = &"Hirschfeld-Str."
train_labels = Dictionary[StringName, String]({
&"u1lise_meitner": "U1 Ring ↺",
&"u1parity_square": "U1 Ring ↻",
&"u2uni_mensa": "U2 Ambitz"
})
[node name="VoxelGI" type="VoxelGI" parent="Logic/Fahrplan/hirschfeld"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.020572662, 1.5449562, -25.981638)
size = Vector3(20, 3.75, 84)
data = ExtResource("6_ii0j1")
[node name="SubwayMap3D" type="Node3D" parent="Logic/Fahrplan/hirschfeld"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.021, 1.4, -22.606)
[node name="MapPanel1" type="MeshInstance3D" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, 1.46175, 0, 1.46175, 0, -1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_rkl48")
[node name="MapPanel2" type="MeshInstance3D" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, -1.46175, 0, 1.46175, 0, 1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_rkl48")
[node name="Stand" type="MeshInstance3D" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.15, 0)
mesh = SubResource("BoxMesh_rkl48")
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D"]
transform = Transform3D(1.46175, 0, 0, 0, 1.46175, 0, 0, 0, 1.46175, 0, 0, 0)
material_override = SubResource("StandardMaterial3D_sofnd")
use_collision = true
[node name="CSGMesh3D" type="CSGMesh3D" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D/CSGCombiner3D"]
transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0, 0)
mesh = SubResource("BoxMesh_8c5ii")
[node name="CSGMesh3D2" type="CSGMesh3D" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D/CSGCombiner3D"]
transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0, 0)
operation = 2
mesh = SubResource("BoxMesh_symoa")
[node name="MapViewport" type="SubViewport" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D"]
disable_3d = true
size = Vector2i(2896, 2048)
render_target_update_mode = 4
[node name="SubwayMap" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D/MapViewport" instance=ExtResource("8_rcbu2")]
unique_name_in_owner = true
[node name="SubwayMapAudio" type="AudioStreamPlayer3D" parent="Logic/Fahrplan/hirschfeld/SubwayMap3D"]
stream = ExtResource("7_rkl48")
unit_size = 2.0
max_db = -5.0
autoplay = true
panning_strength = 0.5
bus = &"sfx"
[node name="uni_mensa" parent="Logic/Fahrplan" instance=ExtResource("9_bdj4u")]
visible = false
script = ExtResource("10_iq74k")
i18n_key = &"Uni (Alte Mensa)"
train_labels = Dictionary[StringName, String]({
&"u2hirschfeld": "U2 Turingplatz",
&"u2uni_main": "U2 Ambitz"
})
[node name="VoxelGI" type="VoxelGI" parent="Logic/Fahrplan/uni_mensa"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.020572662, 1.5449562, -25.981638)
size = Vector3(11, 3.7785034, 84)
data = ExtResource("11_rum2v")
[node name="SubwayMap3D" type="Node3D" parent="Logic/Fahrplan/uni_mensa"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.021, 1.4, -22.606)
[node name="MapPanel1" type="MeshInstance3D" parent="Logic/Fahrplan/uni_mensa/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, 1.46175, 0, 1.46175, 0, -1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_rkl48")
[node name="MapPanel2" type="MeshInstance3D" parent="Logic/Fahrplan/uni_mensa/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, -1.46175, 0, 1.46175, 0, 1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_rkl48")
[node name="Stand" type="MeshInstance3D" parent="Logic/Fahrplan/uni_mensa/SubwayMap3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.15, 0)
mesh = SubResource("BoxMesh_rkl48")
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Logic/Fahrplan/uni_mensa/SubwayMap3D"]
transform = Transform3D(1.46175, 0, 0, 0, 1.46175, 0, 0, 0, 1.46175, 0, 0, 0)
material_override = SubResource("StandardMaterial3D_sofnd")
use_collision = true
[node name="CSGMesh3D" type="CSGMesh3D" parent="Logic/Fahrplan/uni_mensa/SubwayMap3D/CSGCombiner3D"]
transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0, 0)
mesh = SubResource("BoxMesh_8c5ii")
[node name="CSGMesh3D2" type="CSGMesh3D" parent="Logic/Fahrplan/uni_mensa/SubwayMap3D/CSGCombiner3D"]
transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0, 0)
operation = 2
mesh = SubResource("BoxMesh_symoa")
[node name="uni_main" parent="Logic/Fahrplan" instance=ExtResource("9_bdj4u")]
visible = false
script = ExtResource("10_iq74k")
i18n_key = &"Universität"
train_labels = Dictionary[StringName, String]({
&"u1saint_exupery": "U1 Ring ↺",
&"u1saint_jude": "U1 Ring ↻",
&"u2ministry": "U2 Ambitz",
&"u2uni_mensa": "U2 Turingplatz",
&"u8rosenthal": "U8 Gesundquell",
&"u8saint_jude": "U8 Südstadt"
})
[node name="VoxelGI" type="VoxelGI" parent="Logic/Fahrplan/uni_main"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.020572662, 1.5449562, -25.981638)
size = Vector3(11, 3.7785034, 84)
data = ExtResource("12_ii0j1")
[node name="SubwayMap3D" type="Node3D" parent="Logic/Fahrplan/uni_main"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.021, 1.4, -22.606)
[node name="MapPanel1" type="MeshInstance3D" parent="Logic/Fahrplan/uni_main/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, 1.46175, 0, 1.46175, 0, -1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_rkl48")
[node name="MapPanel2" type="MeshInstance3D" parent="Logic/Fahrplan/uni_main/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, -1.46175, 0, 1.46175, 0, 1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_rkl48")
[node name="Stand" type="MeshInstance3D" parent="Logic/Fahrplan/uni_main/SubwayMap3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.15, 0)
mesh = SubResource("BoxMesh_rkl48")
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Logic/Fahrplan/uni_main/SubwayMap3D"]
transform = Transform3D(1.46175, 0, 0, 0, 1.46175, 0, 0, 0, 1.46175, 0, 0, 0)
material_override = SubResource("StandardMaterial3D_sofnd")
use_collision = true
[node name="CSGMesh3D" type="CSGMesh3D" parent="Logic/Fahrplan/uni_main/SubwayMap3D/CSGCombiner3D"]
transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0, 0)
mesh = SubResource("BoxMesh_8c5ii")
[node name="CSGMesh3D2" type="CSGMesh3D" parent="Logic/Fahrplan/uni_main/SubwayMap3D/CSGCombiner3D"]
transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0, 0)
operation = 2
mesh = SubResource("BoxMesh_symoa")
[node name="saint_exupery" parent="Logic/Fahrplan" instance=ExtResource("11_vomua")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.2, 0, 0, 0)
visible = false
script = ExtResource("12_il5go")
train_labels = Dictionary[StringName, String]({
&"u1parity_suqare": "U1 Ring ↺",
&"u1uni_main": "U1 Ring ↻",
&"u4rosenthal": "U4 Gesundquell"
})
[node name="VoxelGI" type="VoxelGI" parent="Logic/Fahrplan/saint_exupery"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.020572662, 1.5449562, -25.981638)
subdiv = 2
size = Vector3(11, 3.7785034, 84)
data = ExtResource("11_iq74k")
[node name="ministry" parent="Logic/Fahrplan" instance=ExtResource("11_vomua")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.2, 0, 0, 0)
visible = false
i18n_key = &"Bildungsministerium"
train_labels = Dictionary[StringName, String]({
&"u2ambitz": "U2 Ambitz",
&"u2uni_main": "U2 Turingplatz"
})
[node name="VoxelGI" type="VoxelGI" parent="Logic/Fahrplan/ministry"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.020572662, 1.5449562, -25.981638)
size = Vector3(11, 3.7785034, 84)
data = ExtResource("11_il5go")
[node name="rosenthal" parent="Logic/Fahrplan" instance=ExtResource("11_vomua")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.2, 0, 0, 0)
visible = false
script = ExtResource("12_il5go")
i18n_key = &"Rosenthal Klinik"
train_labels = Dictionary[StringName, String]({
&"u4gertrud_koch": "U4 Gesundquell",
&"u4saint_exupery": "U4 Nordstadt",
&"u8gertrud_koch": "U8 Gesundquell",
&"u8uni_main": "U8 Südstadt"
})
[node name="VoxelGI" type="VoxelGI" parent="Logic/Fahrplan/rosenthal"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.020572662, 1.5449562, -25.981638)
subdiv = 2
size = Vector3(11, 3.7785034, 84)
data = ExtResource("14_iq74k")
[node name="parity_square" parent="Logic/Fahrplan" instance=ExtResource("13_265nv")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.3, 0, 0, 0)
visible = false
script = ExtResource("10_iq74k")
i18n_key = &"Parity Square"
train_labels = Dictionary[StringName, String]({
&"u1hirschfeld": "U1 Ring ↺",
&"u1saint_exupery": "U1 Ring ↻",
&"u4saint_exupery": "U4 Gesundquell"
})
[node name="VoxelGI" type="VoxelGI" parent="Logic/Fahrplan/parity_square"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 0.7692308, 0.020572662, 1.5449562, -27.640734)
subdiv = 2
size = Vector3(11, 3.7785034, 104.75287)
data = ExtResource("16_iq74k")
[node name="SubwayMap3D" type="Node3D" parent="Logic/Fahrplan/parity_square"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.021, 1.4, -22.606)
[node name="MapPanel1" type="MeshInstance3D" parent="Logic/Fahrplan/parity_square/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, 1.46175, 0, 1.46175, 0, -1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_rkl48")
[node name="MapPanel2" type="MeshInstance3D" parent="Logic/Fahrplan/parity_square/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, -1.46175, 0, 1.46175, 0, 1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_rkl48")
[node name="Stand" type="MeshInstance3D" parent="Logic/Fahrplan/parity_square/SubwayMap3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.15, 0)
mesh = SubResource("BoxMesh_rkl48")
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="Logic/Fahrplan/parity_square/SubwayMap3D"]
transform = Transform3D(1.46175, 0, 0, 0, 1.46175, 0, 0, 0, 1.46175, 0, 0, 0)
material_override = SubResource("StandardMaterial3D_sofnd")
use_collision = true
[node name="CSGMesh3D" type="CSGMesh3D" parent="Logic/Fahrplan/parity_square/SubwayMap3D/CSGCombiner3D"]
transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0, 0)
mesh = SubResource("BoxMesh_8c5ii")
[node name="CSGMesh3D2" type="CSGMesh3D" parent="Logic/Fahrplan/parity_square/SubwayMap3D/CSGCombiner3D"]
transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0, 0)
operation = 2
mesh = SubResource("BoxMesh_symoa")
[node name="MapViewport" type="SubViewport" parent="Logic/Fahrplan/parity_square/SubwayMap3D"]
disable_3d = true
size = Vector2i(2896, 2048)
render_target_update_mode = 4
[node name="SubwayMap" parent="Logic/Fahrplan/parity_square/SubwayMap3D/MapViewport" instance=ExtResource("8_rcbu2")]
[node name="Collision" type="StaticBody3D" parent="Logic"]
[node name="World Boundary (Floor)" type="CollisionShape3D" parent="Logic/Collision"]
shape = SubResource("WorldBoundaryShape3D_rkl48")
debug_color = Color(0.5019608, 0.003921569, 0.9607843, 1)
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.143, 1, -66.5)
shape = SubResource("BoxShape3D_yfan7")
[node name="CollisionShape3D4" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.143, 1, 0.25)
shape = SubResource("BoxShape3D_yfan7")
[node name="CollisionShape3D5" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 1.8523458, 1, -1.1576476)
shape = SubResource("BoxShape3D_il5go")
[node name="CollisionShape3D7" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 1.567, 1.031, -2)
shape = SubResource("BoxShape3D_iq74k")
[node name="CollisionShape3D8" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -1.567, 1.031, -2)
shape = SubResource("BoxShape3D_biibr")
[node name="CollisionShape3D9" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0, 1.031, -2)
shape = SubResource("BoxShape3D_rum2v")
[node name="CollisionShape3D10" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 2.5282154e-07, 1.031, -7.783883)
shape = SubResource("BoxShape3D_ii0j1")
[node name="CollisionShape3D11" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -9.45743)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D12" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 2.5282154e-07, 1.031, -17.783882)
shape = SubResource("BoxShape3D_ii0j1")
[node name="CollisionShape3D13" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -19.45743)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D14" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -16.102852)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D15" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 2.5282154e-07, 1.031, -27.783882)
shape = SubResource("BoxShape3D_ii0j1")
[node name="CollisionShape3D16" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -29.45743)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D17" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -26.102852)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D18" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 2.5282154e-07, 1.031, -37.783882)
shape = SubResource("BoxShape3D_ii0j1")
[node name="CollisionShape3D19" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -39.457428)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D20" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -36.10285)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D21" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 2.5282154e-07, 1.031, -47.783882)
shape = SubResource("BoxShape3D_ii0j1")
[node name="CollisionShape3D22" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -49.457428)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D23" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -46.10285)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D24" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 2.5282154e-07, 1.031, -57.783882)
shape = SubResource("BoxShape3D_ii0j1")
[node name="CollisionShape3D26" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 3.259746e-07, 0.29198635, -56.10285)
shape = SubResource("BoxShape3D_ltric")
[node name="CollisionShape3D6" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -1.8618617, 1, -1.1576476)
shape = SubResource("BoxShape3D_il5go")
[node name="train" type="CollisionShape3D" parent="Logic/Collision"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.0680046, -0.24993896, -32.189793)
shape = SubResource("BoxShape3D_rcbu2")
[node name="MapViewport" type="SubViewport" parent="Logic"]
disable_3d = true
size = Vector2i(2896, 2048)
render_target_update_mode = 4
[node name="SubwayMap" parent="Logic/MapViewport" instance=ExtResource("8_rcbu2")]
[node name="material_helper" type="MeshInstance3D" parent="Logic"]
material_override = ExtResource("15_hdxw7")
cast_shadow = 0
skeleton = NodePath("../SceneAnimationPlayer")
[node name="SceneAnimationPlayer" type="AnimationPlayer" parent="Logic"]
unique_name_in_owner = true
autoplay = "RESET"
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_8c5ii")
camera_attributes = SubResource("CameraAttributesPractical_symoa")
compositor = SubResource("Compositor_e75no")
script = ExtResource("17_ov8kk")
[node name="UI" type="Control" parent="."]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[editable path="Logic/PlayerController"]

View File

@ -1,244 +0,0 @@
[gd_scene load_steps=31 format=3 uid="uid://df3ur5wll8vx7"]
[ext_resource type="PackedScene" uid="uid://4j1tlhfm3p40" path="res://base-environments/transition/subway_train.tscn" id="1_2h2xx"]
[ext_resource type="Script" uid="uid://dgfje4druu3sw" path="res://base-environments/transition/code/dolly.gd" id="1_5jpg8"]
[ext_resource type="Script" uid="uid://cyohujvfoiof7" path="res://base-environments/transition/code/subway_train.gd" id="2_aacjs"]
[ext_resource type="AudioStream" uid="uid://cwfr6sgcwg7sl" path="res://base-environments/transition/audio/450918__kyles__metro-subway-montreal-verdun-station-arrive-and-leave-semidistant-from-bridge-over-tracks-overpass.ogg" id="3_4h0n7"]
[ext_resource type="Material" uid="uid://cl7e6lpjalm0c" path="res://base-environments/transition/shaders/u1.material" id="3_j8pin"]
[ext_resource type="Material" uid="uid://c0baqy42xdxtg" path="res://base-environments/transition/shaders/u2.material" id="4_3w708"]
[ext_resource type="Material" uid="uid://bw4y5b5lnw3cn" path="res://base-environments/transition/shaders/u4.material" id="5_3x5rc"]
[ext_resource type="Material" uid="uid://cor0uho8hnfqc" path="res://base-environments/transition/shaders/u7.material" id="6_ckebf"]
[ext_resource type="Material" uid="uid://d0kk76pja0orj" path="res://base-environments/transition/shaders/u8.material" id="7_dyyau"]
[ext_resource type="FontFile" uid="uid://b231f0liphck" path="res://import/fonts/AtkinsonHyperlegible-Regular.ttf" id="10_3w708"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aacjs"]
shading_mode = 0
albedo_color = Color(0.03529412, 0.15294118, 0.1882353, 1)
[sub_resource type="BoxMesh" id="BoxMesh_aacjs"]
material = SubResource("StandardMaterial3D_aacjs")
size = Vector3(1, 50, 150)
[sub_resource type="Shader" id="Shader_tpaj8"]
code = "shader_type spatial;
render_mode depth_prepass_alpha;
uniform float time;
uniform sampler2D horizontal_gradient: repeat_disable;
uniform sampler2D horizontal_emission: repeat_disable;
uniform sampler2D vertical_gradient: repeat_disable;
uniform sampler2D vertical_emission: repeat_disable;
void vertex() {
// Called for every vertex the material is visible on.
}
void fragment() {
float anim_progress = time;
//float anim_progress = fract(TIME * 0.25);
ALBEDO = texture(horizontal_gradient, UV.yx).xyz * mix(vec3(1.0), texture(vertical_gradient, UV * vec2(anim_progress)).xyz, anim_progress);
ALPHA = min(clamp(3.0-anim_progress*2.0, 0.0, 1.0), texture(horizontal_gradient, UV.yx).w * texture(vertical_gradient, UV).w * pow(anim_progress, 0.6));
EMISSION = texture(horizontal_emission, UV.yx).xyz * mix(vec3(1.0), texture(vertical_emission, UV * vec2(anim_progress)).xyz, min(1.0, anim_progress));
ROUGHNESS = 0.5;
SPECULAR = 0.4;
METALLIC = 0.3;
}
//void light() {
// // Called for every pixel for every light affecting the material.
// // Uncomment to replace the default light processing function with this one.
//}
"
[sub_resource type="Gradient" id="Gradient_sofnd"]
offsets = PackedFloat32Array(0.190283, 0.237517, 0.252362, 0.263158, 0.358974, 0.620783)
colors = PackedColorArray(0, 0, 0, 1, 0.498876, 0.371803, 0.25703, 1, 0.999199, 0.798087, 0.641907, 1, 0.552793, 0.341064, 0.190397, 1, 0.428199, 0.393103, 0.309389, 1, 0, 0, 0, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_bjefl"]
gradient = SubResource("Gradient_sofnd")
[sub_resource type="Gradient" id="Gradient_csq32"]
offsets = PackedFloat32Array(0, 0.0526316, 0.165992, 0.62753, 0.647773, 0.704453, 0.731444, 1)
colors = PackedColorArray(0.0563103, 0.372397, 0.669528, 1, 0, 0, 0, 0.968627, 0.0844204, 0.319764, 0.485866, 0.796078, 0.0554195, 0.372493, 0.670199, 0.871024, 0, 0, 0, 0.933333, 0.0507, 0.237315, 0.39, 1, 0.0563103, 0.372397, 0.669528, 1, 0.0261, 0.092075, 0.29, 0.894118)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_tpaj8"]
gradient = SubResource("Gradient_csq32")
width = 1024
[sub_resource type="Gradient" id="Gradient_grftg"]
offsets = PackedFloat32Array(0.147099, 0.159244, 0.195682, 0.213225, 0.267206, 0.287449, 0.31444, 0.34143, 0.364372, 0.398111, 0.430499, 0.442645, 0.480432, 0.511471, 1)
colors = PackedColorArray(0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0.194349, 0.194349, 0.194349, 1, 0.194349, 0.194349, 0.194349, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_v43sq"]
gradient = SubResource("Gradient_grftg")
[sub_resource type="Gradient" id="Gradient_l33v1"]
offsets = PackedFloat32Array(0.022942, 0.11471, 0.2045054, 0.21741071, 0.25024083, 0.26036772, 0.438596, 0.45614, 0.473684, 0.866397, 1)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0.0820244, 0.0820244, 0.0820244, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_nnax0"]
gradient = SubResource("Gradient_l33v1")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0vobo"]
render_priority = 1
shader = SubResource("Shader_tpaj8")
shader_parameter/time = 0.0
shader_parameter/horizontal_gradient = SubResource("GradientTexture1D_tpaj8")
shader_parameter/horizontal_emission = SubResource("GradientTexture1D_bjefl")
shader_parameter/vertical_gradient = SubResource("GradientTexture1D_nnax0")
shader_parameter/vertical_emission = SubResource("GradientTexture1D_v43sq")
[sub_resource type="QuadMesh" id="QuadMesh_ppxbm"]
[sub_resource type="BoxShape3D" id="BoxShape3D_j8pin"]
size = Vector3(30.020142, 3.5859985, 3.5711975)
[sub_resource type="BoxShape3D" id="BoxShape3D_aacjs"]
size = Vector3(31.245972, 4.7752075, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_4h0n7"]
size = Vector3(16.285, 4.775, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_xhnml"]
size = Vector3(6.041, 4.775, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_5b47p"]
size = Vector3(5.908, 4.775, 1)
[sub_resource type="SphereShape3D" id="SphereShape3D_5jpg8"]
radius = 2.0
[sub_resource type="BoxShape3D" id="BoxShape3D_q8slu"]
size = Vector3(31.194, 0.8, 3.8)
[node name="TrainDolly" type="Node3D"]
script = ExtResource("1_5jpg8")
metadata/_custom_type_script = "uid://dgfje4druu3sw"
[node name="Destination" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 150)
[node name="PotemkinsFacade" type="MeshInstance3D" parent="Destination"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.2, 0, 0)
mesh = SubResource("BoxMesh_aacjs")
[node name="Origination" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -150)
[node name="Subway" type="Node3D" parent="."]
script = ExtResource("2_aacjs")
materials = Dictionary[StringName, Material]({
&"u1": ExtResource("3_j8pin"),
&"u2": ExtResource("4_3w708"),
&"u4": ExtResource("5_3x5rc"),
&"u7": ExtResource("6_ckebf"),
&"u8": ExtResource("7_dyyau")
})
metadata/_custom_type_script = "uid://cyohujvfoiof7"
[node name="WarpEffecScreen" type="MeshInstance3D" parent="Subway"]
transform = Transform3D(-4.108744e-06, 0.1808367, -2.8743172, -6.330816e-06, -2.8743172, -0.1808367, 42.01, -4.1546687e-07, -3.0837123e-07, 2.4883583, 1.286, 3.9468384)
material_override = SubResource("ShaderMaterial_0vobo")
mesh = SubResource("QuadMesh_ppxbm")
skeleton = NodePath("../Collider")
[node name="EntryDetect" type="Area3D" parent="Subway"]
unique_name_in_owner = true
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0)
[node name="InteriorTriggerShape" type="CollisionShape3D" parent="Subway/EntryDetect"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7977905, 1.3545837, -0.13719177)
shape = SubResource("BoxShape3D_j8pin")
debug_color = Color(0.7607843, 0.8117647, 0, 0.7176471)
[node name="SpotLight3D" type="SpotLight3D" parent="Subway"]
transform = Transform3D(-0.9620134, -0.0361063, -0.27060416, -2.0788793e-10, 0.9912155, -0.13225639, 0.27300233, -0.12723242, -0.9535627, -1.7471651, 0.40866053, 14.344355)
light_energy = 5.0
light_specular = 0.0
light_bake_mode = 0
distance_fade_begin = 150.0
distance_fade_length = 50.0
spot_range = 200.0
spot_attenuation = 0.2
spot_angle = 15.0
[node name="SubwayTrainAudio" type="AudioStreamPlayer3D" parent="Subway"]
unique_name_in_owner = true
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, -0.742, -11.098)
stream = ExtResource("3_4h0n7")
unit_size = 100.0
max_polyphony = 2
panning_strength = 0.7
bus = &"sfx"
playback_type = 1
[node name="SubwayTrainAudioIntense" type="AudioStreamPlayer3D" parent="Subway"]
unique_name_in_owner = true
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, -0.802, 10.908)
stream = ExtResource("3_4h0n7")
attenuation_model = 1
unit_size = 15.0
max_polyphony = 2
panning_strength = 0.9
bus = &"sfx"
playback_type = 1
[node name="TrainModel" parent="Subway" instance=ExtResource("1_2h2xx")]
unique_name_in_owner = true
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -3.4114173e-08, 0, -0.7804413)
[node name="LineLabelFront" type="Label3D" parent="Subway/TrainModel"]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -15.413577, 2.7434583, -6.737489e-07)
text = "U0"
font = ExtResource("10_3w708")
font_size = 64
[node name="LineLabelBack" type="Label3D" parent="Subway/TrainModel"]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 15.410003, 2.7434583, 6.9981036e-07)
text = "U0"
font = ExtResource("10_3w708")
font_size = 64
[node name="Collider" type="AnimatableBody3D" parent="Subway"]
unique_name_in_owner = true
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 0, 0, 0)
input_ray_pickable = false
sync_to_physics = false
[node name="FrontWallClosed" type="CollisionShape3D" parent="Subway/Collider"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8395386, 1.4940796, -1.533)
shape = SubResource("BoxShape3D_aacjs")
[node name="FrontWallOpen1" type="CollisionShape3D" parent="Subway/Collider"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8054885, 1.4940796, -1.4447353)
shape = SubResource("BoxShape3D_4h0n7")
[node name="FrontWallOpen2" type="CollisionShape3D" parent="Subway/Collider"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.442047, 1.4940796, -1.4447353)
shape = SubResource("BoxShape3D_xhnml")
[node name="FrontWallOpen3" type="CollisionShape3D" parent="Subway/Collider"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.829376, 1.4940796, -1.4447353)
shape = SubResource("BoxShape3D_5b47p")
[node name="RearWall" type="CollisionShape3D" parent="Subway/Collider"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.344, 1.457)
shape = SubResource("BoxShape3D_aacjs")
[node name="DriverCabin1" type="CollisionShape3D" parent="Subway/Collider"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.448963, 1.0697384, 0)
shape = SubResource("SphereShape3D_5jpg8")
debug_color = Color(0, 0.46666667, 0.54901963, 0.9254902)
[node name="DriverCabin2" type="CollisionShape3D" parent="Subway/Collider"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.730333, 1.0697384, 0)
shape = SubResource("SphereShape3D_5jpg8")
debug_color = Color(0, 0.46666667, 0.54901963, 0.9254902)
[node name="TrainFloor" type="CollisionShape3D" parent="Subway/Collider"]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.2, 0)
shape = SubResource("BoxShape3D_q8slu")
debug_color = Color(0.5375858, 0, 0.22143945, 1)

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
class_name TrainLine extends Resource
enum id {
NONE,
RING,
U2,
U3,
U8
}
@export var train_id: id = id.NONE
@export var destination: StringName = ""
@export var via: StringName = ""
@export var stops: Dictionary[Station, float]

View File

@ -0,0 +1 @@
uid://dfkq0djtygmma

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -41,5 +41,5 @@ process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=1024
process/size_limit=2048
detect_3d/compress_to=0

View File

@ -41,5 +41,5 @@ process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=1024
process/size_limit=2048
detect_3d/compress_to=0

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dg4cq1texkil5"
path="res://.godot/imported/FoM_xavier_therapie_1.wav-5b326af67128f51afe9b270b12a8a195.sample"
[deps]
source_file="res://base-environments/volunteer_room/scenes/FoM_xavier_therapie_1.wav"
dest_files=["res://.godot/imported/FoM_xavier_therapie_1.wav-5b326af67128f51afe9b270b12a8a195.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -4,7 +4,7 @@
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_abtq0"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_pcx8t"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_w4vem"]
[ext_resource type="AudioStream" uid="uid://cw1s2g8wg3120" path="res://base-environments/volunteer_room/sounds/FoM_xavier_unifood.wav" id="5_86ec2"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_0dsyx"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_fiu8d"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_sh3ja"]
@ -99,7 +99,7 @@ tracks/5/keys = {
[sub_resource type="Animation" id="Animation_ayw8a"]
resource_name = "de"
length = 66.0
length = 86.0
tracks/0/type = "audio"
tracks/0/imported = false
tracks/0/enabled = true
@ -108,11 +108,11 @@ tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": [{
"end_offset": 0.3525498,
"start_offset": 1.6578125,
"stream": ExtResource("5_86ec2")
"end_offset": 1.36178,
"start_offset": 0.0,
"stream": ExtResource("5_0dsyx")
}],
"times": PackedFloat32Array(2.2000003)
"times": PackedFloat32Array(1.16667)
}
tracks/0/use_blend = true
tracks/1/type = "value"
@ -122,10 +122,10 @@ tracks/1/path = NodePath("../../..:progress")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.66667, 4.73332, 6.03333, 11.6, 12.766666, 15.8333, 16.4333, 18.266666, 19.6333, 27.1, 29.8, 35.466633, 37.3, 39.933334, 41.233334, 43.800034, 45.233334, 52.833275, 53.466667, 58.166664, 59.6, 64.2),
"transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 1.23114, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.287175, 0.482968, 0.482968, 0.482968),
"times": PackedFloat32Array(0, 1.66667, 4.73332, 6.03333, 11.6, 12.4, 15.8333, 16.4333, 18.9334, 19.6333, 24.5333, 25.6, 29, 30.3667, 36.1333, 39.4, 40.8, 42.2333, 44.6333, 45.2667, 47.0333, 49.2333, 53.4333, 54.6333, 57.1333, 57.8333, 61.1333, 63.2667, 66.5667, 67.5, 72.4597, 74.5, 77.2667, 78.4667, 85.2),
"transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 1.23114, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.287175, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968),
"update": 0,
"values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0]
"values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0]
}
tracks/2/type = "method"
tracks/2/imported = false
@ -134,8 +134,8 @@ tracks/2/path = NodePath("../../..")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(18.9, 40.766666, 65.2),
"transitions": PackedFloat32Array(1, 1, 1),
"times": PackedFloat32Array(24.8, 47.87, 61.7667, 74.0333, 85.2667),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"values": [{
"args": [],
"method": &"try_scroll"
@ -144,6 +144,12 @@ tracks/2/keys = {
"method": &"try_scroll"
}, {
"args": [],
"method": &"try_scroll"
}, {
"args": [],
"method": &"try_scroll"
}, {
"args": [],
"method": &"_on_text_finished"
}]
}
@ -463,7 +469,6 @@ script = ExtResource("1_86ec2")
scene_id = 8
story_array = PackedStringArray("God I am so \"happy\" mom took care of everything at home. The dishes, the laundry, the trash, the groceries, the food.", "But guess what: when you are at university, they don\'t provide a mom with your dorm.", "And suddenly, you don\'t just need to study for your first semester, you need to learn to survive on your own. Good luck building good habits with that.", "I got really thin.", "I didn\'t really manage to eat at home, I didn\'t have the money to eat takeout all the time and oh my god:", "how do students manage to survive in a cafeteria?", "I mean: How do they manage to socialise, attend all the lectures, find relationships and even look passable with all that going on?", "Is it just me? I don\'t know.", "Who I am glad about tho is Jules. She has an eating order history and someday had enough of seeing my body crumble and decieded to basically adopt me.", "I could never really relate with her former eating discorder thoughts she was probably trying to get out of my head.", "But I can\'t argue against her coping strategies helping my body get the food it needed.")
paragraph_lengths = PackedInt32Array(1, 2, 6, 8, 10)
progress = -1.0
[node name="PanelContainer" type="PanelContainer" parent="."]
layout_mode = 2

View File

@ -4,7 +4,7 @@
[ext_resource type="Texture2D" uid="uid://d0ucjqi8tx6vt" path="res://import/interface-elements/frame.png" id="2_00crh"]
[ext_resource type="Texture2D" uid="uid://bwicl5q0lw06q" path="res://import/interface-elements/bottom.png" id="3_3iy8l"]
[ext_resource type="PackedScene" uid="uid://dvwuhobhka78d" path="res://ui/skip_control/skip_control.tscn" id="4_32a0r"]
[ext_resource type="AudioStream" uid="uid://cnhkrhtk4cirx" path="res://base-environments/volunteer_room/sounds/FoM_xavier_therapie_1.wav" id="5_x5h0q"]
[ext_resource type="AudioStream" uid="uid://dupcfwi54fpjx" path="res://base-environments/youth_room/audio/FoM_Lisa_Kindheit_Voice_Acting_deutsch_newt.wav" id="5_bfggg"]
[ext_resource type="AudioStream" uid="uid://d15ltkofdggly" path="res://base-environments/youth_room/audio/Voice-Training-Workshop.wav" id="6_hdxjv"]
[ext_resource type="Script" uid="uid://c1oub0cs7cph6" path="res://dev-util/stereo-switch.gd" id="7_xkdnh"]
@ -99,7 +99,7 @@ tracks/5/keys = {
[sub_resource type="Animation" id="Animation_ayw8a"]
resource_name = "de"
length = 92.0
length = 86.0
tracks/0/type = "audio"
tracks/0/imported = false
tracks/0/enabled = true
@ -108,11 +108,11 @@ tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"clips": [{
"end_offset": 0.0,
"start_offset": 0.3923047,
"stream": ExtResource("5_x5h0q")
"end_offset": 1.36178,
"start_offset": 0.0,
"stream": ExtResource("5_bfggg")
}],
"times": PackedFloat32Array(1.9333333)
"times": PackedFloat32Array(1.16667)
}
tracks/0/use_blend = true
tracks/1/type = "value"
@ -122,10 +122,10 @@ tracks/1/path = NodePath("../../..:progress")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.66667, 4.73332, 7.0333333, 11.6, 13.033334, 17.433332, 19.166666, 26.733334, 27.933332, 29.733202, 30.799902, 34.1999, 35.5666, 39.866665, 41.3, 46.400066, 47.833366, 52.1666, 52.8, 55.1667, 56.5, 59.033333, 60.233334, 64.9, 66.86667, 67.26674, 69.40013, 73.6, 75.46662, 78.46667, 79.4, 87.9),
"transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 1.23114, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.287175, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968),
"times": PackedFloat32Array(0, 1.66667, 4.73332, 6.03333, 11.6, 12.4, 15.8333, 16.4333, 18.9334, 19.6333, 24.5333, 25.6, 29, 30.3667, 36.1333, 39.4, 40.8, 42.2333, 44.6333, 45.2667, 47.0333, 49.2333, 53.4333, 54.6333, 57.1333, 57.8333, 61.1333, 63.2667, 66.5667, 67.5, 72.4597, 74.5, 77.2667, 78.4667, 85.2),
"transitions": PackedFloat32Array(1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 0.482968, 1, 1.23114, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.287175, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968, 0.482968),
"update": 0,
"values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0]
"values": [0.0, 0.0, 1.0, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0, 6.0, 7.0, 7.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 11.0, 11.0, 12.0, 12.0, 13.0, 13.0, 14.0, 14.0, 15.0, 15.0, 16.0, 16.0, 17.0]
}
tracks/2/type = "method"
tracks/2/imported = false
@ -134,7 +134,7 @@ tracks/2/path = NodePath("../../..")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(18.166666, 49.3, 59.666668, 74.76667, 91.63333),
"times": PackedFloat32Array(24.8, 47.87, 61.7667, 74.0333, 85.2667),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"values": [{
"args": [],
@ -469,7 +469,6 @@ script = ExtResource("1_ym0sv")
scene_id = 6
story_array = PackedStringArray("I sometimes wish I could go back in time to save myself from Lukas.", "Sometimes I even want to fight him one last time to make him feel how much he hurt me.", "I don\'t like these thoughts, because all they do is make my head spiral into an endless void of anger and doubt.", "So on a calm mind, I just hope he learned his lesson so his next love doesn\'t need to become a survivor.", "But do I regret being one?", "I mean it has made me go to therapy and that was a good thing.", "My therapist was pretty young and still in training.", "Talking to *him* about sex never really worked for me.", "So I still don\'t know what to do about my cravings. I\'d rather not have them but I can\'t deny they exist.", "At least he gave me the tools to figure it out on my own.", "Old thoughts are here to stay, he always said. But you can choose how to react.", "And while I choose to not react to my cravings for now, I can choose something different in the future.", "He also helped me manage the gauntlet that is an ADHD diagnosis. I suspect I wouldn\'t have the executive skills to get that on my own.", "So I guess I got my medication thanks to Lukas?", "And I can tell when to brace for my period because the weird urge to make my ex hit some very hard ground is quite specific.")
paragraph_lengths = PackedInt32Array(2, 3, 4, 5, 8, 11, 12, 14)
progress = -1.0
[node name="PanelContainer" type="PanelContainer" parent="."]
layout_mode = 2

View File

@ -0,0 +1,54 @@
extends RoomTemplate
@onready var card_picker: CardPicker = %Picker
@onready var player: PlayerController = %PlayerController
func _ready():
super._ready()
id = State.rooms.ADULTHOOD
func get_ready() -> void:
super.get_ready()
Scenes.scene_finished.connect(_on_scene_finished)
card_picker.cards_picked.connect(card_board.populate_board)
save_game = State.save_game
save_game.current_room = State.rooms.ADULTHOOD
Scenes.completed_sequences = save_game.mementos_complete
Scenes.started_sequences = save_game.mementos_complete
Scenes.enabled_sequences = save_game.sequences_enabled
#FIXME: fix the bloddy card board loading algorythm
#card_board.initialise_from_save(save_game)
card_board.board_completed.connect(func():
#TODO: hook in ending
save_room()
)
func start_room():
super.start_room()
%UI.show()
%PlayerController.process_mode = Node.PROCESS_MODE_INHERIT
# Give player control immediately, then open
Scenes.player_enable.emit(true)
await Main.curtain.open()
func _on_scene_finished(_id: int, _repeat:bool):
await get_tree().create_timer(3).timeout
save_room()
func save_room():
# Update board state before saving
card_board.save_to_resource(save_game)
save_game.mementos_complete = Scenes.completed_sequences
save_game.sequences_enabled = Scenes.enabled_sequences
super.save_room()
func prepare_transition():
pass
func unload():
pass

Binary file not shown.

View File

@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://datmg48duktt1"
path="res://.godot/imported/FoM_xavier_DnD.wav-a689cfa18e7eb4ed0e110e9622a5b653.sample"
[deps]
source_file="res://base-environments/volunteer_room/sounds/FoM_xavier_DnD.wav"
dest_files=["res://.godot/imported/FoM_xavier_DnD.wav-a689cfa18e7eb4ed0e110e9622a5b653.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -1,34 +0,0 @@
extends RoomWithBoard
class_name VolunteerRoom
func _ready() -> void:
super._ready() # UwU, superclass _ready is not called by Godot automatically...
prints("volunteer_room.gd", "_ready()", self)
func get_ready_async() -> void:
await super.get_ready_async()
%TherapyVoluntaryInteractable.visible = not save_game.subway_burnout
%TherapyUniInteractable.visible = save_game.subway_burnout
card_board.board_completed.connect(func():
save_game.childhood_board_complete = true
#%DoorInteractable.show()
)
func start_room_async():
await super.start_room_async()
# Give player control immediately, then open
%PlayerController.process_mode = Node.PROCESS_MODE_INHERIT
Scenes.player_enable.emit(true)
await Main.curtain.open()
func prepare_transition():
pass
func unload():
pass

View File

@ -1,7 +1,7 @@
[gd_scene load_steps=49 format=3 uid="uid://flisupth27th"]
[ext_resource type="PackedScene" uid="uid://dwbhei5kywqbd" path="res://volunteer_room_visuals.tscn" id="1_ln5pp"]
[ext_resource type="Script" uid="uid://wiw2j1gw230e" path="res://base-environments/volunteer_room/volunteer_room.gd" id="1_wdfvq"]
[ext_resource type="Script" uid="uid://wiw2j1gw230e" path="res://base-environments/volunteer_room/shared_flat.gd" id="1_wdfvq"]
[ext_resource type="PackedScene" uid="uid://mkccbig41bqb" path="res://logic-scenes/player_controller/player_controller.tscn" id="2_upyac"]
[ext_resource type="Script" uid="uid://c281w7earok6w" path="res://base-environments/youth_room/crouch_volume.gd" id="3_fli74"]
[ext_resource type="PackedScene" uid="uid://dreokijo757l1" path="res://logic-scenes/interactable/interactable.tscn" id="5_my8p4"]
@ -201,14 +201,11 @@ func _on_environment_settings_update():
[node name="SharedFlat" type="Node3D"]
script = ExtResource("1_wdfvq")
id = 3
[node name="PlayerController" parent="." instance=ExtResource("2_upyac")]
unique_name_in_owner = true
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2.2023005, 0, 0.7319784)
[node name="Camera3D" parent="PlayerController/Yaw/Pitch/Mount" index="0"]
transform = Transform3D(1, 0, 0, 0, 1.0000006, 0, 0, 0, 1.0000006, 0, 0.202, 0.157)
initial_pitch = 0.0
[node name="volunteer_room" parent="." instance=ExtResource("1_ln5pp")]
@ -229,58 +226,53 @@ shape = SubResource("CapsuleShape3D_2fihi")
[node name="Collectables" type="Node3D" parent="."]
[node name="KitchenInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
transform = Transform3D(0.999999, 0, 0, 0, 1, 0, 0, 0, 0.999999, 0.8310573, 1.0068259, -2.7083611)
transform = Transform3D(-0.999999, 0, 8.742269e-08, 0, 1, 0, -8.742269e-08, 0, -0.999999, 3.46201, 1.8257881, -4.097006)
interaction = ExtResource("12_6rb4d")
[node name="BurnoutInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
transform = Transform3D(0.32358676, 0, -0.94619733, 0, 1, 0, 0.94619733, 0, 0.32358676, -2.1812932, 0.8092947, 5.313688)
transform = Transform3D(1.3113409e-07, 0, 0.999999, 0, 1, 0, -0.999999, 0, 1.3113409e-07, -2.1812932, 0.8092947, 5.313688)
interaction = ExtResource("11_kmoh8")
[node name="DiceInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
transform = Transform3D(0.7071059, 0, -0.7071061, 0, 1, 0, 0.7071061, 0, 0.7071059, -2.07945, 0.5828748, 3.3940656)
transform = Transform3D(-0.70710593, 0, 0.70710605, 0, 1, 0, -0.70710605, 0, -0.70710593, -2.07945, 0.5828748, 3.3940656)
interaction = ExtResource("16_e1uao")
[node name="VoluntaryInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
transform = Transform3D(-4.3711346e-08, 0, 0.999999, 0, 1, 0, -0.999999, 0, -4.3711346e-08, 0.36332494, 1.2541859, 4.9624853)
transform = Transform3D(-4.3711392e-08, 0, -0.999999, 0, 1, 0, 0.999999, 0, -4.3711392e-08, 0.36332494, 1.2541859, 4.9624853)
interaction = ExtResource("17_my8p4")
billboard = false
[node name="TherapyVoluntaryInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
unique_name_in_owner = true
transform = Transform3D(0.999999, 0, 0, 0, 1, 0, 0, 0, 0.999999, 0.399901, 1.21835, 1.29166)
transform = Transform3D(-0.999999, 0, 8.742269e-08, 0, 1, 0, -8.742269e-08, 0, -0.999999, 0.399901, 1.21835, 1.29166)
interaction = ExtResource("15_ci4rn")
billboard = false
[node name="TherapyUniInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
unique_name_in_owner = true
transform = Transform3D(0.999999, 0, 0, 0, 1, 0, 0, 0, 0.999999, 0.399901, 1.21835, 1.29166)
transform = Transform3D(-0.999999, 0, 8.742269e-08, 0, 1, 0, -8.742269e-08, 0, -0.999999, 0.399901, 1.21835, 1.29166)
interaction = ExtResource("14_upyac")
billboard = false
[node name="UniversityInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
transform = Transform3D(-4.371135e-08, 0, -0.9999991, 0, 1, 0, 0.9999991, 0, -4.371135e-08, -2.7745893, 1.4022808, -3.0279322)
transform = Transform3D(-4.371135e-08, 0, 0.9999991, 0, 1, 0, -0.9999991, 0, -4.371135e-08, -2.7745893, 1.593935, -3.0279322)
interaction = ExtResource("13_5s6pb")
billboard = false
[node name="OldThougtsInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
transform = Transform3D(-4.3711346e-08, 0, -0.999999, 0, 1, 0, 0.999999, 0, -4.3711346e-08, -2.40979, 0.41340256, 0.403546)
transform = Transform3D(1.3113399e-07, 0, 0.999999, 0, 1, 0, -0.999999, 0, 1.3113399e-07, -2.40979, 0.41340256, 0.403546)
interaction = ExtResource("17_my8p4")
[node name="AutismInteractable" parent="Collectables" instance=ExtResource("5_my8p4")]
transform = Transform3D(-0.75470823, 0, -0.65605795, 0, 1, 0, 0.65605795, 0, -0.75470823, -1.8407239, 1.0439266, -3.8908288)
transform = Transform3D(0.49999908, 0, 0.86602396, 0, 1, 0, -0.86602396, 0, 0.49999908, -1.8407239, 1.0439266, -3.8908288)
interaction = ExtResource("10_gcdra")
[node name="Board" parent="Collectables" instance=ExtResource("5_my8p4")]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, -2.7652016, 1.2894461, 4.522677)
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.6904116, 1.240494, 4.441236)
interaction = ExtResource("19_ci4rn")
billboard = false
[node name="DoorInteractable" type="Node3D" parent="Collectables"]
unique_name_in_owner = true
[node name="VoxelGI" type="VoxelGI" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.08276367, 1.3269348, 0.09955597)
size = Vector3(6.132324, 2.9212036, 12.147232)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.08276367, 1.3269348, 0.05317688)
size = Vector3(6.132324, 2.9212036, 12.054474)
data = ExtResource("8_fli74")
[node name="Collision" type="Node3D" parent="."]
@ -382,7 +374,7 @@ shape = SubResource("BoxShape3D_2ixm0")
[node name="Scenes" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.4831846, 0, 2.44453)
[node name="SceneAnimationPlayer" type="AnimationPlayer" parent="Scenes"]
[node name="ScenePlayer" type="AnimationPlayer" parent="Scenes"]
unique_name_in_owner = true
libraries = {
&"": SubResource("AnimationLibrary_br20t")
@ -414,5 +406,3 @@ script = SubResource("GDScript_ri8p0")
environment = SubResource("Environment_pdgua")
camera_attributes = SubResource("CameraAttributesPractical_0bxa6")
script = SubResource("GDScript_3k3rl")
[editable path="PlayerController"]

View File

@ -26,5 +26,5 @@ func scene_finished(_id: Scenes.id, _repeat: bool):
queue("RESET")
func play(anin_name: StringName = "", a: float = -1, b: float = 1, c: bool = false) -> void:
print("anim player accessed!")
print_debug("anim player accessed!")
super.play(anin_name, a, b, c)

View File

@ -21,4 +21,4 @@ edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
compress/mode=0

View File

@ -21,4 +21,4 @@ edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
compress/mode=0

View File

@ -21,4 +21,4 @@ edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
compress/mode=0

View File

@ -21,4 +21,4 @@ edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2
compress/mode=0

View File

@ -1,11 +1,50 @@
[gd_scene load_steps=9 format=3 uid="uid://cg70r0102t8nl"]
[ext_resource type="Script" uid="uid://d2lwghq7ye7ng" path="res://base-environments/youth_room/fairylights_animation_player.gd" id="1_mdd6t"]
[ext_resource type="Texture2D" uid="uid://i75aktvgsdwg" path="res://base-environments/youth_room/import/textures/wires_normal.png" id="1_p3lcj"]
[ext_resource type="Texture2D" uid="uid://chisldkpt6bf5" path="res://base-environments/youth_room/import/textures/wires_albedo.png" id="1_xsr58"]
[ext_resource type="Script" uid="uid://f26vfrf8n4l" path="res://addons/LineRenderer/line_renderer.gd" id="2_javfj"]
[ext_resource type="ArrayMesh" uid="uid://f5fr2e5gq313" path="res://base-environments/youth_room/shaders/fairy_light_diode.res" id="4_qh8yy"]
[sub_resource type="GDScript" id="GDScript_2caij"]
script/source = "
extends Node3D
@export var light_array: Array[Vector3]:
set(points):
light_array = points
if is_inside_tree():
rebuild()
@onready var wires:LineRenderer3D = $wires
@onready var diodes:MultiMeshInstance3D = $diodes
@export var rng_seed:int = 42
var rng = RandomNumberGenerator.new()
@export var size:float = 0.1:
set(new_size):
size = new_size
rebuild()
if is_inside_tree():
wires.end_thickness = size*0.1
wires.start_thickness = size*0.1
# Called when the node enters the scene tree for the first time.
func _ready():
rebuild()
func rebuild():
rng.seed = rng_seed
rng.state = 0
for child in wires.get_children(): child.free()
wires.points = light_array
diodes.multimesh.instance_count = light_array.size()
var meshBuffer:PackedFloat32Array
for point in light_array:
var base:Basis = Basis(Vector3(rng.randf_range(-1, 1), rng.randf_range(-1, 1), rng.randf_range(-1, 1)).normalized(), rng.randf_range(0, PI*2))
base = base.scaled(Vector3(size, size, size))
meshBuffer.append_array([base.x.x, base.x.y, base.x.z, point.x, base.y.x, base.y.y, base.y.z, point.y, base.z.x, base.z.y, base.z.z, point.z])
diodes.multimesh.buffer = meshBuffer
"
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5ca5e"]
transparency = 2
alpha_scissor_threshold = 0.5
@ -16,7 +55,7 @@ albedo_texture = ExtResource("1_xsr58")
normal_enabled = true
normal_texture = ExtResource("1_p3lcj")
[sub_resource type="ImmediateMesh" id="ImmediateMesh_hnqbx"]
[sub_resource type="ImmediateMesh" id="ImmediateMesh_30v5y"]
[sub_resource type="MultiMesh" id="MultiMesh_ic3h7"]
transform_format = 1
@ -25,13 +64,13 @@ mesh = ExtResource("4_qh8yy")
buffer = PackedFloat32Array(0.09981685, 0.0048210253, -0.0036542376, -0.545, -0.004285584, 0.09898752, 0.013531633, 0.915, 0.0042696027, -0.013350244, 0.09901284, 1.035, 0.07000746, -0.035884943, 0.061735135, -0.47, 0.052533384, 0.084440574, -0.010489702, 0.855, -0.048365276, 0.03977513, 0.077966265, 0.905, 0.004258701, 0.09203124, -0.038885914, -0.44, -0.0057153255, 0.039081898, 0.09186915, 0.871, 0.09974567, -0.0016899735, 0.00692427, 0.78, 0.021999925, -0.08708059, -0.0439656, -0.385, 0.08009742, 0.041850984, -0.042812362, 0.91, 0.055681296, -0.025796626, 0.0789565, 0.69, 0.09233354, 0.028834114, -0.025359664, -0.38, -0.035966184, 0.08807498, -0.0308096, 0.995, 0.013451844, 0.0375685, 0.091693275, 0.595, 0.041037153, 0.023612177, 0.08808186, -0.39, -0.08183642, -0.033079606, 0.0469951, 0.925, 0.040233698, -0.091368504, 0.005748424, 0.465, 0.096389726, 0.024975834, -0.009231994, -0.364, -0.025152955, 0.09678175, -0.0007887144, 0.86, 0.008737898, 0.0030823578, 0.09956982, 0.211, 0.09051618, -0.035352834, 0.023600822, -0.295, 0.009805123, 0.07139074, 0.06933414, 0.82, -0.04136038, -0.060444523, 0.06808656, 0.06, 0.099969886, -0.00044002375, 0.0024142524, -0.255, 0.00037742994, 0.099965714, 0.0025912046, 0.805, -0.0024248264, -0.0025813123, 0.09993727, -0.15, 0.06669522, -0.074469164, 0.002468294, -0.175, 0.066979624, 0.061372936, 0.04179824, 0.83, -0.03264166, -0.026224172, 0.090811975, -0.355, 0.008275211, 0.052801844, -0.08451915, -0.135, 0.09518374, -0.029311886, -0.008992719, 0.955, -0.029522488, -0.07970432, -0.052684378, -0.515, 0.09839882, -0.010216827, 0.014604448, -0.025, 0.0064255283, 0.09676424, 0.024400702, 0.78, -0.01662486, -0.023071585, 0.09587135, -0.615, -0.034177337, -0.07165746, -0.06080394, 0.115, 0.014493376, 0.059907008, -0.07874703, 0.63, 0.092853926, -0.035726182, -0.010089032, -0.695, -0.023289097, -0.071124874, 0.06632399, 0.245, 0.07954721, -0.053165104, -0.02908116, 0.555, 0.055945147, 0.045986135, 0.06895951, -0.745, -0.05999255, -0.025455302, -0.07584802, 0.37, -0.07084022, 0.060961187, 0.03557245, 0.595, 0.03718277, 0.07507172, -0.054604758, -0.805, 0.010777453, 0.09121187, 0.03955051, 0.455, 0.027344523, -0.04096749, 0.08702841, 0.745, 0.09558308, 0.0014354527, -0.029356688, -0.84, 0.0745873, 0.007008575, -0.06623908, 0.505, -0.03662421, 0.08737851, -0.03199474, 0.89, 0.055636343, 0.048123557, 0.067740105, -0.87, -0.052477725, -0.040816348, -0.07470016, 0.445, -0.07717951, -0.014203754, 0.061980464, 1.175, -0.035908382, 0.090179145, -0.024048049, -0.87, 0.065261625, -0.074675135, 0.012827498, 0.26, -0.071961984, -0.06638678, -0.020353615, 1.28, 0.023714853, 0.004052181, -0.0970628, -0.815, 0.04776166, -0.086053446, 0.017709581, 0.125, -0.045023393, -0.0066644074, 0.08904202, 1.35, -0.075443484, -0.050501395, -0.04192721, -0.8, 0.05265527, -0.07790997, -0.034021474, -0.037, -0.057078417, -0.0027407527, -0.08206426, 1.479, 0.06300379, 0.06263008, -0.04591292, -0.834, 0.07262851, 0.053707976, 0.042901676, -0.2, -0.03499957, 0.082609534, -0.044166677, 1.601, -0.0591619, 0.017062197, 0.07879563, -0.851, 0.058154207, 0.02977618, -0.07570646, -0.359, -0.046415366, 0.0885717, -0.00081792625, 1.769, 0.06681094, 0.035615087, 0.06532889, -0.85, 0.08759906, -0.04253812, 0.022735743, -0.5, 0.033643764, 0.0876653, 0.034393217, 1.949, -0.034561586, -0.022478973, 0.091105394, -0.85, 0.09468309, -0.029932225, -0.011797212, -0.594, 0.019968888, 0.025923345, 0.09449457, 2.126, -0.0252261, -0.09182615, 0.030522157, -0.85, 0.062641285, -0.07662324, 0.014316082, -0.634, 0.07794788, 0.0616799, -0.010941619, 2.238, -0.0004463233, 0.01801305, 0.098363265, -0.85, 0.051075388, -0.039760582, 0.07622598, -0.634, -0.015580878, 0.0829139, 0.053689104, 2.035, -0.08454904, -0.0392986, 0.03615355, -0.85, -0.055891007, -0.07219604, -0.040791273, -0.614, -0.07006708, 0.014808285, 0.06979484, 1.875, -0.044348616, 0.06759029, -0.058862157, -0.85, -0.05453172, 0.05173852, -0.06595012, -0.65, 0.038997572, 0.085303895, 0.034676112, 1.655, 0.07419893, -0.006809469, -0.06669445, -0.85, 0.08583314, 0.043052655, -0.027913136, -0.65, 0.030251084, -0.0864024, -0.04024298, 1.475, -0.04144329, 0.026097784, -0.08718578, -0.87)
[node name="fairylights" type="Node3D"]
script = ExtResource("1_mdd6t")
script = SubResource("GDScript_2caij")
light_array = Array[Vector3]([Vector3(0, 0, 0), Vector3(0, 1, 0)])
[node name="wires" type="MeshInstance3D" parent="."]
material_override = SubResource("StandardMaterial3D_5ca5e")
gi_mode = 0
mesh = SubResource("ImmediateMesh_hnqbx")
mesh = SubResource("ImmediateMesh_30v5y")
script = ExtResource("2_javfj")
points = Array[Vector3]([Vector3(0, 0, 0), Vector3(0, 1, 0)])
start_thickness = 0.01

View File

@ -1,37 +0,0 @@
extends Node3D
@export var light_array: Array[Vector3]:
set(points):
light_array = points
if is_inside_tree():
rebuild()
@onready var wires:LineRenderer3D = $wires
@onready var diodes:MultiMeshInstance3D = $diodes
@export var rng_seed:int = 42
var rng = RandomNumberGenerator.new()
@export var size:float = 0.1:
set(new_size):
size = new_size
rebuild()
if is_inside_tree():
wires.end_thickness = size*0.1
wires.start_thickness = size*0.1
# Called when the node enters the scene tree for the first time.
func _ready():
rebuild()
func rebuild():
rng.seed = rng_seed
rng.state = 0
for child in wires.get_children(): child.free()
wires.points = light_array
diodes.multimesh.instance_count = light_array.size()
var meshBuffer:PackedFloat32Array
for point in light_array:
var base:Basis = Basis(Vector3(rng.randf_range(-1, 1), rng.randf_range(-1, 1), rng.randf_range(-1, 1)).normalized(), rng.randf_range(0, PI*2))
base = base.scaled(Vector3(size, size, size))
meshBuffer.append_array([base.x.x, base.x.y, base.x.z, point.x, base.y.x, base.y.y, base.y.z, point.y, base.z.x, base.z.y, base.z.z, point.z])
diodes.multimesh.buffer = meshBuffer

View File

@ -1 +0,0 @@
uid://d2lwghq7ye7ng

View File

@ -1,4 +1,4 @@
[gd_resource type="ShaderMaterial" load_steps=5 format=3 uid="uid://ct7uc5i5yp5qf"]
[gd_resource type="ShaderMaterial" format=3 uid="uid://ct7uc5i5yp5qf"]
[ext_resource type="Texture2D" uid="uid://c61ekclk8loxn" path="res://base-environments/youth_room/import/textures/red_plaster_weathered_rough_4k.png" id="1_2nxvx"]
[ext_resource type="Texture2D" uid="uid://kf0vfm4sf0o3" path="res://base-environments/youth_room/import/textures/red_plaster_weathered_nor_gl_4k.png" id="2_80i0p"]

Some files were not shown because too many files have changed in this diff Show More