Quality Gate / Quality Gate (pull_request) Successful in 9m4s
Instance twelve Blender-scripted glTF models in the cockpit scene and rebuild the cabin around them: gauge panel, sonar, switch panel, alert box, speaker, porthole, hull wall, caged lamps, gas bottle, handrails and side consoles. Presentation only; no domain, application or world rule changes beyond enabling glow in the test environment. - Needles, alert lamps and sonar screen are driven by the existing snapshots; the alert box now carries SYS/ATTN/ALRM. - Depth dial reads percent of certified depth. - Sonar display restyled as a turquoise holographic relief with a shader grid and height scale; SubViewport matches the glass (960x604). - Cabin lighting retuned: warm pooled lamp light, cool porthole rim, lamp shadows, dial backlight. - Procedural stand-ins removed (bulkhead, tanks, consoles, levers, indicator columns, placeholder pipe run, dial face PNGs). - Tests adapted where nodes disappeared; one assertion removed (pipe_segment_count) until the pipe kit is placed. - Model .glb files are committed without LFS; textures Godot extracts next to them at import are ignored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
335 lines
12 KiB
Plaintext
335 lines
12 KiB
Plaintext
[gd_scene load_steps=31 format=3]
|
|
|
|
[ext_resource type="Script" path="res://game/presentation/cockpit/cockpit_instrument_panel.gd" id="1_instruments"]
|
|
[ext_resource type="Script" path="res://game/presentation/cockpit/cockpit_detailing.gd" id="2_detailing"]
|
|
[ext_resource type="Script" path="res://game/presentation/cockpit/cockpit_pressure_bulkhead.gd" id="3_bulkhead"]
|
|
[ext_resource type="Script" path="res://game/presentation/cockpit/cockpit_analog_gauges.gd" id="4_gauges"]
|
|
[ext_resource type="Script" path="res://game/presentation/cockpit/cockpit_sonar_console.gd" id="5_sonar_console"]
|
|
[ext_resource type="Script" path="res://game/presentation/cockpit/cockpit_alert_box.gd" id="6_alert_box"]
|
|
[ext_resource type="Script" path="res://game/presentation/cockpit/cockpit_switch_panel.gd" id="7_switch_panel"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/gauge_panel.glb" id="8_gauge_panel_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/sonar.glb" id="9_sonar_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/switch_panel.glb" id="10_switch_panel_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/alert_box.glb" id="11_alert_box_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/speaker.glb" id="12_speaker_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/hull_wall.glb" id="13_hull_wall_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/porthole.glb" id="14_porthole_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/gas_bottle.glb" id="15_gas_bottle_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/handrail_l.glb" id="16_handrail_l_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/handrail_r.glb" id="17_handrail_r_model"]
|
|
[ext_resource type="PackedScene" path="res://game/presentation/cockpit/assets/models/side_console.glb" id="18_side_console_model"]
|
|
|
|
[sub_resource type="StandardMaterial3D" id="SteelMaterial"]
|
|
albedo_color = Color(0.055, 0.07, 0.07, 1)
|
|
metallic = 0.76
|
|
roughness = 0.46
|
|
|
|
[sub_resource type="StandardMaterial3D" id="PaintedMaterial"]
|
|
albedo_color = Color(0.045, 0.12, 0.125, 1)
|
|
metallic = 0.48
|
|
roughness = 0.61
|
|
|
|
[sub_resource type="StandardMaterial3D" id="BrassMaterial"]
|
|
albedo_color = Color(0.27, 0.17, 0.045, 1)
|
|
metallic = 0.74
|
|
roughness = 0.43
|
|
|
|
[sub_resource type="StandardMaterial3D" id="RubberMaterial"]
|
|
albedo_color = Color(0.018, 0.024, 0.025, 1)
|
|
roughness = 0.88
|
|
|
|
[sub_resource type="StandardMaterial3D" id="ScreenMaterial"]
|
|
albedo_color = Color(0.006, 0.025, 0.028, 1)
|
|
metallic = 0.15
|
|
roughness = 0.22
|
|
emission_enabled = true
|
|
emission = Color(0.008, 0.07, 0.075, 1)
|
|
emission_energy_multiplier = 1.7
|
|
|
|
[sub_resource type="StandardMaterial3D" id="CyanMaterial"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.2, 0.78, 0.82, 1)
|
|
emission_enabled = true
|
|
emission = Color(0.12, 0.72, 0.76, 1)
|
|
emission_energy_multiplier = 3.2
|
|
|
|
[sub_resource type="StandardMaterial3D" id="AmberMaterial"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.95, 0.52, 0.08, 1)
|
|
emission_enabled = true
|
|
emission = Color(0.95, 0.33, 0.02, 1)
|
|
emission_energy_multiplier = 2.6
|
|
|
|
[sub_resource type="StandardMaterial3D" id="RedMaterial"]
|
|
shading_mode = 0
|
|
albedo_color = Color(0.82, 0.08, 0.045, 1)
|
|
emission_enabled = true
|
|
emission = Color(0.92, 0.055, 0.025, 1)
|
|
emission_energy_multiplier = 2.8
|
|
|
|
[sub_resource type="BoxMesh" id="UnitBoxMesh"]
|
|
size = Vector3(1, 1, 1)
|
|
|
|
[sub_resource type="QuadMesh" id="ScreenQuadMesh"]
|
|
size = Vector2(1, 1)
|
|
|
|
[sub_resource type="SphereMesh" id="KnobMesh"]
|
|
radius = 0.046
|
|
height = 0.092
|
|
radial_segments = 16
|
|
rings = 8
|
|
|
|
[sub_resource type="CylinderMesh" id="DialMesh"]
|
|
top_radius = 0.105
|
|
bottom_radius = 0.105
|
|
height = 0.035
|
|
radial_segments = 32
|
|
|
|
[node name="CockpitInterior" type="Node3D"]
|
|
script = ExtResource("1_instruments")
|
|
|
|
[node name="CockpitDetailing" type="Node3D" parent="."]
|
|
unique_name_in_owner = true
|
|
script = ExtResource("2_detailing")
|
|
|
|
[node name="CabinShell" type="Node3D" parent="."]
|
|
|
|
[node name="LeftWall" type="MeshInstance3D" parent="CabinShell"]
|
|
position = Vector3(-1.25, 0.47, 0.53)
|
|
scale = Vector3(0.16, 2.62, 1.1)
|
|
mesh = SubResource("UnitBoxMesh")
|
|
material_override = SubResource("PaintedMaterial")
|
|
|
|
[node name="RightWall" type="MeshInstance3D" parent="CabinShell"]
|
|
position = Vector3(1.25, 0.47, 0.53)
|
|
scale = Vector3(0.16, 2.62, 1.1)
|
|
mesh = SubResource("UnitBoxMesh")
|
|
material_override = SubResource("PaintedMaterial")
|
|
|
|
[node name="Ceiling" type="MeshInstance3D" parent="CabinShell"]
|
|
position = Vector3(0, 1.72, 0.53)
|
|
scale = Vector3(2.66, 0.16, 1.1)
|
|
mesh = SubResource("UnitBoxMesh")
|
|
material_override = SubResource("SteelMaterial")
|
|
|
|
[node name="Floor" type="MeshInstance3D" parent="CabinShell"]
|
|
position = Vector3(0, -0.7, -0.1)
|
|
scale = Vector3(2.05, 0.18, 2.5)
|
|
mesh = SubResource("UnitBoxMesh")
|
|
material_override = SubResource("RubberMaterial")
|
|
|
|
[node name="RearBulkhead" type="MeshInstance3D" parent="CabinShell"]
|
|
position = Vector3(0, 0.47, 1.08)
|
|
scale = Vector3(2.66, 2.62, 0.16)
|
|
mesh = SubResource("UnitBoxMesh")
|
|
material_override = SubResource("SteelMaterial")
|
|
|
|
[node name="PortholeAssembly" type="Node3D" parent="."]
|
|
position = Vector3(0, 0.47, -1.32)
|
|
|
|
[node name="CurvedPressureBulkhead" type="Node3D" parent="PortholeAssembly"]
|
|
unique_name_in_owner = true
|
|
script = ExtResource("3_bulkhead")
|
|
|
|
[node name="HullWall" parent="PortholeAssembly/CurvedPressureBulkhead" instance=ExtResource("13_hull_wall_model")]
|
|
|
|
[node name="Porthole" parent="PortholeAssembly/CurvedPressureBulkhead" instance=ExtResource("14_porthole_model")]
|
|
|
|
[node name="Dashboard" type="Node3D" parent="."]
|
|
unique_name_in_owner = true
|
|
position = Vector3(0, 0.05, -1.22)
|
|
rotation_degrees = Vector3(-12, 0, 0)
|
|
|
|
[node name="ResourcesFrame" type="MeshInstance3D" parent="Dashboard"]
|
|
position = Vector3(-0.49, -0.115, 0.14)
|
|
scale = Vector3(0.34, 0.065, 0.025)
|
|
mesh = SubResource("UnitBoxMesh")
|
|
material_override = SubResource("BrassMaterial")
|
|
|
|
[node name="ResourcesScreen" type="MeshInstance3D" parent="Dashboard"]
|
|
position = Vector3(-0.49, -0.115, 0.155)
|
|
scale = Vector3(0.305, 0.044, 1)
|
|
mesh = SubResource("ScreenQuadMesh")
|
|
material_override = SubResource("ScreenMaterial")
|
|
|
|
[node name="ResourcesLabel" type="Label3D" parent="Dashboard"]
|
|
unique_name_in_owner = true
|
|
position = Vector3(-0.49, -0.115, 0.163)
|
|
pixel_size = 0.00055
|
|
font_size = 10
|
|
outline_size = 2
|
|
text = "BAT — kWh · O₂ — %\n— kW · — L/min"
|
|
modulate = Color(0.76, 0.74, 0.6, 1)
|
|
|
|
[node name="NavigationFrame" type="MeshInstance3D" parent="Dashboard"]
|
|
position = Vector3(0, -0.115, 0.14)
|
|
scale = Vector3(0.30, 0.065, 0.025)
|
|
mesh = SubResource("UnitBoxMesh")
|
|
material_override = SubResource("BrassMaterial")
|
|
|
|
[node name="NavigationScreen" type="MeshInstance3D" parent="Dashboard"]
|
|
position = Vector3(0, -0.115, 0.155)
|
|
scale = Vector3(0.265, 0.044, 1)
|
|
mesh = SubResource("ScreenQuadMesh")
|
|
material_override = SubResource("ScreenMaterial")
|
|
|
|
[node name="NavigationLabel" type="Label3D" parent="Dashboard"]
|
|
unique_name_in_owner = true
|
|
position = Vector3(0, -0.115, 0.163)
|
|
pixel_size = 0.00055
|
|
font_size = 10
|
|
outline_size = 2
|
|
text = "PROF. — / — m\nVIT. — m/s"
|
|
modulate = Color(0.76, 0.74, 0.6, 1)
|
|
|
|
[node name="IntegrityFrame" type="MeshInstance3D" parent="Dashboard"]
|
|
position = Vector3(0.49, -0.115, 0.14)
|
|
scale = Vector3(0.34, 0.065, 0.025)
|
|
mesh = SubResource("UnitBoxMesh")
|
|
material_override = SubResource("BrassMaterial")
|
|
|
|
[node name="IntegrityScreen" type="MeshInstance3D" parent="Dashboard"]
|
|
position = Vector3(0.49, -0.115, 0.155)
|
|
scale = Vector3(0.305, 0.044, 1)
|
|
mesh = SubResource("ScreenQuadMesh")
|
|
material_override = SubResource("ScreenMaterial")
|
|
|
|
[node name="IntegrityLabel" type="Label3D" parent="Dashboard"]
|
|
unique_name_in_owner = true
|
|
position = Vector3(0.49, -0.115, 0.163)
|
|
pixel_size = 0.00055
|
|
font_size = 10
|
|
outline_size = 2
|
|
text = "COQUE — % · — bar\nLIMITE — bar"
|
|
modulate = Color(0.76, 0.74, 0.6, 1)
|
|
|
|
[node name="ReturnLabel" type="Label3D" parent="Dashboard"]
|
|
unique_name_in_owner = true
|
|
position = Vector3(0.22, 0.266, 0.158)
|
|
pixel_size = 0.00062
|
|
font_size = 12
|
|
outline_size = 2
|
|
text = "RETOUR · INCONNU"
|
|
modulate = Color(1, 0.75, 0.2, 1)
|
|
|
|
[node name="StatusLabel" type="Label3D" parent="Dashboard"]
|
|
unique_name_in_owner = true
|
|
position = Vector3(-0.36, 0.266, 0.158)
|
|
pixel_size = 0.00062
|
|
font_size = 12
|
|
outline_size = 2
|
|
text = "SYSTÈMES · NORMAL"
|
|
modulate = Color(0.45, 0.89, 0.9, 1)
|
|
|
|
[node name="AnalogGauges" type="Node3D" parent="Dashboard"]
|
|
position = Vector3(0, -0.06, 0.15)
|
|
script = ExtResource("4_gauges")
|
|
|
|
[node name="GaugePanelModel" parent="Dashboard/AnalogGauges" instance=ExtResource("8_gauge_panel_model")]
|
|
|
|
[node name="SonarMonitor" type="Node3D" parent="."]
|
|
position = Vector3(0.54, 0.48, -1.04)
|
|
rotation_degrees = Vector3(-5, -42, -2)
|
|
script = ExtResource("5_sonar_console")
|
|
|
|
[node name="SonarModel" parent="SonarMonitor" instance=ExtResource("9_sonar_model")]
|
|
scale = Vector3(0.31, 0.31, 0.31)
|
|
|
|
[node name="SonarPlaceholder" type="Label3D" parent="SonarMonitor"]
|
|
unique_name_in_owner = true
|
|
position = Vector3(-0.0164, 0.002, 0.026)
|
|
pixel_size = 0.00054
|
|
font_size = 16
|
|
outline_size = 2
|
|
text = "SONAR
|
|
MODULE EN ATTENTE"
|
|
modulate = Color(0.34, 0.6, 0.6, 1)
|
|
|
|
[node name="AlertBox" type="Node3D" parent="."]
|
|
position = Vector3(-0.86, 0.555, -1.214)
|
|
rotation_degrees = Vector3(0, 15, 0)
|
|
script = ExtResource("6_alert_box")
|
|
|
|
[node name="AlertBoxModel" parent="AlertBox" instance=ExtResource("11_alert_box_model")]
|
|
scale = Vector3(0.5, 0.5, 0.5)
|
|
|
|
[node name="SwitchPanel" type="Node3D" parent="."]
|
|
position = Vector3(-0.74, -0.125, -0.97)
|
|
rotation_degrees = Vector3(0, 30, 0)
|
|
script = ExtResource("7_switch_panel")
|
|
|
|
[node name="SwitchPanelModel" parent="SwitchPanel" instance=ExtResource("10_switch_panel_model")]
|
|
scale = Vector3(0.37, 0.37, 0.37)
|
|
|
|
[node name="Speaker" parent="." instance=ExtResource("12_speaker_model")]
|
|
position = Vector3(0.83, 0.84, -1.22)
|
|
rotation_degrees = Vector3(0, -15, 0)
|
|
scale = Vector3(0.56, 0.56, 0.56)
|
|
|
|
[node name="GasBottle" parent="." instance=ExtResource("15_gas_bottle_model")]
|
|
position = Vector3(-1.02, 0.36, -1.225)
|
|
rotation_degrees = Vector3(0, 53.3, 0)
|
|
scale = Vector3(0.65, 0.65, 0.65)
|
|
|
|
[node name="HandrailLeft" parent="." instance=ExtResource("16_handrail_l_model")]
|
|
position = Vector3(-0.6, 0.24, -1.1)
|
|
|
|
[node name="HandrailRight" parent="." instance=ExtResource("17_handrail_r_model")]
|
|
position = Vector3(0.6, 0.24, -1.1)
|
|
|
|
[node name="SideConsoleLeft" parent="." instance=ExtResource("18_side_console_model")]
|
|
position = Vector3(-0.632, -0.61, -1.215)
|
|
|
|
[node name="SideConsoleRight" parent="." instance=ExtResource("18_side_console_model")]
|
|
position = Vector3(0.632, -0.61, -1.215)
|
|
scale = Vector3(-1, 1, 1)
|
|
|
|
[node name="EmergencyDial" type="MeshInstance3D" parent="."]
|
|
position = Vector3(-0.845, 0.47, -1.283)
|
|
scale = Vector3(0.3, 0.3, 0.3)
|
|
rotation_degrees = Vector3(90, 0, 0)
|
|
mesh = SubResource("DialMesh")
|
|
material_override = SubResource("RedMaterial")
|
|
|
|
[node name="EmergencyLabel" type="Label3D" parent="."]
|
|
position = Vector3(-0.845, 0.418, -1.28)
|
|
pixel_size = 0.0015
|
|
font_size = 12
|
|
outline_size = 2
|
|
text = "ÉJECTION · X"
|
|
modulate = Color(1, 0.48, 0.38, 1)
|
|
|
|
[node name="CyanIndicator" type="MeshInstance3D" parent="."]
|
|
position = Vector3(-0.15, 0.305, -1.11)
|
|
scale = Vector3(0.25, 0.25, 0.25)
|
|
mesh = SubResource("KnobMesh")
|
|
material_override = SubResource("CyanMaterial")
|
|
|
|
[node name="AmberIndicator" type="MeshInstance3D" parent="."]
|
|
position = Vector3(0, 0.305, -1.11)
|
|
scale = Vector3(0.25, 0.25, 0.25)
|
|
mesh = SubResource("KnobMesh")
|
|
material_override = SubResource("AmberMaterial")
|
|
|
|
[node name="RedIndicator" type="MeshInstance3D" parent="."]
|
|
position = Vector3(0.15, 0.305, -1.11)
|
|
scale = Vector3(0.25, 0.25, 0.25)
|
|
mesh = SubResource("KnobMesh")
|
|
material_override = SubResource("RedMaterial")
|
|
|
|
[node name="CabinLight" type="OmniLight3D" parent="."]
|
|
unique_name_in_owner = true
|
|
position = Vector3(0, 0.92, -0.28)
|
|
light_color = Color(1, 0.7, 0.46, 1)
|
|
light_energy = 0.04
|
|
shadow_enabled = true
|
|
omni_range = 3.3
|
|
|
|
[node name="PanelLight" type="OmniLight3D" parent="."]
|
|
unique_name_in_owner = true
|
|
position = Vector3(0, 0.18, -0.63)
|
|
light_color = Color(1, 0.72, 0.5, 1)
|
|
light_energy = 0.4
|
|
shadow_enabled = false
|
|
omni_range = 0.8
|