mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-10 16:04:04 +00:00
96ff503fa8
Hull/Canopy/EngineGlowL/EngineGlowR are runtime-baked into one ArrayMesh in _ready via SurfaceTool.append_from, dropping 4 MeshInstance3D children to 1 (Nose/TailFin stay separate, they're retinted per-team). Skipped in headless mode like the goal/arena_boundary visual builds, since physics only cares about CollisionShape3D. All 6 source surfaces (hull, canopy, engine_l x2, engine_r x2) carry distinct materials, so this doesn't literally cut draw calls 6 to 3 as TODO.md assumed — Godot still issues one draw call per surface regardless of node count. The real win is scene-tree/transform overhead, not batching.
30 lines
1.1 KiB
Plaintext
30 lines
1.1 KiB
Plaintext
[gd_scene load_steps=13 format=3 uid="uid://p07epxnh8wwp"]
|
|
|
|
[ext_resource type="Script" uid="uid://dyq1n7q1bqjps" path="res://scripts/ship.gd" id="1_efag7"]
|
|
[ext_resource type="ArrayMesh" path="res://assets/models/ship_nose.res" id="3_nose"]
|
|
[ext_resource type="ArrayMesh" path="res://assets/models/ship_tailfin.res" id="5_talfin"]
|
|
|
|
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_ship"]
|
|
friction = 0.1
|
|
bounce = 0.15
|
|
|
|
[sub_resource type="BoxShape3D" id="BoxShape3D_dsjou"]
|
|
size = Vector3(1, 1, 4)
|
|
|
|
[node name="Ship" type="RigidBody3D"]
|
|
mass = 5.0
|
|
physics_material_override = SubResource("PhysicsMaterial_ship")
|
|
inertia = Vector3(1, 1, 1)
|
|
script = ExtResource("1_efag7")
|
|
|
|
[node name="Nose" type="MeshInstance3D" parent="."]
|
|
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0)
|
|
mesh = ExtResource("3_nose")
|
|
|
|
[node name="TailFin" type="MeshInstance3D" parent="."]
|
|
transform = Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0.24, 0.72)
|
|
mesh = ExtResource("5_talfin")
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
|
shape = SubResource("BoxShape3D_dsjou")
|