Spawnable test ship with multiplayer and orbit

This commit is contained in:
2025-11-07 12:04:56 +01:00
parent 245be4a4f5
commit cff5ec27f8
26 changed files with 581 additions and 365 deletions

View File

@ -2,5 +2,5 @@
[ext_resource type="Script" uid="uid://bkcouefvi7iup" path="res://scripts/star_system.gd" id="1_ig7tw"]
[node name="StarSystem" type="Node2D"]
[node name="StarSystem" type="Node3D"]
script = ExtResource("1_ig7tw")

475
modules/3d_test_ship.tscn Normal file
View File

@ -0,0 +1,475 @@
[gd_scene load_steps=4 format=3 uid="uid://bkwogkfqk2uxo"]
[ext_resource type="Script" uid="uid://6co67nfy8ngb" path="res://scenes/ship/builder/module.gd" id="1_ktv2t"]
[ext_resource type="PackedScene" uid="uid://bsyufiv0m1018" path="res://scenes/ship/builder/pieces/hullplate.tscn" id="2_shb7f"]
[ext_resource type="PackedScene" uid="uid://dvpy3urgtm62n" path="res://scenes/ship/components/hardware/spawner.tscn" id="3_ism2t"]
[node name="3dTestShip" type="Node3D"]
script = ExtResource("1_ktv2t")
mass = 1.0
metadata/_custom_type_script = "uid://6co67nfy8ngb"
[node name="Hullplate" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, 0)
[node name="Hullplate3" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, -1)
[node name="Hullplate2" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, 1)
[node name="Hullplate7" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, 0)
[node name="Hullplate8" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, -1)
[node name="Hullplate9" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, 1)
[node name="Hullplate4" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, 0)
[node name="Hullplate5" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, -1)
[node name="Hullplate6" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, 1)
[node name="Hullplate10" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, -3)
[node name="Hullplate11" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, -4)
[node name="Hullplate12" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, -2)
[node name="Hullplate13" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, -3)
[node name="Hullplate14" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, -4)
[node name="Hullplate15" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, -2)
[node name="Hullplate16" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, -3)
[node name="Hullplate17" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, -4)
[node name="Hullplate18" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, -2)
[node name="Hullplate19" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, 3)
[node name="Hullplate20" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, 2)
[node name="Hullplate21" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 0, 4)
[node name="Hullplate22" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, 3)
[node name="Hullplate23" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, 2)
[node name="Hullplate24" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, -1, 4)
[node name="Hullplate25" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, 3)
[node name="Hullplate26" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, 2)
[node name="Hullplate27" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 2, 1, 4)
[node name="Hullplate28" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, -0.0091564655)
[node name="Hullplate29" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, -1.0091565)
[node name="Hullplate30" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, 0.99084353)
[node name="Hullplate31" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, -0.0091564655)
[node name="Hullplate32" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, -1.0091565)
[node name="Hullplate33" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, 0.99084353)
[node name="Hullplate34" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, -0.0091564655)
[node name="Hullplate35" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, -1.0091565)
[node name="Hullplate36" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, 0.99084353)
[node name="Hullplate37" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, -3.0091565)
[node name="Hullplate38" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, -4.009156)
[node name="Hullplate39" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, -2.0091565)
[node name="Hullplate40" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, -3.0091565)
[node name="Hullplate41" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, -4.009156)
[node name="Hullplate42" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, -2.0091565)
[node name="Hullplate43" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, -3.0091565)
[node name="Hullplate44" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, -4.009156)
[node name="Hullplate45" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, -2.0091565)
[node name="Hullplate46" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, 2.9908435)
[node name="Hullplate47" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, 1.9908435)
[node name="Hullplate48" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 9.536743e-07, 3.9908435)
[node name="Hullplate49" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, 2.9908435)
[node name="Hullplate50" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, 1.9908435)
[node name="Hullplate51" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, -0.99999905, 3.9908435)
[node name="Hullplate52" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, 2.9908435)
[node name="Hullplate53" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, 1.9908435)
[node name="Hullplate54" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -2.0009866, 1.000001, 3.9908435)
[node name="Hullplate55" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50098634, 9.536743e-07, 4.4908433)
[node name="Hullplate56" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.49901366, 9.536743e-07, 4.4908433)
[node name="Hullplate57" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, 0, 1, 0, -0.014328662, 0, 0.99989736, -1.5009866, 9.536743e-07, 4.4908433)
[node name="Hullplate58" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50098634, -0.99999905, 4.4908433)
[node name="Hullplate59" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.49901366, -0.99999905, 4.4908433)
[node name="Hullplate60" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, 0, 1, 0, -0.014328662, 0, 0.99989736, -1.5009866, -0.99999905, 4.4908433)
[node name="Hullplate61" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50098634, 1.000001, 4.4908433)
[node name="Hullplate62" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.49901366, 1.000001, 4.4908433)
[node name="Hullplate64" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4990137, 9.536743e-07, 4.4908433)
[node name="Hullplate65" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4990137, -0.99999905, 4.4908433)
[node name="Hullplate66" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4990137, 1.000001, 4.4908433)
[node name="Hullplate63" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, 0, 1, 0, -0.014328662, 0, 0.99989736, -1.5009866, 1.000001, 4.4908433)
[node name="Hullplate67" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50098634, 9.536743e-07, -4.5091567)
[node name="Hullplate68" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.49901366, 9.536743e-07, -4.5091567)
[node name="Hullplate69" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, 0, 1, 0, -0.014328662, 0, 0.99989736, -1.5009866, 9.536743e-07, -4.5091567)
[node name="Hullplate70" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50098634, -0.99999905, -4.5091567)
[node name="Hullplate71" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.49901366, -0.99999905, -4.5091567)
[node name="Hullplate72" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, 0, 1, 0, -0.014328662, 0, 0.99989736, -1.5009866, -0.99999905, -4.5091567)
[node name="Hullplate73" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.50098634, 1.000001, -4.5091567)
[node name="Hullplate74" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.49901366, 1.000001, -4.5091567)
[node name="Hullplate75" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4990137, 9.536743e-07, -4.5091567)
[node name="Hullplate76" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4990137, -0.99999905, -4.5091567)
[node name="Hullplate77" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4990137, 1.000001, -4.5091567)
[node name="Hullplate78" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, 0, 1, 0, -0.014328662, 0, 0.99989736, -1.5009866, 1.000001, -4.5091567)
[node name="Hullplate79" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, -3.009157)
[node name="Hullplate80" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, -3.009157)
[node name="Hullplate81" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, -3.009157)
[node name="Hullplate82" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, -2.009157)
[node name="Hullplate83" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, -2.009157)
[node name="Hullplate84" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, -2.009157)
[node name="Hullplate85" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, -4.009157)
[node name="Hullplate86" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, -4.009157)
[node name="Hullplate87" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, -3.009157)
[node name="Hullplate88" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, -2.009157)
[node name="Hullplate89" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, -4.009157)
[node name="Hullplate90" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, -4.009157)
[node name="Hullplate91" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, -0.009156942)
[node name="Hullplate92" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, -0.009156942)
[node name="Hullplate93" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, -0.009156942)
[node name="Hullplate94" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, 0.99084306)
[node name="Hullplate95" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, 0.99084306)
[node name="Hullplate96" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, 0.99084306)
[node name="Hullplate97" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, -1.0091572)
[node name="Hullplate98" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, -1.0091572)
[node name="Hullplate99" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, -0.009156942)
[node name="Hullplate100" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, 0.99084306)
[node name="Hullplate101" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, -1.0091572)
[node name="Hullplate102" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, -1.0091572)
[node name="Hullplate103" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, 2.990843)
[node name="Hullplate104" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, 2.990843)
[node name="Hullplate105" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, 2.990843)
[node name="Hullplate106" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, 3.990843)
[node name="Hullplate107" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, 3.990843)
[node name="Hullplate108" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, 3.990843)
[node name="Hullplate109" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, 1.5000012, 1.9908428)
[node name="Hullplate110" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, 1.5000012, 1.9908428)
[node name="Hullplate111" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, 2.990843)
[node name="Hullplate112" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, 3.990843)
[node name="Hullplate113" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, 1.5000012, 1.9908428)
[node name="Hullplate114" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, 1.5000012, 1.9908428)
[node name="Hullplate115" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, -3.009157)
[node name="Hullplate116" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, -3.009157)
[node name="Hullplate117" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, -3.009157)
[node name="Hullplate118" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, -2.009157)
[node name="Hullplate119" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, -2.009157)
[node name="Hullplate120" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, -2.009157)
[node name="Hullplate121" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, -4.009157)
[node name="Hullplate122" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, -4.009157)
[node name="Hullplate123" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, -3.009157)
[node name="Hullplate124" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, -2.009157)
[node name="Hullplate125" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, -4.009157)
[node name="Hullplate126" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, -4.009157)
[node name="Hullplate127" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, -0.009156942)
[node name="Hullplate128" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, -0.009156942)
[node name="Hullplate129" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, -0.009156942)
[node name="Hullplate130" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, 0.99084306)
[node name="Hullplate131" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, 0.99084306)
[node name="Hullplate132" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, 0.99084306)
[node name="Hullplate133" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, -1.0091572)
[node name="Hullplate134" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, -1.0091572)
[node name="Hullplate135" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, -0.009156942)
[node name="Hullplate136" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, 0.99084306)
[node name="Hullplate137" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, -1.0091572)
[node name="Hullplate138" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, -1.0091572)
[node name="Hullplate139" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, 2.990843)
[node name="Hullplate140" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, 2.990843)
[node name="Hullplate141" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, 2.990843)
[node name="Hullplate142" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, 3.990843)
[node name="Hullplate143" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, 3.990843)
[node name="Hullplate144" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, 3.990843)
[node name="Hullplate145" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -0.50098634, -1.4999988, 1.9908428)
[node name="Hullplate146" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0.49901366, -1.4999988, 1.9908428)
[node name="Hullplate147" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, 2.990843)
[node name="Hullplate148" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, 3.990843)
[node name="Hullplate149" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 1.4990137, -1.4999988, 1.9908428)
[node name="Hullplate150" parent="." instance=ExtResource("2_shb7f")]
transform = Transform3D(0.99989736, 0, 0.014328662, -0.014328662, -4.371139e-08, 0.99989736, 6.263257e-10, -1, -4.37069e-08, -1.5009866, -1.4999988, 1.9908428)
[node name="Spawner" parent="." instance=ExtResource("3_ism2t")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2)
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4, 1, -3)
[node name="OmniLight3D2" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.6, 1, -3)
[node name="OmniLight3D3" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.6, 1, 4)
[node name="OmniLight3D4" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4, 1, 4)

View File

@ -1,25 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://dhp1kc684qklv"]
[ext_resource type="Script" uid="uid://6co67nfy8ngb" path="res://scenes/ship/builder/module.gd" id="1_1abiy"]
[ext_resource type="PackedScene" uid="uid://bho8x10x4oab7" path="res://scenes/ship/builder/pieces/hullplate.tscn" id="2_risxe"]
[node name="Module" type="RigidBody2D"]
position = Vector2(-50, 50)
mass = 1.0
center_of_mass_mode = 1
center_of_mass = Vector2(-50, 0)
inertia = 0.0
linear_velocity = Vector2(0, 0)
angular_velocity = 0.0
script = ExtResource("1_1abiy")
[node name="StructuralContainer" type="Node2D" parent="."]
[node name="Hullplate" parent="StructuralContainer" instance=ExtResource("2_risxe")]
[node name="@StaticBody2D@23989" parent="StructuralContainer" instance=ExtResource("2_risxe")]
position = Vector2(-100, 0)
[node name="HullVolumeContainer" type="Node2D" parent="."]
[node name="AtmosphereVisualizer" type="Node2D" parent="."]

View File

@ -1,25 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://cvqs2vivnrepf"]
[ext_resource type="Script" uid="uid://6co67nfy8ngb" path="res://scenes/ship/builder/module.gd" id="1_1rae4"]
[ext_resource type="PackedScene" uid="uid://bho8x10x4oab7" path="res://scenes/ship/builder/pieces/hullplate.tscn" id="2_fbnt1"]
[node name="Module" type="RigidBody2D"]
position = Vector2(-50, 50)
mass = 1.0
center_of_mass_mode = 1
center_of_mass = Vector2(-50, 0)
inertia = 0.0
linear_velocity = Vector2(0, 0)
angular_velocity = 0.0
script = ExtResource("1_1rae4")
[node name="StructuralContainer" type="Node2D" parent="."]
[node name="Hullplate" parent="StructuralContainer" instance=ExtResource("2_fbnt1")]
[node name="@StaticBody2D@23989" parent="StructuralContainer" instance=ExtResource("2_fbnt1")]
position = Vector2(-100, 0)
[node name="HullVolumeContainer" type="Node2D" parent="."]
[node name="AtmosphereVisualizer" type="Node2D" parent="."]

View File

@ -1,145 +0,0 @@
[gd_scene load_steps=20 format=3 uid="uid://didt2nsdtbmra"]
[ext_resource type="Script" uid="uid://6co67nfy8ngb" path="res://scenes/ship/builder/module.gd" id="1_nqe0s"]
[ext_resource type="PackedScene" uid="uid://bho8x10x4oab7" path="res://scenes/ship/builder/pieces/hullplate.tscn" id="2_foqop"]
[ext_resource type="PackedScene" uid="uid://d3hitk62fice4" path="res://scenes/ship/builder/pieces/bulkhead.tscn" id="4_dmrms"]
[ext_resource type="PackedScene" uid="uid://2n42nstcj1n0" path="res://scenes/ship/components/hardware/system_station.tscn" id="5_nqe0s"]
[ext_resource type="Script" uid="uid://diu2tgusi3vmt" path="res://scenes/ship/computer/shards/sensor_databank.gd" id="9_ixntg"]
[ext_resource type="PackedScene" uid="uid://dt1t2n7dewucw" path="res://scenes/ship/computer/UI/button_panel.tscn" id="10_px2ne"]
[ext_resource type="Script" uid="uid://cfbyqvnvf3hna" path="res://scenes/ship/computer/shards/helm_logic_databank.gd" id="10_wkxbw"]
[ext_resource type="PackedScene" uid="uid://cdbqjkgsj02or" path="res://scenes/ship/computer/UI/readout_screen_panel.tscn" id="11_erhv3"]
[ext_resource type="Script" uid="uid://t12etsdx2h38" path="res://scenes/ship/computer/shards/nav_selection_databank.gd" id="11_xwy4s"]
[ext_resource type="Script" uid="uid://ceqdi6jobefnc" path="res://scenes/ship/computer/shards/helm_autopilot_databank.gd" id="12_4epkn"]
[ext_resource type="PackedScene" uid="uid://rd1c22nsru8y" path="res://scenes/ship/computer/UI/sensor_panel.tscn" id="12_q1rtr"]
[ext_resource type="PackedScene" uid="uid://c0bb77rmyatr0" path="res://scenes/ship/components/hardware/thruster.tscn" id="12_vmx8o"]
[ext_resource type="PackedScene" uid="uid://dvpy3urgtm62n" path="res://scenes/ship/components/hardware/spawner.tscn" id="13_83bu1"]
[ext_resource type="PackedScene" uid="uid://pq55j75t3fda" path="res://scenes/ship/computer/UI/throttle_lever_panel.tscn" id="13_rsa1x"]
[ext_resource type="Script" uid="uid://ctgl5kxyagw0f" path="res://scenes/ship/computer/shards/helm_ship_status.gd" id="13_wkxbw"]
[ext_resource type="Script" uid="uid://ghluwjd5c5ul" path="res://scenes/ship/computer/shards/nav_brachistochrone_planner.gd" id="14_xwy4s"]
[ext_resource type="Script" uid="uid://bghu5lhcbcfmh" path="res://scenes/ship/computer/shards/nav_hohman_planner.gd" id="15_fll2s"]
[ext_resource type="Script" uid="uid://dsbn7ushwqrko" path="res://scenes/ship/computer/shards/nav_intercept_solver.gd" id="16_vufgi"]
[ext_resource type="Script" uid="uid://0f6v6iu3o5qo" path="res://scenes/ship/computer/shards/nav_projection_shard.gd" id="17_34v0b"]
[node name="Module" type="Node2D"]
physics_interpolation_mode = 2
script = ExtResource("1_nqe0s")
physics_mode = 1
mass = 1.0
inertia = 0.0
metadata/_custom_type_script = "uid://0isnsk356que"
[node name="Hullplate" parent="." instance=ExtResource("2_foqop")]
physics_interpolation_mode = 2
is_pressurized = false
base_mass = 0.0
[node name="@StaticBody2D@30634" parent="." instance=ExtResource("2_foqop")]
physics_interpolation_mode = 2
position = Vector2(0, 100)
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="@StaticBody2D@30635" parent="." instance=ExtResource("2_foqop")]
physics_interpolation_mode = 2
position = Vector2(0, -100)
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="Bulkhead" parent="." instance=ExtResource("4_dmrms")]
physics_interpolation_mode = 2
position = Vector2(-50, 100)
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="@StaticBody2D@30636" parent="." instance=ExtResource("4_dmrms")]
physics_interpolation_mode = 2
position = Vector2(-50, 0)
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="@StaticBody2D@30637" parent="." instance=ExtResource("4_dmrms")]
physics_interpolation_mode = 2
position = Vector2(-50, -100)
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="@StaticBody2D@30638" parent="." instance=ExtResource("4_dmrms")]
physics_interpolation_mode = 2
position = Vector2(50, -100)
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="@StaticBody2D@30639" parent="." instance=ExtResource("4_dmrms")]
physics_interpolation_mode = 2
position = Vector2(0, -150)
rotation = 1.5708
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="@StaticBody2D@30640" parent="." instance=ExtResource("4_dmrms")]
physics_interpolation_mode = 2
position = Vector2(0, 150)
rotation = 4.71239
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="@StaticBody2D@30641" parent="." instance=ExtResource("4_dmrms")]
physics_interpolation_mode = 2
position = Vector2(50, 100)
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="@StaticBody2D@30642" parent="." instance=ExtResource("4_dmrms")]
physics_interpolation_mode = 2
position = Vector2(50, 0)
is_pressurized = false
health = 0.0
base_mass = 0.0
[node name="Station" parent="." instance=ExtResource("5_nqe0s")]
position = Vector2(0, -10)
panel_scenes = Array[PackedScene]([ExtResource("11_erhv3"), ExtResource("11_erhv3"), ExtResource("12_q1rtr"), ExtResource("10_px2ne"), ExtResource("13_rsa1x")])
databank_installations = Array[Script]([ExtResource("10_wkxbw"), ExtResource("12_4epkn"), ExtResource("13_wkxbw"), ExtResource("9_ixntg"), ExtResource("11_xwy4s"), ExtResource("14_xwy4s"), ExtResource("15_fll2s"), ExtResource("16_vufgi"), ExtResource("17_34v0b")])
physics_mode = 2
[node name="Thruster" parent="." instance=ExtResource("12_vmx8o")]
position = Vector2(-95, -130)
rotation = 1.5708
main_thruster = false
physics_mode = 2
[node name="Thruster2" parent="." instance=ExtResource("12_vmx8o")]
position = Vector2(-95, 130)
rotation = 1.5708
main_thruster = false
physics_mode = 2
[node name="Thruster3" parent="." instance=ExtResource("12_vmx8o")]
position = Vector2(95, 130)
rotation = -1.5708
main_thruster = false
physics_mode = 2
[node name="Thruster4" parent="." instance=ExtResource("12_vmx8o")]
position = Vector2(95, -130)
rotation = -1.5708
main_thruster = false
physics_mode = 2
[node name="MainEngine" parent="." instance=ExtResource("12_vmx8o")]
position = Vector2(0, 195)
max_thrust = 10.0
physics_mode = 2
[node name="Spawner" parent="." instance=ExtResource("13_83bu1")]
position = Vector2(0, 27)
physics_mode = 2

7
modules/test_ship.tscn Normal file
View File

@ -0,0 +1,7 @@
[gd_scene load_steps=2 format=3 uid="uid://cwblg6q5qse6c"]
[ext_resource type="PackedScene" uid="uid://d3hitk62fice4" path="res://scenes/ship/builder/pieces/bulkhead.tscn" id="1_obkto"]
[node name="TestShip" type="Node3D"]
[node name="Bulkhead" parent="." instance=ExtResource("1_obkto")]

View File

@ -56,30 +56,30 @@ func set_interaction_input(just_pressed: bool, is_held: bool):
func _ready():
# Set up overlap signals if they aren't already connected in the scene file
# You must have an Area2D child on PilotBall to detect overlaps.
overlap_area.body_entered.connect(on_body_entered)
overlap_area.body_exited.connect(on_body_exited)
# overlap_area.body_entered.connect(on_body_entered)
# overlap_area.body_exited.connect(on_body_exited)
overlap_area.area_entered.connect(_on_station_area_entered)
overlap_area.area_exited.connect(_on_station_area_exited)
camera.make_current()
func on_body_entered(body: OrbitalBody3D):
# Detect Modules (which all inherit OrbitalBody2D via StructuralPiece)
if body is StructuralPiece:
overlapping_modules += 1
# func on_body_entered(body: OrbitalBody3D):
# # Detect Modules (which all inherit OrbitalBody2D via StructuralPiece)
# if body is StructuralPiece:
# overlapping_modules += 1
# Detect Ladders
if body is Ladder:
ladder_area = body.find_child("ClimbArea") # Assuming the Ladder has a specific Area2D for climbing
# # Detect Ladders
# if body is Ladder:
# ladder_area = body.find_child("ClimbArea") # Assuming the Ladder has a specific Area2D for climbing
func on_body_exited(body: OrbitalBody3D):
if body is StructuralPiece:
overlapping_modules -= 1
# func on_body_exited(body: OrbitalBody3D):
# if body is StructuralPiece:
# overlapping_modules -= 1
if body is Ladder:
if body.find_child("ClimbArea") == ladder_area:
ladder_area = null
is_grabbing_ladder = false # Force detach if the ladder moves away
# if body is Ladder:
# if body.find_child("ClimbArea") == ladder_area:
# ladder_area = null
# is_grabbing_ladder = false # Force detach if the ladder moves away
# --- NEW: Functions to be called by the Station ---
func enter_station_state():

View File

@ -1,4 +1,3 @@
@tool
class_name Module
extends OrbitalBody3D
@ -31,31 +30,31 @@ func get_attachment_points() -> Array:
var piece_center = piece.global_position
# --- Hullplates (Interior Grid) ---
if piece is Hullplate:
for i in range(-1, 2, 2):
for j in range(-1, 2, 2):
var offset = Vector2(i, j) * (COMPONENT_GRID_SIZE / 2.0)
points.append({
"position": piece_center + offset,
"type": Component.AttachmentType.INTERIOR_WALL,
"piece": piece
})
# if piece is Hullplate:
# for i in range(-1, 2, 2):
# for j in range(-1, 2, 2):
# var offset = Vector2(i, j) * (COMPONENT_GRID_SIZE / 2.0)
# points.append({
# "position": piece_center + offset,
# "type": Component.AttachmentType.INTERIOR_WALL,
# "piece": piece
# })
# --- Bulkheads (Interior and Exterior Edge Attachments) ---
elif piece is Bulkhead:
var interior_point = piece_center + piece.transform.origin.y * (COMPONENT_GRID_SIZE / 2.0)
points.append({
"position": interior_point,
"type": Component.AttachmentType.INTERIOR_WALL,
"piece": piece
})
# # --- Bulkheads (Interior and Exterior Edge Attachments) ---
# elif piece is Bulkhead:
# var interior_point = piece_center + piece.transform.origin.y * (COMPONENT_GRID_SIZE / 2.0)
# points.append({
# "position": interior_point,
# "type": Component.AttachmentType.INTERIOR_WALL,
# "piece": piece
# })
var exterior_point = piece_center - piece.transform.origin.y * (COMPONENT_GRID_SIZE / 2.0)
points.append({
"position": exterior_point,
"type": Component.AttachmentType.EXTERIOR_HULL,
"piece": piece
})
# var exterior_point = piece_center - piece.transform.origin.y * (COMPONENT_GRID_SIZE / 2.0)
# points.append({
# "position": exterior_point,
# "type": Component.AttachmentType.EXTERIOR_HULL,
# "piece": piece
# })
return points

View File

@ -1,6 +0,0 @@
@tool
class_name Bulkhead
extends StructuralPiece
# This piece represents a wall or edge.
# No additional logic is needed right now, we just need the class_name.

View File

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

View File

@ -1,29 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://d3hitk62fice4"]
[ext_resource type="Script" uid="uid://b4g288mje38nj" path="res://scenes/ship/builder/pieces/bulkhead.gd" id="1_1wp2n"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1wp2n"]
size = Vector2(10, 100)
[node name="Bulkhead" type="StaticBody2D"]
collision_layer = 16
collision_mask = 60
script = ExtResource("1_1wp2n")
metadata/_custom_type_script = "uid://b7f8x2qimvn37"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_1wp2n")
[node name="ColorRect" type="ColorRect" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -5.0
offset_top = -50.0
offset_right = 5.0
offset_bottom = 50.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.6, 0.6, 0.6, 1)

View File

@ -1,6 +0,0 @@
@tool
class_name Hullplate
extends StructuralPiece
# This piece represents an interior surface.
# No additional logic is needed right now, we just need the class_name.

View File

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

View File

@ -1,28 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://bho8x10x4oab7"]
[gd_scene load_steps=4 format=3 uid="uid://bsyufiv0m1018"]
[ext_resource type="Script" uid="uid://crmwm623rh1ps" path="res://scenes/ship/builder/pieces/hullplate.gd" id="1_ecow4"]
[ext_resource type="Script" uid="uid://wlm40n8ywr" path="res://scripts/orbital_body_2d.gd" id="1_ecow4"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1wp2n"]
size = Vector2(100, 100)
[sub_resource type="BoxMesh" id="BoxMesh_ecow4"]
size = Vector3(1, 1, 0.02)
[node name="Hullplate" type="StaticBody2D"]
collision_mask = 0
[sub_resource type="BoxShape3D" id="BoxShape3D_ecow4"]
size = Vector3(1, 1, 0.02)
[node name="Hullplate" type="Node3D"]
script = ExtResource("1_ecow4")
metadata/_custom_type_script = "uid://b7f8x2qimvn37"
metadata/_custom_type_script = "uid://wlm40n8ywr"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_1wp2n")
[node name="StaticBody3D" type="StaticBody3D" parent="."]
[node name="ColorRect" type="ColorRect" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -50.0
offset_top = -50.0
offset_right = 50.0
offset_bottom = 50.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.4, 0.4, 0.4, 1)
[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"]
mesh = SubResource("BoxMesh_ecow4")
skeleton = NodePath("../..")
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
shape = SubResource("BoxShape3D_ecow4")

View File

@ -1,20 +1 @@
@tool
class_name StructuralPiece
extends OrbitalBody3D
# Does this piece block atmosphere? (e.g., a hull plate would, a girder would not).
@export var is_pressurized: bool = true
# The health of this specific piece.
@export var health: float = 100.0
# This setter is triggered by the editor.
var is_preview: bool = false:
set(value):
is_preview = value
# if is_preview:
# # Make the piece translucent if it's a preview.
# modulate = Color(1, 1, 1, 0.5)
# else:
# # Make it opaque if it's a permanent piece.
# modulate = Color(1, 1, 1, 1)
class_name StructuralPiece extends OrbitalBody3D

View File

@ -1 +1 @@
uid://b7f8x2qimvn37
uid://cxnbunw3k7s5j

View File

@ -1,16 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://ds4eilbvihjy7"]
[ext_resource type="Script" uid="uid://b7f8x2qimvn37" path="res://scenes/ship/builder/pieces/structural_piece.gd" id="1_6jsoj"]
[sub_resource type="CircleShape2D" id="CircleShape2D_jsbwo"]
[node name="StructuralPiece" type="Node2D"]
script = ExtResource("1_6jsoj")
metadata/_custom_type_script = "uid://0isnsk356que"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_jsbwo")
[node name="ColorRect" type="ColorRect" parent="."]
offset_right = 40.0
offset_bottom = 40.0

View File

@ -16,14 +16,14 @@ class ThrusterData:
}
var thruster_node: Thruster
var thruster_type: ThrusterType = ThrusterType.UNCALIBRATED
var measured_torque: float # The rotational force it provides
var measured_torque_vector: Vector3 # The rotational force it provides
var measured_thrust: float # The linear force it provides
class ImpulsiveBurnPlan:
var delta_v_magnitude: float
var wait_time: float = 0.0
var burn_duration: float
var desired_rotation_rad: Basis
var desired_basis: Basis
class PathProjection:
var body_ref: OrbitalBody3D

View File

@ -101,7 +101,7 @@ func _execute_autopilot_rotation(step: DataTypes.ImpulsiveBurnPlan) -> float:
# You MUST update your planners (Hohman, Brachistochrone) to
# calculate a target Basis (e.g., Basis.looking_at(prograde_vec, Vector3.UP))
# and store it in the ImpulsiveBurnPlan.
var step_target_basis: Basis = step.desired_rotation_rad # DANGER: This line assumes you updated DataTypes.
var step_target_basis: Basis = step.desired_basis # DANGER: This line assumes you updated DataTypes.
# For this to compile, you MUST change ImpulsiveBurnPlan in data_types.gd:
# var desired_rotation_rad: float -> var desired_basis: Basis
var error_quaternion: Quaternion = shortest_rotation_between(root_module.global_transform.basis, step_target_basis)

View File

@ -94,7 +94,7 @@ func set_attitude_hold(hold: bool):
# else: apply_rotational_thrust(0.0)
# --- REFACTORED: This is the other key change ---
func apply_rotational_thrust(desired_torque: float):
func apply_rotational_thrust(desired_torque: Vector3):
if not is_instance_valid(root_module):
return
@ -105,7 +105,8 @@ func apply_rotational_thrust(desired_torque: float):
if thruster_data.thruster_type == DataTypes.ThrusterData.ThrusterType.ROTATIONAL:
# If this thruster can help apply the desired torque, turn it on.
# Otherwise, explicitly turn it off to ensure it's not firing incorrectly.
if sign(thruster_data.measured_torque) == sign(desired_torque) and desired_torque != 0:
var contribution = thruster_data.measured_torque_vector.dot(desired_torque)
if contribution > 0 and desired_torque != Vector3.ZERO:
thruster.turn_on()
else:
thruster.turn_off()
@ -165,10 +166,10 @@ func calibrate_rcs_performance():
calibration_data.max_pos_torque = 0.0
calibration_data.max_neg_torque = 0.0
for data in calibration_data.thruster_data.values():
if data.measured_torque > 0:
calibration_data.max_pos_torque += data.measured_torque
if data.measured_torque_vector > 0:
calibration_data.max_pos_torque += data.measured_torque_vector
else:
calibration_data.max_neg_torque += abs(data.measured_torque)
calibration_data.max_neg_torque += abs(data.measured_torque_vector)
print("RCS Calibration Complete: Max Pos Torque: %.2f, Max Neg Torque: %.2f" % [calibration_data.max_pos_torque, calibration_data.max_neg_torque])
@ -208,15 +209,15 @@ func _calibrate_single_thruster(thruster: Thruster) -> DataTypes.ThrusterData:
var delta_angular_velocity = root_module.angular_velocity - initial_angular_velocity
var delta_linear_velocity = root_module.linear_velocity - initial_linear_velocity
data.measured_torque = 0.0
data.measured_torque_vector = Vector3.ZERO
data.measured_thrust = 0.0
# --- Calculate Performance ---
# Torque = inertia * angular_acceleration (alpha = dw/dt)
if root_module.inertia > 0:
data.measured_torque = root_module.inertia * (delta_angular_velocity / test_burn_duration)
data.measured_torque_vector = root_module.inertia * (delta_angular_velocity / test_burn_duration)
else:
data.measured_torque = 0.0
data.measured_torque_vector = Vector3.ZERO
push_warning("Root module inertia is 0. Cannot calibrate torque.")
if root_module.mass > 0:
@ -225,23 +226,23 @@ func _calibrate_single_thruster(thruster: Thruster) -> DataTypes.ThrusterData:
data.measured_thrust = 0.0
push_warning("Root module mass is 0. Cannot calibrate torque.")
if data.measured_thrust > abs(data.measured_torque):
if data.measured_thrust > abs(data.measured_torque_vector):
print(" - Calibrated %s: Linear(%.3f)" % [thruster.name, data.measured_thrust])
data.thruster_type = DataTypes.ThrusterData.ThrusterType.LINEAR
elif data.measured_thrust < abs(data.measured_torque):
print(" - Calibrated %s: Torque(%.3f)" % [thruster.name, data.measured_torque])
elif data.measured_thrust < abs(data.measured_torque_vector):
print(" - Calibrated %s: Torque(%.3f)" % [thruster.name, data.measured_torque_vector])
data.thruster_type = DataTypes.ThrusterData.ThrusterType.ROTATIONAL
# --- Cleanup: Counter the spin from the test fire ---
if abs(data.measured_torque) > 0.001:
var counter_torque = -data.measured_torque
if data.measured_torque_vector.length() > 0.001:
var counter_torque = -data.measured_torque_vector
var counter_burn_duration = (root_module.inertia * root_module.angular_velocity) / counter_torque
# Find a thruster that can apply the counter-torque
for other_thruster in thrusters:
var other_data = calibration_data.thruster_data.get(other_thruster)
if other_data and sign(other_data.measured_torque) == sign(counter_torque):
if other_data and sign(other_data.measured_torque_vector) == sign(counter_torque):
other_thruster.turn_on()
await get_tree().create_timer(abs(counter_burn_duration)).timeout
other_thruster.turn_off()

View File

@ -54,7 +54,9 @@ func calculate_brachistochrone_transfer():
accel_burn.wait_time = 0 # Start immediately
accel_burn.burn_duration = time_for_half_journey
# The desired rotation is the direction vector from ship to target
accel_burn.desired_rotation_rad = root_module.global_position.direction_to(target_body.global_position) # + (PI / 2.0)
var direction_to_target = root_module.global_position.direction_to(target_body.global_position).normalized()
var up_vec = Vector3.UP
accel_burn.desired_basis = Basis.looking_at(direction_to_target, up_vec)
plan.append(accel_burn)
# --- Step 2: Deceleration Burn (The flip is handled by the autopilot between steps) ---
@ -62,8 +64,8 @@ func calculate_brachistochrone_transfer():
decel_burn.wait_time = 0 # No coasting period
decel_burn.burn_duration = time_for_half_journey
# The desired rotation is opposite the first burn
decel_burn.desired_rotation_rad = accel_burn.desired_rotation_rad + PI
decel_burn.desired_basis = Basis.looking_at(-direction_to_target, up_vec)
plan.append(decel_burn)
print("BRACHISTOCHRONE PLANNER: Plan calculated. Total time: %.2f s" % (time_for_half_journey * 2.0))
maneuver_calculated.emit(plan)

View File

@ -95,8 +95,15 @@ func calculate_hohmann_transfer():
# --- Determine rotation based on the sign of delta_v ---
# Prograde (speeding up) or retrograde (slowing down)
var prograde_direction = predicted_velocity_vec.angle()
burn1.desired_rotation_rad = prograde_direction if delta_v1 >= 0 else prograde_direction + PI
var prograde_vec = predicted_velocity_vec.normalized()
var up_vec = Vector3.UP
var target_basis = Basis.looking_at(prograde_vec, up_vec)
# For retrograde (slowing down), we look "backward"
if delta_v1 < 0:
target_basis = Basis.looking_at(-prograde_vec, up_vec)
burn1.desired_basis = target_basis # Renamed in data_types.gd
plan.append(burn1)
var burn2 = DataTypes.ImpulsiveBurnPlan.new()
@ -105,8 +112,13 @@ func calculate_hohmann_transfer():
burn2.burn_duration = burn_duration2
# --- Determine rotation for the second burn ---
target_basis = Basis.looking_at(-prograde_vec, up_vec)
# For retrograde (slowing down), we look "backward"
if delta_v2 < 0:
target_basis = Basis.looking_at(prograde_vec, up_vec)
var target_prograde_direction = (target_body.global_position - star.global_position).orthogonal().angle()
burn2.desired_rotation_rad = target_prograde_direction if delta_v2 >= 0 else target_prograde_direction + PI
burn2.desired_basis = target_prograde_direction if delta_v2 >= 0 else target_prograde_direction + PI
plan.append(burn2)
print("Hohmann Plan:")

View File

@ -1,6 +1,5 @@
# orbital_body_3d.gd
# REFACTOR: Extends Node3D instead of Node2D
@tool
class_name OrbitalBody3D
extends Node3D

View File

@ -1,7 +1,7 @@
[gd_resource type="Resource" script_class="GameConfig" load_steps=5 format=3 uid="uid://cv15sck8rl2b7"]
[ext_resource type="PackedScene" uid="uid://chgycmkkaf7jv" path="res://scenes/characters/pilot_ball.tscn" id="1_s0mxw"]
[ext_resource type="PackedScene" uid="uid://didt2nsdtbmra" path="res://modules/Tube.tscn" id="2_75b4c"]
[ext_resource type="PackedScene" uid="uid://bkwogkfqk2uxo" path="res://modules/3d_test_ship.tscn" id="2_75b4c"]
[ext_resource type="PackedScene" uid="uid://dnre6svquwdtb" path="res://scenes/characters/player_controller.tscn" id="2_sk8k5"]
[ext_resource type="Script" uid="uid://bfc6u1f8sigxj" path="res://scripts/singletons/game_config.gd" id="3_75b4c"]

View File

@ -1,6 +1,6 @@
# scripts/star_system.gd
class_name StarSystem
extends Node2D
extends Node3D
@export_group("System Metadata")
@export var system_name: String = "Kepler-186"

View File

@ -99,4 +99,4 @@ func _spawn_player_ship(star_system: StarSystem, star: OrbitalBody3D, planet_sys
# We use Vector3.UP as the "up" reference
ship_instance.look_at(ship_instance.global_position + l4_velocity.normalized(), Vector3.UP)
print("Player ship spawned at L4 point of %s" % planet_system.name)
print("Player ship spawned at L4 point of %s" % planet_system.name)