wip: Trains, lighting, and station dollies.

This commit is contained in:
tiger tiger tiger 2026-01-20 12:09:04 +01:00
parent 489241f5db
commit 7e74639207
14 changed files with 155 additions and 73 deletions

View File

@ -0,0 +1,4 @@
## A dolly tweens all contents to and from two destination points
class_name Dolly
extends Node3D

View File

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

View File

@ -1 +0,0 @@
extends Node3D

View File

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

View File

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

View File

@ -1,18 +0,0 @@
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

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

View File

@ -1 +0,0 @@
extends Node3D

View File

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

View File

@ -1,10 +1,10 @@
[gd_scene load_steps=58 format=3 uid="uid://fgp3tbah7msy"]
[gd_scene load_steps=59 format=3 uid="uid://fgp3tbah7msy"]
[ext_resource type="Script" uid="uid://snugj1gnggjj" path="res://base-environments/transition/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="PackedScene" uid="uid://4j1tlhfm3p40" path="res://base-environments/transition/subway_train.tscn" id="3_iq74k"]
[ext_resource type="Script" uid="uid://vdp63n8e2ey7" path="res://base-environments/transition/station_dolly.gd" id="4_biibr"]
[ext_resource type="PackedScene" uid="uid://d2j0d88axhfue" path="res://base-environments/transition/stations/dungeon_station.tscn" id="5_rum2v"]
[ext_resource type="Script" uid="uid://dgfje4druu3sw" path="res://base-environments/transition/code/dolly.gd" id="5_yfan7"]
[ext_resource type="VoxelGIData" uid="uid://d0ywd1vewvryc" path="res://base-environments/transition/vfx/dungeon_VoxelGI.res" id="6_ii0j1"]
[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"]
@ -16,6 +16,7 @@
[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="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="CapsuleShape3D" id="CapsuleShape3D_sofnd"]
radius = 1.8393555
@ -132,10 +133,7 @@ size = Vector3(0.5, 3, 5.547009)
size = Vector3(0.5661621, 3, 1.411961)
[sub_resource type="ViewportTexture" id="ViewportTexture_rkl48"]
viewport_path = NodePath("Stations/StationDolly/SubwayMap3D/SubViewport")
[sub_resource type="ViewportTexture" id="ViewportTexture_yfan7"]
viewport_path = NodePath("Stations/StationDolly/SubwayMap3D/SubViewport")
viewport_path = NodePath("Stations/StationDolly/SubwayMap3D/MapViewport")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_il5go"]
resource_local_to_scene = true
@ -148,7 +146,12 @@ emission_enabled = true
emission = Color(1, 1, 1, 1)
emission_energy_multiplier = 0.1
emission_operator = 1
emission_texture = SubResource("ViewportTexture_yfan7")
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="QuadMesh" id="QuadMesh_iq74k"]
material = SubResource("StandardMaterial3D_il5go")
@ -277,24 +280,10 @@ transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, -0.4
shape = SubResource("CapsuleShape3D_sofnd")
[node name="Train" type="Node3D" parent="."]
visible = false
[node name="Visuals" type="Node3D" parent="Train"]
[node name="Train" type="Node3D" parent="Train/Visuals"]
unique_name_in_owner = true
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 6.2404795, 0, -33.053352)
visible = false
[node name="subway_train" parent="Train/Visuals/Train" instance=ExtResource("3_iq74k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7804413, 0, 0)
[node name="MeshInstance3D8" type="MeshInstance3D" parent="Train/Visuals/Train"]
transform = Transform3D(-42.01, 4.0756225e-07, 4.3401164e-07, -6.330816e-06, -2.8743172, -0.1808367, -5.9450595e-06, 0.1808367, -2.8743172, -3.9468384, 1.286, 2.488358)
visible = false
material_override = SubResource("ShaderMaterial_0vobo")
mesh = SubResource("QuadMesh_ppxbm")
skeleton = NodePath("../../../GPUParticles3D4")
[node name="Train2" type="Node3D" parent="Train/Visuals"]
unique_name_in_owner = true
transform = Transform3D(1.3113416e-07, 0, 1, 0, 1, 0, -1, 0, 1.3113416e-07, -6.24, 0, -31.131655)
@ -554,25 +543,31 @@ shape = SubResource("BoxShape3D_e75no")
transform = Transform3D(-2.1855693e-07, 0, -1, 0, 1, 0, 1, 0, -2.1855693e-07, -7.211279, 1.558737, -24.056223)
shape = SubResource("BoxShape3D_e75no")
[node name="Track1Dolly" parent="." instance=ExtResource("17_yfan7")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, -0.2, -32.5)
[node name="Track2Dolly" parent="." instance=ExtResource("17_yfan7")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.5, -0.2, -32.5)
[node name="Stations" type="Node3D" parent="."]
unique_name_in_owner = true
[node name="StationDolly" type="Node3D" parent="Stations"]
unique_name_in_owner = true
script = ExtResource("4_biibr")
script = ExtResource("5_yfan7")
[node name="SubwayMap3D" type="Node3D" parent="Stations/StationDolly"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.409, -22.624)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, -22.624)
[node name="MapPanel1" type="MeshInstance3D" parent="Stations/StationDolly/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_iq74k")
skeleton = NodePath("")
mesh = SubResource("QuadMesh_rkl48")
[node name="MapPanel2" type="MeshInstance3D" parent="Stations/StationDolly/SubwayMap3D"]
transform = Transform3D(-6.389512e-08, 0, 1.46175, 0, 1.46175, 0, -1.46175, 0, -6.389512e-08, 0, 0, 0)
transform = Transform3D(-6.389512e-08, 0, -1.46175, 0, 1.46175, 0, 1.46175, 0, -6.389512e-08, 0, 0, 0)
mesh = SubResource("QuadMesh_iq74k")
skeleton = NodePath("")
[node name="Stand" type="MeshInstance3D" parent="Stations/StationDolly/SubwayMap3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.15, 0)
@ -592,51 +587,51 @@ transform = Transform3D(1, 0, -7.1054274e-15, 0, 1, 0, 7.1054274e-15, 0, 1, 0, 0
operation = 2
mesh = SubResource("BoxMesh_symoa")
[node name="SubViewport" type="SubViewport" parent="Stations/StationDolly/SubwayMap3D"]
[node name="MapViewport" type="SubViewport" parent="Stations/StationDolly/SubwayMap3D"]
disable_3d = true
size = Vector2i(2896, 2048)
render_target_update_mode = 4
[node name="SubwayMap" parent="Stations/StationDolly/SubwayMap3D/SubViewport" instance=ExtResource("8_rcbu2")]
[node name="SubwayMap" parent="Stations/StationDolly/SubwayMap3D/MapViewport" instance=ExtResource("8_rcbu2")]
unique_name_in_owner = true
[node name="dungeon_station" parent="Stations/StationDolly" instance=ExtResource("5_rum2v")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.020572662, -0.05047989, -0.018362045)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.021, 0, -0.018)
[node name="VoxelGI" type="VoxelGI" parent="Stations/StationDolly/dungeon_station"]
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)
size = Vector3(11, 3.75, 84)
data = ExtResource("6_ii0j1")
[node name="HidenStations" type="Node3D" parent="Stations"]
[node name="HiddenStations" type="Node3D" parent="Stations"]
visible = false
[node name="uni_station" parent="Stations/HidenStations" instance=ExtResource("9_bdj4u")]
[node name="uni_station" parent="Stations/HiddenStations" instance=ExtResource("9_bdj4u")]
unique_name_in_owner = true
[node name="VoxelGI" type="VoxelGI" parent="Stations/HidenStations/uni_station"]
[node name="VoxelGI" type="VoxelGI" parent="Stations/HiddenStations/uni_station"]
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("10_j1yes")
[node name="burnout_station" parent="Stations/HidenStations" instance=ExtResource("11_vomua")]
[node name="burnout_station" parent="Stations/HiddenStations" instance=ExtResource("11_vomua")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.2, 0, 0, 0)
[node name="VoxelGI" type="VoxelGI" parent="Stations/HidenStations/burnout_station"]
[node name="VoxelGI" type="VoxelGI" parent="Stations/HiddenStations/burnout_station"]
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("12_jwt33")
[node name="volunteer_station" parent="Stations/HidenStations" instance=ExtResource("13_265nv")]
[node name="volunteer_station" parent="Stations/HiddenStations" instance=ExtResource("13_265nv")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1.3, 0, 0, 0)
[node name="VoxelGI" type="VoxelGI" parent="Stations/HidenStations/volunteer_station"]
[node name="VoxelGI" type="VoxelGI" parent="Stations/HiddenStations/volunteer_station"]
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)

View File

@ -0,0 +1,98 @@
[gd_scene load_steps=14 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"]
[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"]
[node name="TrainDolly" type="Node3D"]
script = ExtResource("1_5jpg8")
[node name="West" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 130)
[node name="East" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -130)
[node name="Train" type="Node3D" parent="."]
transform = Transform3D(-4.371139e-08, 0, -1, 0, 1, 0, 1, 0, -4.371139e-08, 0, 0, 0)
[node name="subway_train" parent="Train" instance=ExtResource("1_2h2xx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7804413, 0, 0)
[node name="MeshInstance3D8" type="MeshInstance3D" parent="Train"]
transform = Transform3D(-42.01, 4.0756225e-07, 4.3401164e-07, -6.330816e-06, -2.8743172, -0.1808367, -5.9450595e-06, 0.1808367, -2.8743172, -3.9468384, 1.286, 2.488358)
visible = false
material_override = SubResource("ShaderMaterial_0vobo")
mesh = SubResource("QuadMesh_ppxbm")
skeleton = NodePath("../../../GPUParticles3D4")

View File

@ -112,6 +112,7 @@ script = ExtResource("2_skiem")
[node name="traun_hull" parent="." index="0"]
layers = 4
gi_mode = 2
surface_material_override/0 = SubResource("StandardMaterial3D_8e51f")
[node name="ApoyaCristalesLateralesPared3_LP_004_LateralesInteriores_0_001" parent="traun_hull" index="0"]
@ -294,12 +295,14 @@ libraries = {
[node name="VoxelGI" type="VoxelGI" parent="." index="2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.3, 0)
layers = 4
size = Vector3(31.904, 3.5, 4)
subdiv = 0
size = Vector3(35, 3.5, 5)
data = ExtResource("5_q0ort")
[node name="SpotLight3D" type="SpotLight3D" parent="." index="3"]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -2.853415, 2.8072855, -1.2271035e-07)
visible = false
layers = 4
spot_range = 4.0
spot_angle = 89.23
spot_angle_attenuation = 0.53588676
@ -307,6 +310,7 @@ spot_angle_attenuation = 0.53588676
[node name="SpotLight3D2" type="SpotLight3D" parent="." index="4"]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -11.853415, 2.8072855, -1.2271035e-07)
visible = false
layers = 4
spot_range = 4.0
spot_angle = 89.23
spot_angle_attenuation = 0.53588676
@ -314,6 +318,7 @@ spot_angle_attenuation = 0.53588676
[node name="SpotLight3D3" type="SpotLight3D" parent="." index="5"]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -7.3087215, 2.8072855, -1.2271035e-07)
visible = false
layers = 4
spot_range = 4.0
spot_angle = 89.23
spot_angle_attenuation = 0.53588676
@ -321,6 +326,7 @@ spot_angle_attenuation = 0.53588676
[node name="SpotLight3D4" type="SpotLight3D" parent="." index="6"]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 12.146585, 2.8072855, -1.2271035e-07)
visible = false
layers = 4
spot_range = 4.0
spot_angle = 89.23
spot_angle_attenuation = 0.53588676
@ -328,6 +334,7 @@ spot_angle_attenuation = 0.53588676
[node name="SpotLight3D5" type="SpotLight3D" parent="." index="7"]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 3.1465855, 2.8072855, -1.2271035e-07)
visible = false
layers = 4
spot_range = 4.0
spot_angle = 89.23
spot_angle_attenuation = 0.53588676
@ -335,6 +342,7 @@ spot_angle_attenuation = 0.53588676
[node name="SpotLight3D6" type="SpotLight3D" parent="." index="8"]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 6.7337255, 2.8072855, -1.2271035e-07)
visible = false
layers = 4
spot_range = 4.0
spot_angle = 89.23
spot_angle_attenuation = 0.53588676

File diff suppressed because one or more lines are too long