Reframe cockpit around industrial reference
This commit is contained in:
1 parent
c2b3ac42a3
commit
dffe790926
9 files changed
+146
-95
No files matched your search
@@ -8,9 +8,10 @@ const CockpitMeshFactory = preload(
|
||||
"res://game/presentation/cockpit/cockpit_mesh_factory.gd"
|
||||
)
|
||||
|
||||
const PANEL_COUNT := 12
|
||||
const ANGULAR_STEPS := 4
|
||||
const RADIAL_STEPS := 3
|
||||
const PANEL_COUNT := 1
|
||||
const FASTENER_COUNT := 16
|
||||
const ANGULAR_STEPS := 64
|
||||
const RADIAL_STEPS := 4
|
||||
const INNER_RADIUS := 0.72
|
||||
const OUTER_RADIUS := 1.11
|
||||
|
||||
@@ -21,6 +22,7 @@ var _panel_count := 0
|
||||
func _ready() -> void:
|
||||
_materials = CockpitMaterialPalette.new()
|
||||
_hide_rectangular_whitebox()
|
||||
_style_existing_frame()
|
||||
_build_curved_panels()
|
||||
_build_outer_rib()
|
||||
_build_fasteners()
|
||||
@@ -45,12 +47,20 @@ func _hide_rectangular_whitebox() -> void:
|
||||
whitebox.visible = false
|
||||
|
||||
|
||||
func _style_existing_frame() -> void:
|
||||
var frame := get_parent().get_node_or_null("WindowFrame") as MeshInstance3D
|
||||
if frame != null:
|
||||
frame.material_override = _materials.brushed_steel
|
||||
for child: Node in get_parent().get_children():
|
||||
if child is MeshInstance3D and child.name.begins_with("Bolt"):
|
||||
(child as MeshInstance3D).material_override = _materials.dark_steel
|
||||
|
||||
|
||||
func _build_curved_panels() -> void:
|
||||
var panel_angle := TAU / float(PANEL_COUNT)
|
||||
var seam_half_width := deg_to_rad(0.22)
|
||||
for panel_index in PANEL_COUNT:
|
||||
var start_angle := panel_index * panel_angle + seam_half_width
|
||||
var end_angle := (panel_index + 1) * panel_angle - seam_half_width
|
||||
var start_angle := panel_index * panel_angle
|
||||
var end_angle := (panel_index + 1) * panel_angle
|
||||
var panel := MeshInstance3D.new()
|
||||
panel.name = "PressurePanel%02d" % (panel_index + 1)
|
||||
panel.mesh = _create_curved_panel_mesh(start_angle, end_angle)
|
||||
@@ -128,11 +138,23 @@ func _build_outer_rib() -> void:
|
||||
rib.rotation_degrees.x = 90.0
|
||||
rib.position.z = 0.025
|
||||
add_child(rib)
|
||||
var inner_rib := MeshInstance3D.new()
|
||||
inner_rib.name = "InnerPressureRib"
|
||||
var inner_torus := TorusMesh.new()
|
||||
inner_torus.inner_radius = 0.695
|
||||
inner_torus.outer_radius = 0.755
|
||||
inner_torus.rings = 64
|
||||
inner_torus.ring_segments = 12
|
||||
inner_rib.mesh = inner_torus
|
||||
inner_rib.material_override = _materials.brushed_steel
|
||||
inner_rib.rotation_degrees.x = 90.0
|
||||
inner_rib.position.z = 0.075
|
||||
add_child(inner_rib)
|
||||
|
||||
|
||||
func _build_fasteners() -> void:
|
||||
for fastener_index in PANEL_COUNT:
|
||||
var angle := (fastener_index + 0.5) * TAU / float(PANEL_COUNT)
|
||||
for fastener_index in FASTENER_COUNT:
|
||||
var angle := (fastener_index + 0.5) * TAU / float(FASTENER_COUNT)
|
||||
CockpitMeshFactory.add_cylinder(
|
||||
"OuterFastener",
|
||||
self,
|
||||
|
||||
Reference in new issue
Block a user