From 948fc110bb0c0af2220a8b64b0c21b00c0666477 Mon Sep 17 00:00:00 2001 From: mineiwik <29404520+mineiwik@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:22:25 +0200 Subject: [PATCH 1/7] add rail signal assets --- assets/green_bulb.png | Bin 0 -> 72711 bytes assets/green_bulb.png.import | 34 ++++++++++++++++++++++++++++++++ assets/red_bulb.png | Bin 0 -> 79281 bytes assets/red_bulb.png.import | 34 ++++++++++++++++++++++++++++++++ prefabs/SignalButton.tscn | 21 ++++++++++++++++++++ prefabs/Track.tscn | 37 +++++++++++++++++++++++------------ prefabs/TrackSwitch.tscn | 20 ++++--------------- 7 files changed, 118 insertions(+), 28 deletions(-) create mode 100644 assets/green_bulb.png create mode 100644 assets/green_bulb.png.import create mode 100644 assets/red_bulb.png create mode 100644 assets/red_bulb.png.import create mode 100644 prefabs/SignalButton.tscn diff --git a/assets/green_bulb.png b/assets/green_bulb.png new file mode 100644 index 0000000000000000000000000000000000000000..18def71d138362362b0a0e2f3b1a3d23674a8b6d GIT binary patch literal 72711 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�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 F{|CAc>dF8B literal 0 HcmV?d00001 diff --git a/assets/green_bulb.png.import b/assets/green_bulb.png.import new file mode 100644 index 0000000..9cffa7a --- /dev/null +++ b/assets/green_bulb.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dscmmkun43x73" +path="res://.godot/imported/green_bulb.png-40142b1c42f713f5ea15a2bdd2f3b4da.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/green_bulb.png" +dest_files=["res://.godot/imported/green_bulb.png-40142b1c42f713f5ea15a2bdd2f3b4da.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/red_bulb.png b/assets/red_bulb.png new file mode 100644 index 0000000000000000000000000000000000000000..33e7f2d9719c02676d1252dd1e0f0d2fa48ba9c4 GIT binary patch literal 79281 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 literal 0 HcmV?d00001 diff --git a/assets/red_bulb.png.import b/assets/red_bulb.png.import new file mode 100644 index 0000000..abc739c --- /dev/null +++ b/assets/red_bulb.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2bku7ypsu0q3" +path="res://.godot/imported/red_bulb.png-2510e07db82f9ed84f012733bc27ce16.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/red_bulb.png" +dest_files=["res://.godot/imported/red_bulb.png-2510e07db82f9ed84f012733bc27ce16.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/prefabs/SignalButton.tscn b/prefabs/SignalButton.tscn new file mode 100644 index 0000000..ffbae38 --- /dev/null +++ b/prefabs/SignalButton.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=5 format=3 uid="uid://iw1demrx5nvt"] + +[ext_resource type="Texture2D" uid="uid://c2bku7ypsu0q3" path="res://assets/red_bulb.png" id="1_l1i5j"] +[ext_resource type="Texture2D" uid="uid://dscmmkun43x73" path="res://assets/green_bulb.png" id="2_rqf3p"] + +[sub_resource type="Theme" id="Theme_3hp74"] +CheckButton/icons/checked = ExtResource("1_l1i5j") +CheckButton/icons/unchecked = ExtResource("2_rqf3p") + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_7ypl7"] + +[node name="SignalButton" type="CheckButton"] +offset_right = 524.0 +offset_bottom = 520.0 +rotation = -1.5708 +scale = Vector2(0.05, 0.05) +theme = SubResource("Theme_3hp74") +theme_override_styles/focus = SubResource("StyleBoxEmpty_7ypl7") +keep_pressed_outside = true +shortcut_in_tooltip = false +metadata/_edit_use_anchors_ = true diff --git a/prefabs/Track.tscn b/prefabs/Track.tscn index ebe598e..9e3566c 100644 --- a/prefabs/Track.tscn +++ b/prefabs/Track.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=8 format=3 uid="uid://d1xy67euifbh6"] +[gd_scene load_steps=9 format=3 uid="uid://d1xy67euifbh6"] [ext_resource type="Script" path="res://scripts/Track.gd" id="1_ibb4y"] [ext_resource type="Texture2D" uid="uid://dyk30b1nt2gvq" path="res://assets/crosstie.png" id="2_hrp4r"] [ext_resource type="PackedScene" uid="uid://btfdanletw1gi" path="res://prefabs/TrackJunction.tscn" id="3_el8rw"] +[ext_resource type="PackedScene" uid="uid://iw1demrx5nvt" path="res://prefabs/SignalButton.tscn" id="4_t21tl"] [ext_resource type="Texture2D" uid="uid://dlgfnj8p01ym4" path="res://assets/track.png" id="4_tum5x"] [sub_resource type="Curve2D" id="Curve2D_nxaiu"] @@ -54,13 +55,17 @@ loop = false parent = NodePath("../..") side = 2 -[node name="SignalButton" type="CheckButton" parent="HeadPoint"] +[node name="SignalButton" parent="HeadPoint" instance=ExtResource("4_t21tl")] visible = false -offset_top = 14.0 -offset_right = 44.0 -offset_bottom = 38.0 -shortcut_in_tooltip = false -metadata/_edit_use_anchors_ = true +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = -15.0 +offset_bottom = 505.0 +grow_horizontal = 2 +grow_vertical = 2 [node name="TailPoint" type="PathFollow2D" parent="."] position = Vector2(256, 2.08165e-12) @@ -71,12 +76,20 @@ loop = false parent = NodePath("../..") side = 3 -[node name="SignalButton" type="CheckButton" parent="TailPoint"] +[node name="SignalButton" parent="TailPoint" instance=ExtResource("4_t21tl")] visible = false -offset_left = -44.0 -offset_top = 14.0 -offset_bottom = 38.0 -metadata/_edit_use_anchors_ = true +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = 15.0 +offset_bottom = 535.0 +grow_horizontal = 2 +grow_vertical = 2 +rotation = 1.5708 +size_flags_horizontal = 4 +size_flags_vertical = 4 [node name="TrackLine" type="Line2D" parent="."] z_index = 2 diff --git a/prefabs/TrackSwitch.tscn b/prefabs/TrackSwitch.tscn index e8f17a7..874c2df 100644 --- a/prefabs/TrackSwitch.tscn +++ b/prefabs/TrackSwitch.tscn @@ -6,7 +6,7 @@ [ext_resource type="Texture2D" uid="uid://bk10alqlk6ie2" path="res://assets/switch_left.png" id="4_xc4rb"] [ext_resource type="Texture2D" uid="uid://cfj6l27udpvr7" path="res://assets/arrow.png" id="6_nflxo"] -[sub_resource type="Curve2D" id="Curve2D_30ar5"] +[sub_resource type="Curve2D" id="Curve2D_rvp3s"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -24.017, 16.005, 24.017, -16.005, 64, -16, 0, 0, 0, 0, 128, -32) @@ -32,7 +32,7 @@ instance_count = 13 mesh = SubResource("ArrayMesh_umy7o") buffer = PackedFloat32Array(0.99808, 0.0619333, 0, 4.99647, -0.0619333, 0.99808, 0, -0.176236, 0.992584, 0.121559, 0, 14.9636, -0.121559, 0.992584, 0, -0.961502, 0.98391, 0.178663, 0, 24.872, -0.178663, 0.98391, 0, -2.30135, 0.969346, 0.2457, 0, 34.6786, -0.2457, 0.969346, 0, -4.24865, 0.94496, 0.327186, 0, 44.3185, -0.327186, 0.94496, 0, -6.89664, 0.901405, 0.432977, 0, 53.6711, -0.432977, 0.901405, 0, -10.4225, 0.847395, 0.530963, 0, 62.5187, -0.530963, 0.847395, 0, -15.0622, 0.910454, 0.413611, 0, 71.1488, -0.413611, 0.910454, 0, -20.1015, 0.949217, 0.314623, 0, 80.3623, -0.314623, 0.949217, 0, -23.9742, 0.971893, 0.235421, 0, 89.9171, -0.235421, 0.971893, 0, -26.9124, 0.985566, 0.169291, 0, 99.6749, -0.169291, 0.985566, 0, -29.0903, 0.993711, 0.111974, 0, 109.553, -0.111974, 0.993711, 0, -30.6376, 0.99852, 0.054383, 0, 119.503, -0.054383, 0.99852, 0, -31.6189) -[sub_resource type="Curve2D" id="Curve2D_xv1m5"] +[sub_resource type="Curve2D" id="Curve2D_74r7i"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -23.902, -16.064, 23.902, 16.064, 64, 16, 0, 0, 0, 0, 128, 32) @@ -53,7 +53,7 @@ CheckButton/icons/unchecked = ExtResource("4_xc4rb") script = ExtResource("1_ucgph") [node name="LeftTrack" parent="." groups=["left_track"] instance=ExtResource("2_e5vto")] -curve = SubResource("Curve2D_30ar5") +curve = SubResource("Curve2D_rvp3s") [node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] multimesh = SubResource("MultiMesh_m32f0") @@ -64,9 +64,6 @@ rotation = -0.244979 [node name="TrackJunction" parent="LeftTrack/HeadPoint" index="0"] parent = NodePath("../../..") -[node name="SignalButton" parent="LeftTrack/HeadPoint" index="1"] -visible = false - [node name="TailPoint" parent="LeftTrack" index="3"] position = Vector2(128, -32) rotation = -0.244979 @@ -76,9 +73,6 @@ progress = 133.506 parent = NodePath("../../..") side = 0 -[node name="SignalButton" parent="LeftTrack/TailPoint" index="1"] -visible = false - [node name="TrackLine" parent="LeftTrack" index="4"] points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.76493, -0.031045, 6.62261, -0.249297, 10.0063, -0.487274, 13.9174, -0.842432, 18.2738, -1.33823, 22.9936, -1.99813, 25.4642, -2.39694, 27.9949, -2.84558, 30.5755, -3.34697, 33.1957, -3.90405, 35.8452, -4.51975, 38.514, -5.197, 41.1916, -5.93874, 43.8678, -6.74789, 46.5325, -7.62739, 49.1753, -8.58017, 51.7861, -9.60917, 54.3545, -10.7173, 56.8703, -11.9075, 59.3234, -13.1828, 61.7033, -14.5459, 64, -16, 66.2967, -17.4541, 68.6766, -18.8172, 71.1297, -20.0925, 73.6455, -21.2827, 76.2139, -22.3908, 78.8247, -23.4198, 81.4675, -24.3726, 84.1322, -25.2521, 86.8084, -26.0613, 89.486, -26.803, 92.1548, -27.4802, 94.8044, -28.0959, 97.4245, -28.653, 100.005, -29.1544, 102.536, -29.6031, 105.006, -30.0019, 109.726, -30.6618, 114.083, -31.1576, 117.994, -31.5127, 121.377, -31.7507, 126.235, -31.969, 128, -32) metadata/_edit_lock_ = true @@ -95,7 +89,7 @@ texture = ExtResource("6_nflxo") [node name="RightTrack" parent="." groups=["right_track"] instance=ExtResource("2_e5vto")] z_index = 1 -curve = SubResource("Curve2D_xv1m5") +curve = SubResource("Curve2D_74r7i") [node name="MultiMeshInstance2D" parent="RightTrack" index="1"] multimesh = SubResource("MultiMesh_pixd6") @@ -106,9 +100,6 @@ rotation = 0.244979 [node name="TrackJunction" parent="RightTrack/HeadPoint" index="0"] parent = NodePath("../../..") -[node name="SignalButton" parent="RightTrack/HeadPoint" index="1"] -visible = false - [node name="TailPoint" parent="RightTrack" index="3"] position = Vector2(128, 32) rotation = 0.244979 @@ -118,9 +109,6 @@ progress = 133.535 parent = NodePath("../../..") side = 1 -[node name="SignalButton" parent="RightTrack/TailPoint" index="1"] -visible = false - [node name="TrackLine" parent="RightTrack" index="4"] points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.76964, 0.028625, 6.63878, 0.241, 10.0295, 0.475391, 13.9477, 0.826875, 18.311, 1.31917, 23.0368, 1.976, 25.5098, 2.37353, 28.0427, 2.82108, 30.6249, 3.32162, 33.2462, 3.87813, 35.8963, 4.49355, 38.5649, 5.17086, 41.2417, 5.91302, 43.9163, 6.723, 46.5786, 7.60376, 49.218, 8.55827, 51.8245, 9.58948, 54.3875, 10.7004, 56.8969, 11.8939, 59.3423, 13.173, 61.7135, 14.5408, 64, 16, 66.2865, 17.4592, 68.6577, 18.827, 71.1031, 20.1061, 73.6125, 21.2996, 76.1756, 22.4105, 78.782, 23.4417, 81.4214, 24.3962, 84.0837, 25.277, 86.7583, 26.087, 89.4351, 26.8291, 92.1037, 27.5065, 94.7538, 28.1219, 97.3751, 28.6784, 99.9574, 29.1789, 102.49, 29.6265, 104.963, 30.024, 109.689, 30.6808, 114.052, 31.1731, 117.97, 31.5246, 121.361, 31.759, 126.23, 31.9714, 128, 32) metadata/_edit_lock_ = true From 6abe0481730d8e74b9763666ab0c57f22db2206b Mon Sep 17 00:00:00 2001 From: mineiwik <29404520+mineiwik@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:24:23 +0200 Subject: [PATCH 2/7] add track prefabs and add level 2 & 3 --- .../TrackSwitch_Left45Curve_Right45Curve.tscn | 90 +++++ ...TrackSwitch_Left45Curve_RightStraight.tscn | 90 +++++ .../TrackSwitch_Left90Curve_Right90Curve.tscn | 91 +++++ ...TrackSwitch_Left90Curve_RightStraight.tscn | 91 +++++ ...TrackSwitch_LeftStraight_Right45Curve.tscn | 91 +++++ ...TrackSwitch_LeftStraight_Right90Curve.tscn | 91 +++++ prefabs/Tracks/Track_45_Curve.tscn | 106 ++++++ prefabs/Tracks/Track_90_Curve_Large.tscn | 104 +++++ prefabs/Tracks/Track_90_Curve_Medium.tscn | 104 +++++ prefabs/Tracks/Track_90_Curve_Small.tscn | 103 +++++ scenes/Level2.tscn | 357 ++++++++++++++++++ scenes/Level3.tscn | 295 +++++++++++++++ scripts/Levels/Level2.gd | 28 ++ 13 files changed, 1641 insertions(+) create mode 100644 prefabs/TrackSwitches/TrackSwitch_Left45Curve_Right45Curve.tscn create mode 100644 prefabs/TrackSwitches/TrackSwitch_Left45Curve_RightStraight.tscn create mode 100644 prefabs/TrackSwitches/TrackSwitch_Left90Curve_Right90Curve.tscn create mode 100644 prefabs/TrackSwitches/TrackSwitch_Left90Curve_RightStraight.tscn create mode 100644 prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right45Curve.tscn create mode 100644 prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right90Curve.tscn create mode 100644 prefabs/Tracks/Track_45_Curve.tscn create mode 100644 prefabs/Tracks/Track_90_Curve_Large.tscn create mode 100644 prefabs/Tracks/Track_90_Curve_Medium.tscn create mode 100644 prefabs/Tracks/Track_90_Curve_Small.tscn create mode 100644 scenes/Level2.tscn create mode 100644 scenes/Level3.tscn create mode 100644 scripts/Levels/Level2.gd diff --git a/prefabs/TrackSwitches/TrackSwitch_Left45Curve_Right45Curve.tscn b/prefabs/TrackSwitches/TrackSwitch_Left45Curve_Right45Curve.tscn new file mode 100644 index 0000000..bac151a --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_Left45Curve_Right45Curve.tscn @@ -0,0 +1,90 @@ +[gd_scene load_steps=7 format=3 uid="uid://dv0rp1nuh5ves"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_ngsqx"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9099, 15.5564, 15.9099, -15.5564, 56, -16, 0, 0, 0, 0, 80, -40, 0, 0, 0, 0, 88, -48) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999839, 0.017918, 0, 5, -0.017918, 0.999839, 0, 7.80619e-13, 0.992192, 0.124719, 0, 14.9817, -0.124719, 0.992192, 0, -0.483443, 0.977357, 0.211598, 0, 24.87, -0.211598, 0.977357, 0, -1.94847, 0.945591, 0.325357, 0, 34.5727, -0.325357, 0.945591, 0, -4.34477, 0.884774, 0.46602, 0, 43.8991, -0.46602, 0.884774, 0, -7.92321, 0.758262, 0.65195, 0, 52.485, -0.65195, 0.758262, 0, -13.0107, 0.712023, 0.702156, 0, 59.8432, -0.702156, 0.712023, 0, -19.7698, 0.707563, 0.70665, 0, 66.9529, -0.70665, 0.707563, 0, -26.802, 0.701098, 0.713065, 0, 74.0144, -0.713065, 0.701098, 0, -33.8826, 0.707107, 0.707106, 0, 81.0192, -0.707106, 0.707107, 0, -41.0192) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9491, -15.9704, 15.9491, 15.9704, 56, 16, 0, 0, 0, 0, 80, 40, 0, 0, 0, 0, 88, 48) +} +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999912, -0.0132958, 0, 5, 0.0132958, 0.999912, 0, 7.80619e-13, 0.993157, -0.116789, 0, 14.9862, 0.116789, 0.993157, 0, 0.410031, 0.978234, -0.207504, 0, 24.8843, 0.207504, 0.978234, 0, 1.80522, 0.945319, -0.326147, 0, 34.5931, 0.326147, 0.945319, 0, 4.1747, 0.88189, -0.471456, 0, 43.911, 0.471456, 0.88189, 0, 7.77285, 0.752086, -0.659065, 0, 52.4581, 0.659065, 0.752086, 0, 12.9232, 0.706809, -0.707405, 0, 59.7496, 0.707405, 0.706809, 0, 19.7539, 0.707076, -0.707138, 0, 66.8183, 0.707138, 0.707076, 0, 26.8274, 0.707461, -0.706752, 0, 73.8899, 0.706752, 0.707461, 0, 33.8979, 0.707107, -0.707107, 0, 80.965, 0.707107, 0.707107, 0, 40.965) + +[node name="TrackSwitch" instance=ExtResource("1_ngsqx")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(88, -48) +rotation = -0.785398 +progress = 104.872 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40995, -0.0494466, 13.2627, -0.312388, 15.9283, -0.577639, 18.9925, -0.960728, 22.3846, -1.48314, 26.0338, -2.16637, 29.8694, -3.0319, 33.8208, -4.10121, 37.8173, -5.39581, 41.788, -6.93716, 45.6624, -8.74677, 49.3696, -10.8461, 52.8391, -13.2567, 56, -16, 58.8914, -18.8331, 61.5991, -21.4976, 64.1228, -23.9915, 66.462, -26.3128, 68.6163, -28.4597, 70.5854, -30.43, 73.9662, -33.8336, 76.6012, -36.508, 78.4873, -38.4376, 80, -40, 81.25, -41.25, 84, -44, 86.75, -46.75, 88, -48) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(50.4061, -11.515) +progress = 52.4362 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(88, 48) +rotation = 0.785398 +progress = 104.949 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40834, 0.0324641, 13.2572, 0.254163, 15.9204, 0.494243, 18.9822, 0.851555, 22.3719, 1.3494, 26.0191, 2.0111, 29.8532, 2.85995, 33.8036, 3.91926, 37.7999, 5.21234, 41.7715, 6.76249, 45.6478, 8.59302, 49.3584, 10.7272, 52.8326, 13.1885, 56, 16, 58.8979, 18.9014, 61.6104, 21.6165, 64.1373, 24.1453, 66.4785, 26.4875, 68.6337, 28.6431, 70.6026, 30.612, 73.9809, 33.9889, 76.6116, 36.6172, 78.4928, 38.4958, 80, 40, 81.25, 41.25, 84, 44, 86.75, 46.75, 88, 48) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(50.4243, 11.4282) +rotation = 0.597223 +progress = 52.4745 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/TrackSwitches/TrackSwitch_Left45Curve_RightStraight.tscn b/prefabs/TrackSwitches/TrackSwitch_Left45Curve_RightStraight.tscn new file mode 100644 index 0000000..4482336 --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_Left45Curve_RightStraight.tscn @@ -0,0 +1,90 @@ +[gd_scene load_steps=7 format=3 uid="uid://dnq6bkqmpu7vi"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_k6d0o"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9099, 15.5564, 15.9099, -15.5564, 56, -16, 0, 0, 0, 0, 80, -40, 0, 0, 0, 0, 88, -48) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999839, 0.017918, 0, 5, -0.017918, 0.999839, 0, 7.80619e-13, 0.992192, 0.124719, 0, 14.9817, -0.124719, 0.992192, 0, -0.483443, 0.977357, 0.211598, 0, 24.87, -0.211598, 0.977357, 0, -1.94847, 0.945591, 0.325357, 0, 34.5727, -0.325357, 0.945591, 0, -4.34477, 0.884774, 0.46602, 0, 43.8991, -0.46602, 0.884774, 0, -7.92321, 0.758262, 0.65195, 0, 52.485, -0.65195, 0.758262, 0, -13.0107, 0.712023, 0.702156, 0, 59.8432, -0.702156, 0.712023, 0, -19.7698, 0.707563, 0.70665, 0, 66.9529, -0.70665, 0.707563, 0, -26.802, 0.701098, 0.713065, 0, 74.0144, -0.713065, 0.701098, 0, -33.8826, 0.707107, 0.707106, 0, 81.0192, -0.707106, 0.707107, 0, -41.0192) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 96, 0) +} +point_count = 3 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(1, 1.56124e-13, 0, 5, -1.56124e-13, 1, 0, 7.80619e-13, 1, 0, 0, 15, 0, 1, 0, 0, 1, 0, 0, 25, 0, 1, 0, 0, 1, 0, 0, 35, 0, 1, 0, 0, 1, 0, 0, 45, 0, 1, 0, 0, 1, 0, 0, 55, 0, 1, 0, 0, 1, 0, 0, 65, 0, 1, 0, 0, 1, 0, 0, 75, 0, 1, 0, 0, 1, 0, 0, 85, 0, 1, 0, 0, 1, 0, 0, 95, 0, 1, 0, 0) + +[node name="TrackSwitch" instance=ExtResource("1_k6d0o")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(88, -48) +rotation = -0.785398 +progress = 104.872 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40995, -0.0494466, 13.2627, -0.312388, 15.9283, -0.577639, 18.9925, -0.960728, 22.3846, -1.48314, 26.0338, -2.16637, 29.8694, -3.0319, 33.8208, -4.10121, 37.8173, -5.39581, 41.788, -6.93716, 45.6624, -8.74677, 49.3696, -10.8461, 52.8391, -13.2567, 56, -16, 58.8914, -18.8331, 61.5991, -21.4976, 64.1228, -23.9915, 66.462, -26.3128, 68.6163, -28.4597, 70.5854, -30.43, 73.9662, -33.8336, 76.6012, -36.508, 78.4873, -38.4376, 80, -40, 81.25, -41.25, 84, -44, 86.75, -46.75, 88, -48) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(50.4061, -11.515) +progress = 52.4362 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(96, 0) +rotation = 0.0 +progress = 96.0 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 11.7812, 0, 16.1211, 0, 18.7905, 0, 21.75, 0, 24.9673, 0, 28.4102, 0, 32.0464, 0, 35.8438, 0, 39.77, 0, 43.793, 0, 47.8804, 0, 52, 0, 56.1196, 0, 60.207, 0, 64.23, 0, 68.1562, 0, 71.9536, 0, 75.5898, 0, 79.0327, 0, 82.25, 0, 85.2095, 0, 87.8789, 0, 92.2188, 0, 96, 0) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(47.9996, 0) +rotation = 0.0 +progress = 48.0 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Right90Curve.tscn b/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Right90Curve.tscn new file mode 100644 index 0000000..56a128f --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Right90Curve.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=7 format=3 uid="uid://dcc3pl2umqc4b"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_jitsw"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -16.2635, 16.0867, 16.2635, -16.0867, 56, -16, 0, 0, 0, 0, 72, -64, 0, 0, 0, 0, 72, -72) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 12 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999926, 0.0121826, 0, 5, -0.0121826, 0.999926, 0, 7.80619e-13, 0.993244, 0.116044, 0, 14.9871, -0.116044, 0.993244, 0, -0.39415, 0.978052, 0.208361, 0, 24.8858, -0.208361, 0.978052, 0, -1.78412, 0.944767, 0.327742, 0, 34.5909, -0.327742, 0.944767, 0, -4.16758, 0.881362, 0.472442, 0, 43.9026, -0.472442, 0.881362, 0, -7.78152, 0.75192, 0.659254, 0, 52.4487, -0.659254, 0.75192, 0, -12.9353, 0.554639, 0.832091, 0, 59.4548, -0.832091, 0.554639, 0, -20.0219, 0.389032, 0.921224, 0, 64.5577, -0.921224, 0.389032, 0, -28.5959, 0.255978, 0.966683, 0, 68.105, -0.966683, 0.255978, 0, -37.9336, 0.154646, 0.98797, 0, 70.3884, -0.98797, 0.154646, 0, -47.6633, 0.0580762, 0.998312, 0, 71.6876, -0.998312, 0.0580762, 0, -57.574, -4.37114e-08, 1, 0, 72, -1, -4.37114e-08, 0, -67.5649) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -16.1066, -16.064, 16.1066, 16.064, 56, 16, 0, 0, 0, 0, 72, 64, 0, 0, 0, 0, 72, 72) +} +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 12 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999924, -0.0123415, 0, 5, 0.0123415, 0.999924, 0, 7.80619e-13, 0.993282, -0.11572, 0, 14.987, 0.11572, 0.993282, 0, 0.395749, 0.978271, -0.207329, 0, 24.8862, 0.207329, 0.978271, 0, 1.78218, 0.945024, -0.327002, 0, 34.5937, 0.327002, 0.945024, 0, 4.15614, 0.881373, -0.472421, 0, 43.9079, 0.472421, 0.881373, 0, 7.7638, 0.750299, -0.661099, 0, 52.451, 0.661099, 0.750299, 0, 12.9213, 0.551747, -0.834012, 0, 59.4334, 0.834012, 0.551747, 0, 20.0302, 0.387606, -0.921825, 0, 64.5107, 0.921825, 0.387606, 0, 28.6199, 0.256107, -0.966648, 0, 68.0483, 0.966648, 0.256107, 0, 37.9617, 0.156817, -0.987628, 0, 70.3395, 0.987628, 0.156817, 0, 47.6898, 0.0618072, -0.998088, 0, 71.6636, 0.998088, 0.0618072, 0, 57.5973, -4.37114e-08, -1, 0, 72, 1, -4.37114e-08, 0, 67.587) + +[node name="TrackSwitch" instance=ExtResource("1_jitsw")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(72, -72) +rotation = -1.5708 +progress = 119.435 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.39544, -0.0276939, 13.2129, -0.237808, 15.8571, -0.470818, 18.8993, -0.82089, 22.2704, -1.31184, 25.9012, -1.96749, 29.7226, -2.81165, 33.6655, -3.86815, 37.6606, -5.1608, 41.6388, -6.71342, 45.5311, -8.54984, 49.2681, -10.6939, 52.7808, -13.1693, 56, -16, 58.8598, -19.1901, 61.3569, -22.6811, 63.5158, -26.4033, 65.3612, -30.2866, 66.9175, -34.2611, 68.2095, -38.2569, 69.2618, -42.204, 70.0988, -46.0325, 70.7453, -49.6725, 71.2257, -53.0541, 71.5648, -56.1073, 71.7871, -58.7622, 71.9796, -62.5973, 72, -64, 72, -68, 72, -72) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(56.0174, -16.0173) +rotation = -0.780606 +progress = 59.7176 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(72, 72) +rotation = 1.5708 +progress = 119.413 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40188, 0.028625, 13.235, 0.241, 15.8887, 0.475391, 18.9406, 0.826875, 22.321, 1.31917, 25.96, 1.976, 29.7878, 2.82108, 33.7344, 3.87813, 37.7301, 5.17086, 41.705, 6.723, 45.5893, 8.55827, 49.3131, 10.7004, 52.8067, 13.173, 56, 16, 58.834, 19.1863, 61.3119, 22.6746, 63.4576, 26.3949, 65.295, 30.277, 66.848, 34.251, 68.1406, 38.2469, 69.1966, 42.1945, 70.04, 46.024, 70.6946, 49.6652, 71.1844, 53.0481, 71.5332, 56.1027, 71.765, 58.759, 71.9731, 62.5964, 72, 64, 72, 68, 72, 72) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(56.0042, 16.0042) +rotation = 0.784236 +progress = 59.7065 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/TrackSwitches/TrackSwitch_Left90Curve_RightStraight.tscn b/prefabs/TrackSwitches/TrackSwitch_Left90Curve_RightStraight.tscn new file mode 100644 index 0000000..20b6646 --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_Left90Curve_RightStraight.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=7 format=3 uid="uid://bvfen4semqi3"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_la4of"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -16.1849, 16.1849, 16.1849, -16.1849, 56, -16, 0, 0, 0, 0, 72, -64, 0, 0, 0, 0, 72, -72) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 12 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999939, 0.0110225, 0, 5, -0.0110225, 0.999939, 0, 7.80619e-13, 0.993513, 0.113721, 0, 14.9881, -0.113721, 0.993513, 0, -0.3752, 0.978403, 0.206707, 0, 24.8896, -0.206707, 0.978403, 0, -1.74434, 0.944835, 0.327548, 0, 34.5977, -0.327548, 0.944835, 0, -4.11534, 0.880588, 0.473882, 0, 43.9084, -0.473882, 0.880588, 0, -7.73111, 0.749553, 0.661944, 0, 52.4424, -0.661944, 0.749553, 0, -12.9037, 0.552622, 0.833432, 0, 59.4222, -0.833432, 0.552622, 0, -20.0164, 0.388772, 0.921334, 0, 64.5098, -0.921334, 0.388772, 0, -28.6002, 0.257317, 0.966327, 0, 68.0578, -0.966327, 0.257317, 0, -37.9378, 0.156329, 0.987705, 0, 70.3548, -0.987705, 0.156329, 0, -47.6643, 0.0602997, 0.99818, 0, 71.6729, -0.99818, 0.0602997, 0, -57.5726, -4.37114e-08, 1, 0, 72, -1, -4.37114e-08, 0, -67.5627) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 88, 0) +} +point_count = 2 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 9 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(1, 2.36551e-14, 0, 5, -2.36551e-14, 1, 0, 1.96337e-12, 1, 2.36551e-14, 0, 15, -2.36551e-14, 1, 0, 1.72682e-12, 1, 2.36551e-14, 0, 25, -2.36551e-14, 1, 0, 1.49027e-12, 1, 2.36551e-14, 0, 35, -2.36551e-14, 1, 0, 1.25372e-12, 1, 2.36551e-14, 0, 45, -2.36551e-14, 1, 0, 1.01717e-12, 1, 2.36551e-14, 0, 55, -2.36551e-14, 1, 0, 7.80619e-13, 1, 2.36551e-14, 0, 65, -2.36551e-14, 1, 0, 5.44068e-13, 1, 2.36551e-14, 0, 75, -2.36551e-14, 1, 0, 3.07516e-13, 1, 2.36551e-14, 0, 85, -2.36551e-14, 1, 0, 7.09653e-14) + +[node name="TrackSwitch" instance=ExtResource("1_la4of")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(72, -72) +rotation = -1.5708 +progress = 119.437 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.39867, -0.0236662, 13.224, -0.223998, 15.8729, -0.451039, 18.92, -0.794997, 22.2957, -1.28012, 25.9307, -1.93066, 29.7552, -2.77087, 33.7, -3.825, 37.6954, -5.11729, 41.672, -6.672, 45.5602, -8.51337, 49.2907, -10.6657, 52.7937, -13.1531, 56, -16, 58.8469, -19.2063, 61.3343, -22.7093, 63.4866, -26.4398, 65.328, -30.328, 66.8827, -34.3046, 68.175, -38.3, 69.2291, -42.2448, 70.0693, -46.0693, 70.7199, -49.7043, 71.205, -53.08, 71.549, -56.1271, 71.776, -58.776, 71.9763, -62.6013, 72, -64, 72, -68, 72, -72) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(56, -16) +rotation = -0.785398 +progress = 59.7186 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.36551e-14 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(88, 0) +rotation = -2.36551e-14 +progress = 88.0 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 3.78125, 1.9922e-12, 8.12109, 1.88954e-12, 10.7905, 1.8264e-12, 13.75, 1.75639e-12, 16.9673, 1.68029e-12, 20.4102, 1.59885e-12, 24.0464, 1.51283e-12, 27.8438, 1.423e-12, 31.77, 1.33013e-12, 35.793, 1.23496e-12, 39.8804, 1.13828e-12, 44, 1.04082e-12, 48.1196, 9.43375e-13, 52.207, 8.46687e-13, 56.23, 7.51523e-13, 60.1562, 6.58647e-13, 63.9536, 5.6882e-13, 67.5898, 4.82805e-13, 71.0327, 4.01363e-13, 74.25, 3.25258e-13, 77.2095, 2.55251e-13, 79.8789, 1.92105e-13, 84.2188, 8.94459e-14, 88, 0) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(44, 1.04082e-12) +rotation = -2.36551e-14 +progress = 44.0 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right45Curve.tscn b/prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right45Curve.tscn new file mode 100644 index 0000000..5b6ae57 --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right45Curve.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=7 format=3 uid="uid://dd6cvx5sfi3up"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_6j8r3"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 96, 0) +} +point_count = 2 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(1, 2.16838e-14, 0, 5, -2.16838e-14, 1, 0, 1.97323e-12, 1, 2.16839e-14, 0, 15, -2.16839e-14, 1, 0, 1.75639e-12, 1, 2.16839e-14, 0, 25, -2.16839e-14, 1, 0, 1.53955e-12, 1, 2.16838e-14, 0, 35, -2.16838e-14, 1, 0, 1.32272e-12, 1, 2.16838e-14, 0, 45, -2.16838e-14, 1, 0, 1.10588e-12, 1, 2.16839e-14, 0, 55, -2.16839e-14, 1, 0, 8.89038e-13, 1, 2.16838e-14, 0, 65, -2.16838e-14, 1, 0, 6.72199e-13, 1, 2.16838e-14, 0, 75, -2.16838e-14, 1, 0, 4.55361e-13, 1, 2.16839e-14, 0, 85, -2.16839e-14, 1, 0, 2.38522e-13, 1, 2.16839e-14, 0, 95, -2.16839e-14, 1, 0, 2.16839e-14) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9491, -15.9704, 15.9491, 15.9704, 56, 16, 0, 0, 0, 0, 80, 40, 0, 0, 0, 0, 88, 48) +} +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999912, -0.0132958, 0, 5, 0.0132958, 0.999912, 0, 7.80619e-13, 0.993157, -0.116789, 0, 14.9862, 0.116789, 0.993157, 0, 0.410031, 0.978234, -0.207504, 0, 24.8843, 0.207504, 0.978234, 0, 1.80522, 0.945319, -0.326147, 0, 34.5931, 0.326147, 0.945319, 0, 4.1747, 0.88189, -0.471456, 0, 43.911, 0.471456, 0.88189, 0, 7.77285, 0.752086, -0.659065, 0, 52.4581, 0.659065, 0.752086, 0, 12.9232, 0.706809, -0.707405, 0, 59.7496, 0.707405, 0.706809, 0, 19.7539, 0.707076, -0.707138, 0, 66.8183, 0.707138, 0.707076, 0, 26.8274, 0.707461, -0.706752, 0, 73.8899, 0.706752, 0.707461, 0, 33.8979, 0.707107, -0.707107, 0, 80.965, 0.707107, 0.707107, 0, 40.965) + +[node name="TrackSwitch" instance=ExtResource("1_6j8r3")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.16839e-14 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(96, 0) +rotation = -2.16839e-14 +progress = 96.0 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4.125, 1.9922e-12, 8.85938, 1.88954e-12, 11.7715, 1.8264e-12, 15, 1.75639e-12, 18.5098, 1.68029e-12, 22.2656, 1.59885e-12, 26.2324, 1.51283e-12, 30.375, 1.423e-12, 34.6582, 1.33013e-12, 39.0469, 1.23496e-12, 43.5059, 1.13828e-12, 48, 1.04082e-12, 52.4941, 9.43375e-13, 56.9531, 8.46687e-13, 61.3418, 7.51523e-13, 65.625, 6.58647e-13, 69.7676, 5.6882e-13, 73.7344, 4.82805e-13, 77.4902, 4.01363e-13, 81, 3.25258e-13, 84.2285, 2.55251e-13, 87.1406, 1.92105e-13, 91.875, 8.94459e-14, 96, 0) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(48, 1.04082e-12) +rotation = -2.16839e-14 +progress = 48.0 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(88, 48) +rotation = 0.785398 +progress = 104.949 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40834, 0.0324641, 13.2572, 0.254163, 15.9204, 0.494243, 18.9822, 0.851555, 22.3719, 1.3494, 26.0191, 2.0111, 29.8532, 2.85995, 33.8036, 3.91926, 37.7999, 5.21234, 41.7715, 6.76249, 45.6478, 8.59302, 49.3584, 10.7272, 52.8326, 13.1885, 56, 16, 58.8979, 18.9014, 61.6104, 21.6165, 64.1373, 24.1453, 66.4785, 26.4875, 68.6337, 28.6431, 70.6026, 30.612, 73.9809, 33.9889, 76.6116, 36.6172, 78.4928, 38.4958, 80, 40, 81.25, 41.25, 84, 44, 86.75, 46.75, 88, 48) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(50.4243, 11.4283) +rotation = 0.597223 +progress = 52.4745 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right90Curve.tscn b/prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right90Curve.tscn new file mode 100644 index 0000000..9f962c7 --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right90Curve.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=7 format=3 uid="uid://bjejtrah22b5a"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_earjp"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 96, 0) +} +point_count = 2 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(1, 2.16838e-14, 0, 5, -2.16838e-14, 1, 0, 1.97323e-12, 1, 2.16839e-14, 0, 15, -2.16839e-14, 1, 0, 1.75639e-12, 1, 2.16839e-14, 0, 25, -2.16839e-14, 1, 0, 1.53955e-12, 1, 2.16838e-14, 0, 35, -2.16838e-14, 1, 0, 1.32272e-12, 1, 2.16838e-14, 0, 45, -2.16838e-14, 1, 0, 1.10588e-12, 1, 2.16839e-14, 0, 55, -2.16839e-14, 1, 0, 8.89038e-13, 1, 2.16838e-14, 0, 65, -2.16838e-14, 1, 0, 6.72199e-13, 1, 2.16838e-14, 0, 75, -2.16838e-14, 1, 0, 4.55361e-13, 1, 2.16839e-14, 0, 85, -2.16839e-14, 1, 0, 2.38522e-13, 1, 2.16839e-14, 0, 95, -2.16839e-14, 1, 0, 2.16839e-14) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -16.1066, -16.064, 16.1066, 16.064, 56, 16, 0, 0, 0, 0, 72, 64, 0, 0, 0, 0, 72, 72) +} +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 12 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999924, -0.0123415, 0, 5, 0.0123415, 0.999924, 0, 7.80619e-13, 0.993282, -0.11572, 0, 14.987, 0.11572, 0.993282, 0, 0.395749, 0.978271, -0.207329, 0, 24.8862, 0.207329, 0.978271, 0, 1.78218, 0.945024, -0.327002, 0, 34.5937, 0.327002, 0.945024, 0, 4.15614, 0.881373, -0.472421, 0, 43.9079, 0.472421, 0.881373, 0, 7.7638, 0.750299, -0.661099, 0, 52.451, 0.661099, 0.750299, 0, 12.9213, 0.551747, -0.834012, 0, 59.4334, 0.834012, 0.551747, 0, 20.0302, 0.387606, -0.921825, 0, 64.5107, 0.921825, 0.387606, 0, 28.6199, 0.256107, -0.966648, 0, 68.0483, 0.966648, 0.256107, 0, 37.9617, 0.156817, -0.987628, 0, 70.3395, 0.987628, 0.156817, 0, 47.6898, 0.0618072, -0.998088, 0, 71.6636, 0.998088, 0.0618072, 0, 57.5973, -4.37114e-08, -1, 0, 72, 1, -4.37114e-08, 0, 67.587) + +[node name="TrackSwitch" instance=ExtResource("1_earjp")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.16839e-14 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(96, 0) +rotation = -2.16839e-14 +progress = 96.0 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4.125, 1.9922e-12, 8.85938, 1.88954e-12, 11.7715, 1.8264e-12, 15, 1.75639e-12, 18.5098, 1.68029e-12, 22.2656, 1.59885e-12, 26.2324, 1.51283e-12, 30.375, 1.423e-12, 34.6582, 1.33013e-12, 39.0469, 1.23496e-12, 43.5059, 1.13828e-12, 48, 1.04082e-12, 52.4941, 9.43375e-13, 56.9531, 8.46687e-13, 61.3418, 7.51523e-13, 65.625, 6.58647e-13, 69.7676, 5.6882e-13, 73.7344, 4.82805e-13, 77.4902, 4.01363e-13, 81, 3.25258e-13, 84.2285, 2.55251e-13, 87.1406, 1.92105e-13, 91.875, 8.94459e-14, 96, 0) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(48, 1.04082e-12) +rotation = -2.16839e-14 +progress = 48.0 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(72, 72) +rotation = 1.5708 +progress = 119.413 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40188, 0.028625, 13.235, 0.241, 15.8887, 0.475391, 18.9406, 0.826875, 22.321, 1.31917, 25.96, 1.976, 29.7878, 2.82108, 33.7344, 3.87813, 37.7301, 5.17086, 41.705, 6.723, 45.5893, 8.55827, 49.3131, 10.7004, 52.8067, 13.173, 56, 16, 58.834, 19.1863, 61.3119, 22.6746, 63.4576, 26.3949, 65.295, 30.277, 66.848, 34.251, 68.1406, 38.2469, 69.1966, 42.1945, 70.04, 46.024, 70.6946, 49.6652, 71.1844, 53.0481, 71.5332, 56.1027, 71.765, 58.759, 71.9731, 62.5964, 72, 64, 72, 68, 72, 72) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(56.0042, 16.0042) +rotation = 0.784236 +progress = 59.7065 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/Tracks/Track_45_Curve.tscn b/prefabs/Tracks/Track_45_Curve.tscn new file mode 100644 index 0000000..bf40952 --- /dev/null +++ b/prefabs/Tracks/Track_45_Curve.tscn @@ -0,0 +1,106 @@ +[gd_scene load_steps=9 format=3 uid="uid://bnivg4uv1nogr"] + +[ext_resource type="Script" path="res://scripts/Track.gd" id="1_q7qad"] +[ext_resource type="Texture2D" uid="uid://dyk30b1nt2gvq" path="res://assets/crosstie.png" id="2_wn6b0"] +[ext_resource type="PackedScene" uid="uid://btfdanletw1gi" path="res://prefabs/TrackJunction.tscn" id="3_imsw5"] +[ext_resource type="PackedScene" uid="uid://iw1demrx5nvt" path="res://prefabs/SignalButton.tscn" id="4_8oox5"] +[ext_resource type="Texture2D" uid="uid://dlgfnj8p01ym4" path="res://assets/track.png" id="5_rlsk6"] + +[sub_resource type="Curve2D" id="Curve2D_asyaa"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -16.8086, -8.04456, 16.8086, 8.04456, -80, 8, 0, 0, 0, 0, -48, 32, 0, 0, 0, 0, -40, 40) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_hmeh0"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_nb77j"] +resource_local_to_scene = true +instance_count = 11 +mesh = SubResource("ArrayMesh_hmeh0") +buffer = PackedFloat32Array(0.99998, -0.00625427, 0, -131, 0.00625427, 0.99998, 0, 0, 0.99821, -0.0597991, 0, -121.003, 0.0597991, 0.99821, 0, 0.201691, 0.993981, -0.109557, 0, -111.03, 0.109557, 0.993981, 0, 0.917158, 0.984565, -0.175017, 0, -101.111, 0.175017, 0.984565, 0, 2.17038, 0.962464, -0.27141, 0, -91.3075, 0.27141, 0.962464, 0, 4.12544, 0.902641, -0.430394, 0, -81.8129, 0.430394, 0.902641, 0, 7.22449, 0.840226, -0.542236, 0, -72.9645, 0.542236, 0.840226, 0, 11.8598, 0.791097, -0.611691, 0, -64.688, 0.611691, 0.791097, 0, 17.4654, 0.74764, -0.664105, 0, -56.8854, 0.664105, 0.74764, 0, 23.7164, 0.708123, -0.706089, 0, -49.5264, 0.706089, 0.708123, 0, 30.4837, 0.707107, -0.707107, 0, -42.4503, 0.707107, 0.707107, 0, 37.5497) + +[node name="Track" type="Path2D"] +position = Vector2(144, 0) +curve = SubResource("Curve2D_asyaa") +script = ExtResource("1_q7qad") +metadata/_edit_group_ = true + +[node name="Crosstie" type="MeshInstance2D" parent="."] +visible = false +position = Vector2(-50, -50) +mesh = SubResource("ArrayMesh_hmeh0") +texture = ExtResource("2_wn6b0") + +[node name="MultiMeshInstance2D" type="MultiMeshInstance2D" parent="."] +z_index = 1 +multimesh = SubResource("MultiMesh_nb77j") +texture = ExtResource("2_wn6b0") + +[node name="HeadPoint" type="PathFollow2D" parent="."] +position = Vector2(-136, 0) +loop = false + +[node name="TrackJunction" parent="HeadPoint" instance=ExtResource("3_imsw5")] +parent = NodePath("../..") +side = 2 + +[node name="SignalButton" parent="HeadPoint" instance=ExtResource("4_8oox5")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = -15.0 +offset_bottom = 505.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TailPoint" type="PathFollow2D" parent="."] +position = Vector2(-40, 40) +rotation = 0.785398 +progress = 108.465 +loop = false + +[node name="TrackJunction" parent="TailPoint" instance=ExtResource("3_imsw5")] +parent = NodePath("../..") +side = 3 + +[node name="SignalButton" parent="TailPoint" instance=ExtResource("4_8oox5")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = 15.0 +offset_bottom = 535.0 +grow_horizontal = 2 +grow_vertical = 2 +rotation = 1.5708 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TrackLine" type="Line2D" parent="."] +z_index = 2 +points = PackedVector2Array(-136, 0, -132, 0, -128, 0, -126.627, 0.0137973, -122.864, 0.118734, -120.253, 0.235165, -117.244, 0.410126, -113.906, 0.655529, -110.303, 0.98329, -106.504, 1.40532, -102.574, 1.93354, -98.581, 2.57986, -94.5911, 3.3562, -90.6714, 4.27447, -86.8884, 5.34658, -83.309, 6.58445, -80, 8, -76.8707, 9.59523, -73.7991, 11.3409, -70.8052, 13.2021, -67.9089, 15.1438, -65.13, 17.1311, -62.4884, 19.129, -60.004, 21.1025, -57.6968, 23.0167, -55.5865, 24.8367, -53.693, 26.5274, -50.6363, 29.3813, -48, 32, -46.75, 33.25, -44, 36, -41.25, 38.75, -40, 40) +width = 20.0 +texture = ExtResource("5_rlsk6") +texture_mode = 1 +metadata/_edit_lock_ = true + +[connection signal="pressed" from="HeadPoint/SignalButton" to="." method="_on_head_signal_button_pressed" flags=18] +[connection signal="pressed" from="TailPoint/SignalButton" to="." method="_on_tail_signal_button_pressed" flags=18] diff --git a/prefabs/Tracks/Track_90_Curve_Large.tscn b/prefabs/Tracks/Track_90_Curve_Large.tscn new file mode 100644 index 0000000..5586fc3 --- /dev/null +++ b/prefabs/Tracks/Track_90_Curve_Large.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=9 format=3 uid="uid://bknekykd6qsdk"] + +[ext_resource type="Script" path="res://scripts/Track.gd" id="1_mlf3p"] +[ext_resource type="Texture2D" uid="uid://dyk30b1nt2gvq" path="res://assets/crosstie.png" id="2_u1ttr"] +[ext_resource type="PackedScene" uid="uid://btfdanletw1gi" path="res://prefabs/TrackJunction.tscn" id="3_dbgdd"] +[ext_resource type="PackedScene" uid="uid://iw1demrx5nvt" path="res://prefabs/SignalButton.tscn" id="4_ijhon"] +[ext_resource type="Texture2D" uid="uid://dlgfnj8p01ym4" path="res://assets/track.png" id="5_8gp8p"] + +[sub_resource type="Curve2D" id="Curve2D_asyaa"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -63.7489, -64.5039, 63.7489, 64.5039, 64, 64, 0, 0, 0, 0, 128, 256, 0, 0, 0, 0, 128, 264) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_hmeh0"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_nb77j"] +resource_local_to_scene = true +instance_count = 43 +mesh = SubResource("ArrayMesh_hmeh0") +buffer = PackedFloat32Array(0.99999, -0.00447102, 0, -131, 0.00447102, 0.99999, 0, 0, 0.99909, -0.0426574, 0, -121.002, 0.0426574, 0.99909, 0, 0.153322, 0.997582, -0.0695048, 0, -111.015, 0.0695048, 0.997582, 0, 0.653656, 0.995641, -0.0932723, 0, -101.044, 0.0932723, 0.995641, 0, 1.41022, 0.993185, -0.116547, 0, -91.0934, 0.116547, 0.993185, 0, 2.40264, 0.990199, -0.139662, 0, -81.1684, 0.139662, 0.990199, 0, 3.623, 0.986696, -0.162577, 0, -71.2746, 0.162577, 0.986696, 0, 5.07507, 0.982471, -0.186415, 0, -61.4184, 0.186415, 0.982471, 0, 6.76295, 0.977158, -0.212514, 0, -51.6064, 0.212514, 0.977158, 0, 8.69108, 0.971289, -0.237902, 0, -41.8489, 0.237902, 0.971289, 0, 10.8787, 0.963668, -0.267104, 0, -32.1547, 0.267104, 0.963668, 0, 13.3308, 0.955169, -0.296062, 0, -22.5385, 0.296062, 0.955169, 0, 16.073, 0.944509, -0.328487, 0, -13.0112, 0.328487, 0.944509, 0, 19.1096, 0.931989, -0.362486, 0, -3.59682, 0.362486, 0.931989, 0, 22.4797, 0.917311, -0.398172, 0, 5.68769, 0.398172, 0.917311, 0, 26.1921, 0.898758, -0.438446, 0, 14.8187, 0.438446, 0.898758, 0, 30.2676, 0.877306, -0.479932, 0, 23.7542, 0.479932, 0.877306, 0, 34.7549, 0.851942, -0.523637, 0, 32.4661, 0.523637, 0.851942, 0, 39.6616, 0.820015, -0.572342, 0, 40.9129, 0.572342, 0.820015, 0, 45.0117, 0.783383, -0.621539, 0, 49.0239, 0.621539, 0.783383, 0, 50.8579, 0.740775, -0.671754, 0, 56.7546, 0.671754, 0.740775, 0, 57.1975, 0.688514, -0.725223, 0, 64.0412, 0.725223, 0.688514, 0, 64.0429, 0.638634, -0.769511, 0, 70.8005, 0.769511, 0.638634, 0, 71.4096, 0.59006, -0.807359, 0, 77.0638, 0.807359, 0.59006, 0, 79.2024, 0.540678, -0.84123, 0, 82.8418, 0.84123, 0.540678, 0, 87.3622, 0.496784, -0.867874, 0, 88.137, 0.867874, 0.496784, 0, 95.8435, 0.455424, -0.890274, 0, 92.9996, 0.890274, 0.455424, 0, 104.58, 0.414387, -0.910101, 0, 97.4523, 0.910101, 0.414387, 0, 113.533, 0.378385, -0.925648, 0, 101.505, 0.925648, 0.378385, 0, 122.674, 0.344737, -0.938699, 0, 105.203, 0.938699, 0.344737, 0, 131.965, 0.311297, -0.950313, 0, 108.566, 0.950313, 0.311297, 0, 141.381, 0.28205, -0.9594, 0, 111.605, 0.9594, 0.28205, 0, 150.908, 0.253762, -0.967267, 0, 114.356, 0.967267, 0.253762, 0, 160.522, 0.226935, -0.97391, 0, 116.822, 0.97391, 0.226935, 0, 170.212, 0.201515, -0.979485, 0, 119.03, 0.979485, 0.201515, 0, 179.965, 0.177902, -0.984048, 0, 120.984, 0.984048, 0.177902, 0, 189.772, 0.154092, -0.988056, 0, 122.701, 0.988056, 0.154092, 0, 199.624, 0.131261, -0.991348, 0, 124.186, 0.991348, 0.131261, 0, 209.512, 0.109307, -0.994008, 0, 125.444, 0.994008, 0.109307, 0, 219.433, 0.0860082, -0.996294, 0, 126.477, 0.996294, 0.0860082, 0, 229.379, 0.061393, -0.998114, 0, 127.277, 0.998114, 0.061393, 0, 239.347, 0.0309284, -0.999522, 0, 127.821, 0.999522, 0.0309284, 0, 249.332, -4.37114e-08, -1, 0, 128, 1, -4.37114e-08, 0, 259.329) + +[node name="Track" type="Path2D"] +curve = SubResource("Curve2D_asyaa") +script = ExtResource("1_mlf3p") + +[node name="Crosstie" type="MeshInstance2D" parent="."] +visible = false +position = Vector2(-50, -50) +mesh = SubResource("ArrayMesh_hmeh0") +texture = ExtResource("2_u1ttr") + +[node name="MultiMeshInstance2D" type="MultiMeshInstance2D" parent="."] +z_index = 1 +multimesh = SubResource("MultiMesh_nb77j") +texture = ExtResource("2_u1ttr") + +[node name="HeadPoint" type="PathFollow2D" parent="."] +position = Vector2(-136, 0) +loop = false + +[node name="TrackJunction" parent="HeadPoint" instance=ExtResource("3_dbgdd")] +parent = NodePath("../..") +side = 2 + +[node name="SignalButton" parent="HeadPoint" instance=ExtResource("4_ijhon")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = -15.0 +offset_bottom = 505.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TailPoint" type="PathFollow2D" parent="."] +position = Vector2(128, 264) +rotation = 1.5708 +progress = 429.671 +loop = false + +[node name="TrackJunction" parent="TailPoint" instance=ExtResource("3_dbgdd")] +parent = NodePath("../..") +side = 3 + +[node name="SignalButton" parent="TailPoint" instance=ExtResource("4_ijhon")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = 15.0 +offset_bottom = 535.0 +grow_horizontal = 2 +grow_vertical = 2 +rotation = 1.5708 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TrackLine" type="Line2D" parent="."] +z_index = 2 +points = PackedVector2Array(-136, 0, -132, 0, -128, 0, -126.544, 0.010089, -122.365, 0.104332, -119.342, 0.213001, -115.744, 0.378694, -111.607, 0.613409, -106.965, 0.929139, -104.466, 1.12113, -101.854, 1.33788, -99.1332, 1.58088, -96.3088, 1.85163, -93.3847, 2.15163, -90.3654, 2.48238, -87.2553, 2.84539, -84.0588, 3.24214, -80.7803, 3.67413, -77.4242, 4.14288, -73.995, 4.64988, -70.497, 5.19662, -66.9347, 5.7846, -63.3125, 6.41534, -59.6347, 7.09032, -55.9058, 7.81104, -52.1303, 8.57901, -48.3125, 9.39572, -44.4568, 10.2627, -40.5676, 11.1814, -36.6494, 12.1533, -32.7066, 13.18, -28.7435, 14.2629, -24.7647, 15.4036, -20.7744, 16.6035, -16.7772, 17.8641, -12.7773, 19.187, -8.77936, 20.5736, -4.78763, 22.0254, -0.806566, 23.544, 3.15943, 25.1309, 7.10593, 26.7874, 11.0285, 28.5152, 14.9228, 30.3157, 18.7844, 32.1905, 22.6089, 34.141, 26.3918, 36.1687, 30.1287, 38.2752, 33.8153, 40.4619, 37.4471, 42.7303, 41.0197, 45.082, 44.5287, 47.5184, 47.9697, 50.041, 51.3383, 52.6513, 54.63, 55.3509, 57.8405, 58.1412, 60.9653, 61.0237, 64, 64, 66.942, 67.069, 69.7924, 70.226, 72.5526, 73.4665, 75.2242, 76.7862, 77.8086, 80.1807, 80.3072, 83.6457, 82.7215, 87.1768, 85.0529, 90.7697, 87.3029, 94.4199, 89.4728, 98.1232, 91.5643, 101.875, 93.5786, 105.671, 95.5173, 109.508, 97.3818, 113.38, 99.1736, 117.283, 100.894, 121.213, 102.545, 125.165, 104.127, 129.136, 105.642, 133.12, 107.092, 137.114, 108.478, 141.113, 109.801, 145.112, 111.062, 149.108, 112.265, 153.096, 113.409, 157.072, 114.496, 161.031, 115.527, 164.969, 116.505, 168.881, 117.43, 172.764, 118.305, 176.612, 119.129, 180.422, 119.906, 184.189, 120.636, 187.909, 121.32, 191.577, 121.961, 195.189, 122.56, 198.741, 123.117, 202.228, 123.635, 205.646, 124.115, 208.991, 124.559, 212.258, 124.967, 215.443, 125.342, 218.541, 125.685, 221.549, 125.996, 224.461, 126.279, 227.274, 126.533, 229.982, 126.762, 232.583, 126.965, 235.071, 127.302, 239.691, 127.557, 243.809, 127.74, 247.389, 127.865, 250.396, 127.982, 254.552, 128, 256, 128, 260, 128, 264) +width = 20.0 +texture = ExtResource("5_8gp8p") +texture_mode = 1 +metadata/_edit_lock_ = true + +[connection signal="pressed" from="HeadPoint/SignalButton" to="." method="_on_head_signal_button_pressed" flags=18] +[connection signal="pressed" from="TailPoint/SignalButton" to="." method="_on_tail_signal_button_pressed" flags=18] diff --git a/prefabs/Tracks/Track_90_Curve_Medium.tscn b/prefabs/Tracks/Track_90_Curve_Medium.tscn new file mode 100644 index 0000000..1bfdc77 --- /dev/null +++ b/prefabs/Tracks/Track_90_Curve_Medium.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=9 format=3 uid="uid://cgg0iicpep7b2"] + +[ext_resource type="Script" path="res://scripts/Track.gd" id="1_avuhy"] +[ext_resource type="Texture2D" uid="uid://dyk30b1nt2gvq" path="res://assets/crosstie.png" id="2_58l1w"] +[ext_resource type="PackedScene" uid="uid://btfdanletw1gi" path="res://prefabs/TrackJunction.tscn" id="3_2qf6x"] +[ext_resource type="PackedScene" uid="uid://iw1demrx5nvt" path="res://prefabs/SignalButton.tscn" id="4_nn4g1"] +[ext_resource type="Texture2D" uid="uid://dlgfnj8p01ym4" path="res://assets/track.png" id="5_dv415"] + +[sub_resource type="Curve2D" id="Curve2D_asyaa"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_hmeh0"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_nb77j"] +resource_local_to_scene = true +instance_count = 21 +mesh = SubResource("ArrayMesh_hmeh0") +buffer = PackedFloat32Array(0.999885, -0.0151967, 0, -3, 0.0151967, 0.999885, 0, 0, 0.991147, -0.132768, 0, 6.97848, 0.132768, 0.991147, 0, 0.514451, 0.97704, -0.213057, 0, 16.8568, 0.213057, 0.97704, 0, 2.04871, 0.9591, -0.283066, 0, 26.585, 0.283066, 0.9591, 0, 4.35361, 0.936153, -0.351594, 0, 36.1225, 0.351594, 0.936153, 0, 7.35176, 0.909868, -0.414897, 0, 45.4217, 0.414897, 0.909868, 0, 11.0232, 0.876674, -0.481086, 0, 54.4353, 0.481086, 0.876674, 0, 15.3479, 0.840182, -0.542304, 0, 63.113, 0.542304, 0.840182, 0, 20.312, 0.79881, -0.601584, 0, 71.4131, 0.601584, 0.79881, 0, 25.8841, 0.755106, -0.655603, 0, 79.2886, 0.655603, 0.755106, 0, 32.0419, 0.704947, -0.70926, 0, 86.711, 0.70926, 0.704947, 0, 38.739, 0.649121, -0.760685, 0, 93.6308, 0.760685, 0.649121, 0, 45.9549, 0.595399, -0.80343, 0, 99.9968, 0.80343, 0.595399, 0, 53.6636, 0.535589, -0.844479, 0, 105.802, 0.844479, 0.535589, 0, 61.8023, 0.471631, -0.881796, 0, 111.004, 0.881796, 0.471631, 0, 70.3398, 0.406769, -0.913531, 0, 115.554, 0.913531, 0.406769, 0, 79.242, 0.340047, -0.940408, 0, 119.464, 0.940408, 0.340047, 0, 88.4434, 0.272679, -0.962105, 0, 122.695, 0.962105, 0.272679, 0, 97.9044, 0.19998, -0.9798, 0, 125.244, 0.9798, 0.19998, 0, 107.572, 0.12099, -0.992654, 0, 127.039, 0.992654, 0.12099, 0, 117.406, 0.00455207, -0.99999, 0, 127.977, 0.99999, 0.00455207, 0, 127.356) + +[node name="Track" type="Path2D"] +curve = SubResource("Curve2D_asyaa") +script = ExtResource("1_avuhy") + +[node name="Crosstie" type="MeshInstance2D" parent="."] +visible = false +position = Vector2(-50, -50) +mesh = SubResource("ArrayMesh_hmeh0") +texture = ExtResource("2_58l1w") + +[node name="MultiMeshInstance2D" type="MultiMeshInstance2D" parent="."] +z_index = 1 +multimesh = SubResource("MultiMesh_nb77j") +texture = ExtResource("2_58l1w") + +[node name="HeadPoint" type="PathFollow2D" parent="."] +position = Vector2(-8, 0) +loop = false + +[node name="TrackJunction" parent="HeadPoint" instance=ExtResource("3_2qf6x")] +parent = NodePath("../..") +side = 2 + +[node name="SignalButton" parent="HeadPoint" instance=ExtResource("4_nn4g1")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = -15.0 +offset_bottom = 505.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TailPoint" type="PathFollow2D" parent="."] +position = Vector2(128, 136) +rotation = 1.5708 +progress = 213.645 +loop = false + +[node name="TrackJunction" parent="TailPoint" instance=ExtResource("3_2qf6x")] +parent = NodePath("../..") +side = 3 + +[node name="SignalButton" parent="TailPoint" instance=ExtResource("4_nn4g1")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = 15.0 +offset_bottom = 535.0 +grow_horizontal = 2 +grow_vertical = 2 +rotation = 1.5708 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TrackLine" type="Line2D" parent="."] +z_index = 2 +points = PackedVector2Array(-8, 0, -4, 0, 0, 0, 2.1382, 0.0812788, 4.6883, 0.270261, 8.1167, 0.635813, 12.3416, 1.23619, 14.7272, 1.64264, 17.2813, 2.12965, 19.9936, 2.70449, 22.854, 3.37445, 25.8521, 4.1468, 28.9779, 5.02883, 32.221, 6.02783, 35.5712, 7.15107, 39.0183, 8.40584, 42.5522, 9.79942, 46.1625, 11.3391, 49.8391, 13.0321, 53.5717, 14.8858, 57.3501, 16.9074, 61.1641, 19.1043, 65.0035, 21.4836, 68.858, 24.0528, 72.7174, 26.819, 76.5716, 29.7895, 80.4102, 32.9717, 82.3205, 34.6444, 84.2231, 36.3727, 86.1167, 38.1576, 88, 40, 89.8485, 41.8772, 91.6392, 43.765, 93.373, 45.6621, 95.0507, 47.5674, 98.2419, 51.397, 101.22, 55.2435, 103.993, 59.0967, 106.567, 62.9461, 108.95, 66.7815, 111.15, 70.5926, 113.173, 74.3691, 115.028, 78.1007, 116.721, 81.7771, 118.26, 85.3881, 119.653, 88.9233, 120.905, 92.3724, 122.026, 95.7251, 123.022, 98.9712, 123.901, 102.1, 124.669, 105.102, 125.335, 107.966, 125.906, 110.683, 126.389, 113.241, 126.791, 115.631, 127.383, 119.864, 127.741, 123.3, 127.924, 125.856, 128, 128, 128, 132, 128, 136) +width = 20.0 +texture = ExtResource("5_dv415") +texture_mode = 1 +metadata/_edit_lock_ = true + +[connection signal="pressed" from="HeadPoint/SignalButton" to="." method="_on_head_signal_button_pressed" flags=18] +[connection signal="pressed" from="TailPoint/SignalButton" to="." method="_on_tail_signal_button_pressed" flags=18] diff --git a/prefabs/Tracks/Track_90_Curve_Small.tscn b/prefabs/Tracks/Track_90_Curve_Small.tscn new file mode 100644 index 0000000..84f0cea --- /dev/null +++ b/prefabs/Tracks/Track_90_Curve_Small.tscn @@ -0,0 +1,103 @@ +[gd_scene load_steps=9 format=3 uid="uid://eky3mqmnjgl3"] + +[ext_resource type="Script" path="res://scripts/Track.gd" id="1_m1acl"] +[ext_resource type="Texture2D" uid="uid://dyk30b1nt2gvq" path="res://assets/crosstie.png" id="2_qbgkx"] +[ext_resource type="PackedScene" uid="uid://btfdanletw1gi" path="res://prefabs/TrackJunction.tscn" id="3_5bh4n"] +[ext_resource type="PackedScene" uid="uid://iw1demrx5nvt" path="res://prefabs/SignalButton.tscn" id="4_0a5rv"] +[ext_resource type="Texture2D" uid="uid://dlgfnj8p01ym4" path="res://assets/track.png" id="5_ftl6c"] + +[sub_resource type="Curve2D" id="Curve2D_asyaa"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 72) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_hmeh0"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_nb77j"] +resource_local_to_scene = true +instance_count = 11 +mesh = SubResource("ArrayMesh_hmeh0") +buffer = PackedFloat32Array(0.99968, -0.0253068, 0, 61, 0.0253068, 0.99968, 0, 0, 0.981998, -0.188892, 0, 70.9599, 0.188892, 0.981998, 0, 0.687036, 0.941347, -0.337441, 0, 80.6761, 0.337441, 0.941347, 0, 2.99474, 0.876872, -0.480724, 0, 89.9316, 0.480724, 0.876872, 0, 6.7503, 0.793739, -0.608259, 0, 98.5016, 0.608259, 0.793739, 0, 11.8787, 0.69312, -0.720822, 0, 106.221, 0.720822, 0.69312, 0, 18.2175, 0.588908, -0.8082, 0, 112.866, 0.8082, 0.588908, 0, 25.6776, 0.474599, -0.880202, 0, 118.47, 0.880202, 0.474599, 0, 33.9464, 0.346064, -0.938211, 0, 122.921, 0.938211, 0.346064, 0, 42.8918, 0.210665, -0.977558, 0, 126.088, 0.977558, 0.210665, 0, 52.3694, 0.0339044, -0.999425, 0, 127.831, 0.999425, 0.0339044, 0, 62.2031) + +[node name="Track" type="Path2D"] +curve = SubResource("Curve2D_asyaa") +script = ExtResource("1_m1acl") + +[node name="Crosstie" type="MeshInstance2D" parent="."] +visible = false +position = Vector2(-50, -50) +mesh = SubResource("ArrayMesh_hmeh0") +texture = ExtResource("2_qbgkx") + +[node name="MultiMeshInstance2D" type="MultiMeshInstance2D" parent="."] +z_index = 1 +multimesh = SubResource("MultiMesh_nb77j") +texture = ExtResource("2_qbgkx") + +[node name="HeadPoint" type="PathFollow2D" parent="."] +position = Vector2(56, 0) +loop = false + +[node name="TrackJunction" parent="HeadPoint" instance=ExtResource("3_5bh4n")] +parent = NodePath("../..") +side = 2 + +[node name="SignalButton" parent="HeadPoint" instance=ExtResource("4_0a5rv")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = -15.0 +offset_bottom = 505.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TailPoint" type="PathFollow2D" parent="."] +position = Vector2(128, 72) +rotation = 1.5708 +progress = 114.805 +loop = false + +[node name="TrackJunction" parent="TailPoint" instance=ExtResource("3_5bh4n")] +parent = NodePath("../..") +side = 3 + +[node name="SignalButton" parent="TailPoint" instance=ExtResource("4_0a5rv")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = 15.0 +offset_bottom = 535.0 +grow_horizontal = 2 +grow_vertical = 2 +rotation = 1.5708 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TrackLine" type="Line2D" parent="."] +z_index = 2 +points = PackedVector2Array(56, 0, 60, 0, 64, 0, 68.1281, 0.261568, 72.7714, 0.95919, 75.5871, 1.55782, 78.6748, 2.36418, 81.9915, 3.40916, 85.4939, 4.72365, 89.1392, 6.33853, 92.8842, 8.2847, 96.6858, 10.593, 100.501, 13.2945, 104.287, 16.4198, 106.155, 18.1511, 108, 20, 109.776, 21.9177, 111.444, 23.8497, 114.468, 27.7368, 117.099, 31.6218, 119.366, 35.4653, 121.294, 39.2279, 122.912, 42.8701, 124.247, 46.3526, 125.325, 49.6358, 126.175, 52.6805, 126.822, 55.4471, 127.622, 59.9884, 128, 64, 128, 68, 128, 72) +width = 20.0 +texture = ExtResource("5_ftl6c") +texture_mode = 1 + +[connection signal="pressed" from="HeadPoint/SignalButton" to="." method="_on_head_signal_button_pressed" flags=18] +[connection signal="pressed" from="TailPoint/SignalButton" to="." method="_on_tail_signal_button_pressed" flags=18] diff --git a/scenes/Level2.tscn b/scenes/Level2.tscn new file mode 100644 index 0000000..cf39772 --- /dev/null +++ b/scenes/Level2.tscn @@ -0,0 +1,357 @@ +[gd_scene load_steps=27 format=3 uid="uid://dhrcwth0f3bi0"] + +[ext_resource type="Script" path="res://scripts/Levels/Level2.gd" id="1_ahmya"] +[ext_resource type="Script" path="res://scripts/TracksController.gd" id="2_ai76e"] +[ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="3_ud27o"] +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="4_iman8"] +[ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="5_jlsfp"] +[ext_resource type="PackedScene" uid="uid://c5rp2hi42rfrv" path="res://prefabs/TrainEngine.tscn" id="6_2g7vp"] +[ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="7_p34jf"] +[ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="8_xs6w7"] + +[sub_resource type="Curve2D" id="Curve2D_p3nge"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 208, 112, -23.833, 36.0765, 23.833, -36.0765, 176, 32, 0, 0, 0, 0, 264, 0) +} +point_count = 3 + +[sub_resource type="Curve2D" id="Curve2D_wvr62"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 96.1665, 5.65692) +} +point_count = 2 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_2dy52"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.998274, -0.0587227, 0, 4.99137, 0.0587227, 0.998274, 0, 0.293614, 0.998274, -0.0587227, 0, 14.9741, 0.0587227, 0.998274, 0, 0.880841, 0.998274, -0.0587227, 0, 24.9569, 0.0587227, 0.998274, 0, 1.46807, 0.998274, -0.0587227, 0, 34.9396, 0.0587227, 0.998274, 0, 2.05529, 0.998274, -0.0587227, 0, 44.9223, 0.0587227, 0.998274, 0, 2.64252, 0.998274, -0.0587228, 0, 54.9051, 0.0587228, 0.998274, 0, 3.22975, 0.998274, -0.0587226, 0, 64.8878, 0.0587226, 0.998274, 0, 3.81698, 0.998274, -0.0587227, 0, 74.8706, 0.0587227, 0.998274, 0, 4.4042, 0.998274, -0.058723, 0, 84.8533, 0.058723, 0.998274, 0, 4.99143, 0.998274, -0.0587227, 0, 94.8361, 0.0587227, 0.998274, 0, 5.57866) + +[sub_resource type="Curve2D" id="Curve2D_q6d23"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -18.0684, -18.0085, 18.0684, 18.0085, 62.2254, 16.9706, 0, 0, 0, 0, 96.1665, 50.9117) +} +point_count = 3 + +[sub_resource type="MultiMesh" id="MultiMesh_yocj8"] +resource_local_to_scene = true +instance_count = 11 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999049, -0.0436099, 0, 4.99933, 0.0436099, 0.999049, 0, 0.0488746, 0.994522, -0.104527, 0, 14.9811, 0.104527, 0.994522, 0, 0.627066, 0.985411, -0.170193, 0, 24.9078, 0.170193, 0.985411, 0, 1.82289, 0.967065, -0.254529, 0, 34.7237, 0.254529, 0.967065, 0, 3.71877, 0.92969, -0.368342, 0, 44.3161, 0.368342, 0.92969, 0, 6.52693, 0.849053, -0.528308, 0, 53.448, 0.528308, 0.849053, 0, 10.5731, 0.717449, -0.696611, 0, 61.547, 0.696611, 0.717449, 0, 16.3878, 0.707669, -0.706544, 0, 68.6724, 0.706544, 0.707669, 0, 23.4009, 0.707199, -0.707014, 0, 75.7479, 0.707014, 0.707199, 0, 30.4676, 0.706773, -0.70744, 0, 82.8188, 0.70744, 0.706773, 0, 37.5388, 0.706311, -0.707902, 0, 89.8854, 0.707902, 0.706311, 0, 44.6143) + +[sub_resource type="Curve2D" id="Curve2D_853vy"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -4, 0, -9.2703, 24.8974, 9.2703, -24.8974, 56, -24, -1.38898, -2.48031, 1.38898, 2.48031, 40, -80) +} +point_count = 3 + +[sub_resource type="Curve2D" id="Curve2D_h0bto"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 200, 104, -6.62164, 38.4055, 6.62164, -38.4055, 152, 64, 1.11362, 0.890899, -1.11362, -0.890899, 168, 24) +} +point_count = 3 + +[sub_resource type="Curve2D" id="Curve2D_6fh71"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -48, -16, 0, 0, 0, 0, 128, -16) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_u77jj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(4.49492, -5.61865, -4.49492, 5.61865, -64, -48, 8.30851, -5.48008, -8.30851, 5.48008, 280, 104) +} +point_count = 2 + +[sub_resource type="MultiMesh" id="MultiMesh_wannq"] +resource_local_to_scene = true +instance_count = 38 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.887414, -0.460974, 0, -60.0108, 0.460974, 0.887414, 0, -45.0042, 0.905093, -0.425215, 0, -51.0767, 0.425215, 0.905093, 0, -40.5151, 0.911384, -0.411557, 0, -42.0062, 0.411557, 0.911384, 0, -36.3054, 0.914674, -0.404193, 0, -32.883, 0.404193, 0.914674, 0, -32.2105, 0.916744, -0.399476, 0, -23.7304, 0.399476, 0.916744, 0, -28.1819, 0.918207, -0.396102, 0, -14.5591, 0.396102, 0.918207, 0, -24.1962, 0.919262, -0.393646, 0, -5.37424, 0.393646, 0.919262, 0, -20.2416, 0.920054, -0.391792, 0, 3.82057, 0.391792, 0.920054, 0, -16.3103, 0.92071, -0.390248, 0, 13.023, 0.390248, 0.92071, 0, -12.3968, 0.921213, -0.389059, 0, 22.2313, 0.389059, 0.921213, 0, -8.49726, 0.921609, -0.38812, 0, 31.4445, 0.38812, 0.921609, 0, -4.60922, 0.921924, -0.38737, 0, 40.6614, 0.38737, 0.921924, 0, -0.729957, 0.92218, -0.386761, 0, 49.8814, 0.386761, 0.92218, 0, 3.14205, 0.922369, -0.38631, 0, 59.1037, 0.38631, 0.922369, 0, 7.00846, 0.922513, -0.385965, 0, 68.3278, 0.385965, 0.922513, 0, 10.8706, 0.922612, -0.385729, 0, 77.5532, 0.385729, 0.922612, 0, 14.7296, 0.922668, -0.385596, 0, 86.7795, 0.385596, 0.922668, 0, 18.5865, 0.922685, -0.385554, 0, 96.0062, 0.385554, 0.922685, 0, 22.4423, 0.922664, -0.385606, 0, 105.233, 0.385606, 0.922664, 0, 26.2979, 0.922604, -0.385748, 0, 114.46, 0.385748, 0.922604, 0, 30.1543, 0.922506, -0.385982, 0, 123.685, 0.385982, 0.922506, 0, 34.0123, 0.92237, -0.386308, 0, 132.91, 0.386308, 0.92237, 0, 37.8729, 0.92218, -0.38676, 0, 142.133, 0.38676, 0.92218, 0, 41.7369, 0.921951, -0.387306, 0, 151.355, 0.387306, 0.921951, 0, 45.6059, 0.921672, -0.387971, 0, 160.573, 0.387971, 0.921672, 0, 49.4805, 0.921307, -0.388837, 0, 169.789, 0.388837, 0.921307, 0, 53.3621, 0.920892, -0.389818, 0, 179.001, 0.389818, 0.920892, 0, 57.2528, 0.920373, -0.391043, 0, 188.209, 0.391043, 0.920373, 0, 61.1538, 0.919746, -0.392514, 0, 197.411, 0.392514, 0.919746, 0, 65.0679, 0.918937, -0.394405, 0, 206.607, 0.394405, 0.918937, 0, 68.9972, 0.917979, -0.39663, 0, 215.794, 0.39663, 0.917979, 0, 72.9462, 0.916728, -0.399512, 0, 224.971, 0.399512, 0.916728, 0, 76.9195, 0.915018, -0.403412, 0, 234.134, 0.403412, 0.915018, 0, 80.9239, 0.912598, -0.408858, 0, 243.279, 0.408858, 0.912598, 0, 84.9697, 0.908782, -0.417271, 0, 252.397, 0.417271, 0.908782, 0, 89.0759, 0.90236, -0.430983, 0, 261.472, 0.430983, 0.90236, 0, 93.2766, 0.882252, -0.470777, 0, 270.468, 0.470777, 0.882252, 0, 97.6435, 0.70642, -0.707793, 0, 278.898, 0.707793, 0.70642, 0, 102.895) + +[sub_resource type="Curve2D" id="Curve2D_s3nsw"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0.350769, -0.420923, -0.350769, 0.420923, -108, -72, -2.51984, -37.1677, 2.51984, 37.1677, -32, -40, 0, 0, 0, 0, -72, 24) +} +point_count = 3 + +[sub_resource type="MultiMesh" id="MultiMesh_rdbsw"] +resource_local_to_scene = true +instance_count = 17 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(1, 0.000598168, 0, -103, -0.000598168, 1, 0, -72.0539, 0.998903, -0.0468321, 0, -93.0019, 0.0468321, 0.998903, 0, -71.9513, 0.994609, -0.103698, 0, -83.0225, 0.103698, 0.994609, 0, -71.3334, 0.984254, -0.176763, 0, -73.1004, 0.176763, 0.984254, 0, -70.1074, 0.961491, -0.274836, 0, -63.3059, 0.274836, 0.961491, 0, -68.1112, 0.910867, -0.4127, 0, -53.7854, 0.4127, 0.910867, 0, -65.0752, 0.795079, -0.606507, 0, -44.8859, 0.606507, 0.795079, 0, -60.549, 0.549428, -0.835541, 0, -37.442, 0.835541, 0.549428, 0, -53.9368, 0.176727, -0.98426, 0, -32.9085, 0.98426, 0.176727, 0, -45.1147, -0.0827939, -0.996567, 0, -31.9487, 0.996567, -0.0827939, 0, -35.2076, -0.275778, -0.961221, 0, -33.307, 0.961221, -0.275778, 0, -25.321, -0.4324, -0.901682, 0, -36.5098, 0.901682, -0.4324, 0, -15.864, -0.55362, -0.832769, 0, -41.1786, 0.832769, -0.55362, 0, -7.03251, -0.64464, -0.764486, 0, -46.955, 0.764486, -0.64464, 0, 1.12253, -0.712348, -0.701827, 0, -53.5772, 0.701827, -0.712348, 0, 8.60977, -0.767802, -0.640687, 0, -60.8599, 0.640687, -0.767802, 0, 15.4572, -0.821997, -0.569492, 0, -68.6717, 0.569492, -0.821997, 0, 21.6941) + +[sub_resource type="Curve2D" id="Curve2D_k0223"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0.445953, 6.39199, -0.445953, -6.39199, -48, 48, 1.31102, 2.24746, -1.31102, -2.24746, 248, -112) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_r25qh"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -16.5134, 16.5816, 16.5134, -16.5816, 73.5391, -28.2843, 0, 0, 0, 0, 90.5097, -45.2549) +} +point_count = 3 + +[sub_resource type="MultiMesh" id="MultiMesh_bq364"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.973052, 0.230584, 0, 4.88223, -0.230584, 0.973052, 0, -1.07852, 0.966958, 0.254934, 0, 14.5981, -0.254934, 0.966958, 0, -3.44424, 0.959557, 0.281516, 0, 24.2506, -0.281516, 0.959557, 0, -6.05645, 0.949848, 0.312712, 0, 33.8255, -0.312712, 0.949848, 0, -8.93951, 0.935813, 0.352498, 0, 43.2949, -0.352498, 0.935813, 0, -12.1518, 0.913086, 0.407766, 0, 52.606, -0.407766, 0.913086, 0, -15.7957, 0.869407, 0.494097, 0, 61.6456, -0.494097, 0.869407, 0, -20.0638, 0.753243, 0.657743, 0, 70.1223, -0.657743, 0.753243, 0, -25.3463, 0.706087, 0.708125, 0, 77.4166, -0.708125, 0.706087, 0, -32.1761, 0.707436, 0.706777, 0, 84.4802, -0.706777, 0.707436, 0, -39.2547) + +[sub_resource type="Curve2D" id="Curve2D_ys6kh"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 79.196, -3.05176e-05) +} +point_count = 2 + +[sub_resource type="MultiMesh" id="MultiMesh_nrtpx"] +resource_local_to_scene = true +instance_count = 8 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(1, 3.85343e-07, 0, 5, -3.85343e-07, 1, 0, -1.92671e-06, 1, 3.85343e-07, 0, 15, -3.85343e-07, 1, 0, -5.78014e-06, 1, 3.85343e-07, 0, 25, -3.85343e-07, 1, 0, -9.63357e-06, 1, 3.85343e-07, 0, 35, -3.85343e-07, 1, 0, -1.3487e-05, 1, 3.85343e-07, 0, 45, -3.85343e-07, 1, 0, -1.73404e-05, 1, 3.85343e-07, 0, 55, -3.85343e-07, 1, 0, -2.11938e-05, 1, 3.85343e-07, 0, 65, -3.85343e-07, 1, 0, -2.50473e-05, 1, 3.85342e-07, 0, 75, -3.85342e-07, 1, 0, -2.89007e-05) + +[node name="Level2" type="Node2D"] +script = ExtResource("1_ahmya") + +[node name="Tracks" type="Node2D" parent="."] +script = ExtResource("2_ai76e") + +[node name="Track" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(160, 96) +curve = SubResource("Curve2D_p3nge") + +[node name="TrackSwitch2" parent="Tracks" instance=ExtResource("4_iman8")] +position = Vector2(392, 416) +rotation = -0.785398 + +[node name="LeftTrack" parent="Tracks/TrackSwitch2" index="0"] +curve = SubResource("Curve2D_wvr62") + +[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_2dy52") + +[node name="HeadPoint" parent="Tracks/TrackSwitch2/LeftTrack" index="2"] +rotation = 0.0587565 + +[node name="TailPoint" parent="Tracks/TrackSwitch2/LeftTrack" index="3"] +position = Vector2(96.1665, 5.65692) +rotation = 0.0587565 +progress = 96.3327 + +[node name="TrackLine" parent="Tracks/TrackSwitch2/LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4.13215, 0.243071, 8.87474, 0.52205, 11.7919, 0.693649, 15.026, 0.883894, 18.5419, 1.09071, 22.3042, 1.31203, 26.2779, 1.54578, 30.4277, 1.78988, 34.7183, 2.04228, 39.1146, 2.30089, 43.5813, 2.56364, 48.0832, 2.82846, 52.5852, 3.09328, 57.0519, 3.35603, 61.4482, 3.61464, 65.7388, 3.86704, 69.8886, 4.11114, 73.8623, 4.34489, 77.6246, 4.56621, 81.1405, 4.77303, 84.3746, 4.96327, 87.2918, 5.13487, 92.0343, 5.41385, 96.1665, 5.65692) + +[node name="Pointer" parent="Tracks/TrackSwitch2/LeftTrack" index="5"] +position = Vector2(66.6506, 3.92067) +rotation = 0.0587565 + +[node name="RightTrack" parent="Tracks/TrackSwitch2" index="1"] +curve = SubResource("Curve2D_q6d23") + +[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/RightTrack" index="1"] +multimesh = SubResource("MultiMesh_yocj8") + +[node name="HeadPoint" parent="Tracks/TrackSwitch2/RightTrack" index="2"] +rotation = 0.266253 + +[node name="TailPoint" parent="Tracks/TrackSwitch2/RightTrack" index="3"] +position = Vector2(96.1665, 50.9117) +rotation = 0.785398 +progress = 113.894 + +[node name="TrackLine" parent="Tracks/TrackSwitch2/RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.93266, -0.00942437, 4.19414, 0.0229257, 7.18185, 0.119211, 10.7929, 0.308852, 14.9244, 0.621269, 19.4734, 1.08588, 24.337, 1.73211, 26.8547, 2.13253, 29.4124, 2.58938, 31.9974, 3.10635, 34.5967, 3.6871, 37.1975, 4.33533, 39.7869, 5.05471, 42.352, 5.84891, 44.8801, 6.72161, 47.3582, 7.67649, 49.7734, 8.71723, 52.113, 9.8475, 54.364, 11.071, 56.5137, 12.3914, 58.549, 13.8123, 62.2254, 16.9706, 65.5842, 20.3195, 68.8714, 23.5994, 72.0671, 26.7901, 75.1513, 29.8712, 78.1039, 32.8225, 80.9048, 35.6237, 83.534, 38.2544, 85.9716, 40.6943, 88.1974, 42.9233, 90.1915, 44.9209, 93.4041, 48.1409, 96.1665, 50.9117) + +[node name="Pointer" parent="Tracks/TrackSwitch2/RightTrack" index="5"] +position = Vector2(62.8641, 17.5763) +rotation = 0.783806 + +[node name="Track2" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(728, 496) +curve = SubResource("Curve2D_853vy") + +[node name="Track3" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(224, 392) +curve = SubResource("Curve2D_h0bto") + +[node name="Track4" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(544, 400) +curve = SubResource("Curve2D_6fh71") + +[node name="Track5" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(432, 256) +curve = SubResource("Curve2D_u77jj") +head_signal_enabled = true + +[node name="MultiMeshInstance2D" parent="Tracks/Track5" index="1"] +multimesh = SubResource("MultiMesh_wannq") + +[node name="HeadPoint" parent="Tracks/Track5" index="2"] +position = Vector2(-64, -48) +rotation = 2.24554 + +[node name="SignalButton" parent="Tracks/Track5/HeadPoint" index="1"] +visible = true +offset_left = -15.6174 +offset_top = 12.4941 +offset_right = 508.383 +offset_bottom = 532.494 +rotation = -3.14159 + +[node name="TailPoint" parent="Tracks/Track5" index="3"] +position = Vector2(280, 104) +rotation = 2.55852 +progress = 376.561 + +[node name="TrackLine" parent="Tracks/Track5" index="4"] +points = PackedVector2Array(-64, -48, -60.7862, -45.4272, -58.7843, -44.3351, -56.3363, -43.0758, -53.4588, -41.6555, -50.1685, -40.0804, -46.4819, -38.3566, -42.4157, -36.4905, -37.9866, -34.4882, -35.6411, -33.4379, -33.2111, -32.3558, -30.6986, -31.2429, -28.1058, -30.0997, -25.4347, -28.9271, -22.6874, -27.7259, -19.866, -26.4968, -16.9726, -25.2407, -14.0092, -23.9583, -10.9779, -22.6503, -7.88081, -21.3175, -4.71999, -19.9608, -1.49752, -18.5809, 1.78452, -17.1785, 5.12406, -15.7545, 8.51902, -14.3096, 11.9673, -12.8445, 15.4669, -11.3602, 19.0156, -9.85723, 22.6114, -8.33652, 26.2523, -6.79879, 29.9361, -5.24483, 33.6607, -3.6754, 37.4242, -2.09128, 41.2244, -0.493237, 45.0592, 1.11794, 48.9265, 2.74149, 52.8243, 4.37662, 56.7506, 6.02257, 60.7031, 7.67857, 64.6799, 9.34383, 68.6789, 11.0176, 72.6979, 12.6991, 76.7349, 14.3875, 80.7879, 16.0821, 84.8547, 17.7821, 88.9333, 19.4867, 93.0216, 21.1951, 97.1175, 22.9067, 101.219, 24.6205, 105.324, 26.3359, 109.43, 28.052, 113.536, 29.768, 117.638, 31.4833, 121.736, 33.197, 125.827, 34.9084, 129.909, 36.6166, 133.98, 38.3209, 138.038, 40.0206, 142.081, 41.7148, 146.106, 43.4028, 150.111, 45.0838, 154.096, 46.757, 158.057, 48.4217, 161.992, 50.0771, 165.899, 51.7223, 169.777, 53.3567, 173.622, 54.9795, 177.434, 56.5898, 181.21, 58.187, 184.947, 59.7702, 188.645, 61.3386, 192.3, 62.8915, 195.911, 64.4282, 199.475, 65.9477, 202.991, 67.4495, 206.456, 68.9326, 209.869, 70.3963, 213.227, 71.8399, 216.528, 73.2625, 219.77, 74.6635, 222.952, 76.0419, 226.07, 77.3971, 229.123, 78.7282, 232.109, 80.0345, 235.026, 81.3153, 237.871, 82.5697, 240.643, 83.797, 243.339, 84.9963, 245.958, 86.167, 248.497, 87.3082, 250.954, 88.4192, 253.327, 89.4992, 255.615, 90.5474, 259.924, 92.5453, 263.865, 94.4069, 267.42, 96.1258, 270.573, 97.696, 273.308, 99.1111, 277.457, 101.452, 280, 104) + +[node name="Track6" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(832, 168) +curve = SubResource("Curve2D_s3nsw") +tail_signal_enabled = true + +[node name="MultiMeshInstance2D" parent="Tracks/Track6" index="1"] +multimesh = SubResource("MultiMesh_rdbsw") + +[node name="HeadPoint" parent="Tracks/Track6" index="2"] +position = Vector2(-108, -72) +rotation = 2.26554 + +[node name="TailPoint" parent="Tracks/Track6" index="3"] +position = Vector2(-72, 24) +rotation = 2.1294 +progress = 169.049 + +[node name="SignalButton" parent="Tracks/Track6/TailPoint" index="1"] +visible = true + +[node name="TrackLine" parent="Tracks/Track6" index="4"] +points = PackedVector2Array(-108, -72, -104.938, -72.0286, -101.333, -72.0756, -96.6273, -72.0491, -93.9291, -71.986, -91.036, -71.8778, -87.9747, -71.7154, -84.7717, -71.4901, -81.4537, -71.1928, -78.0475, -70.8147, -74.5795, -70.3467, -71.0765, -69.78, -67.565, -69.1057, -64.0719, -68.3148, -60.6235, -67.3984, -57.2467, -66.3475, -53.9681, -65.1532, -50.8142, -63.8067, -47.8117, -62.2989, -44.9874, -60.6209, -42.3677, -58.7639, -39.9794, -56.7188, -37.8491, -54.4768, -36.0035, -52.0289, -34.4691, -49.3662, -33.2726, -46.4798, -32.4407, -43.3607, -32, -40, -31.893, -36.5463, -32.034, -33.1562, -32.4067, -29.8327, -32.9953, -26.5788, -33.7836, -23.3976, -34.7557, -20.292, -35.8955, -17.2651, -37.1869, -14.3199, -38.614, -11.4594, -40.1608, -8.68668, -41.8111, -6.00471, -43.5489, -3.41654, -45.3583, -0.925169, -47.2231, 1.46637, -49.1274, 3.75506, -51.0551, 5.93789, -52.9901, 8.01182, -54.9166, 9.97384, -56.8183, 11.8209, -58.6793, 13.5501, -62.2151, 16.6424, -65.3956, 19.2267, -68.0927, 21.2788, -70.1779, 22.7745, -72, 24) + +[node name="Track7" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(512, 304) +curve = SubResource("Curve2D_k0223") + +[node name="TrackSwitch" parent="Tracks" instance=ExtResource("4_iman8")] +position = Vector2(768, 416) +rotation = -2.35619 +direction = 0 + +[node name="LeftTrack" parent="Tracks/TrackSwitch" index="0"] +z_index = 1 +curve = SubResource("Curve2D_r25qh") + +[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_bq364") + +[node name="HeadPoint" parent="Tracks/TrackSwitch/LeftTrack" index="2"] +rotation = -0.367174 + +[node name="TailPoint" parent="Tracks/TrackSwitch/LeftTrack" index="3"] +position = Vector2(90.5097, -45.2549) +rotation = -0.785398 +progress = 103.506 + +[node name="TrackLine" parent="Tracks/TrackSwitch/LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 2.48258, -0.535236, 5.37148, -1.18929, 9.16829, -2.08763, 13.7301, -3.22028, 16.2533, -3.87134, 18.9141, -4.57723, 21.6948, -5.33669, 24.5774, -6.14848, 27.5441, -7.01135, 30.577, -7.92405, 33.6584, -8.88533, 36.7702, -9.89393, 39.8947, -10.9486, 43.014, -12.0481, 46.1102, -13.1912, 49.1656, -14.3767, 52.1621, -15.6032, 55.082, -16.8695, 57.9074, -18.1744, 60.6205, -19.5167, 63.2033, -20.895, 65.6381, -22.3082, 67.9069, -23.755, 69.9919, -25.2341, 73.5391, -28.2843, 76.451, -31.2075, 79.0095, -33.7742, 81.2373, -36.0078, 83.1573, -37.9313, 86.1656, -40.9407, 88.2169, -42.9877, 90.5097, -45.2549) + +[node name="Pointer" parent="Tracks/TrackSwitch/LeftTrack" index="5"] +visible = true +position = Vector2(63.1927, -20.8891) +rotation = -0.507123 + +[node name="RightTrack" parent="Tracks/TrackSwitch" index="1"] +z_index = 0 +curve = SubResource("Curve2D_ys6kh") + +[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/RightTrack" index="1"] +multimesh = SubResource("MultiMesh_nrtpx") + +[node name="HeadPoint" parent="Tracks/TrackSwitch/RightTrack" index="2"] +rotation = -3.85343e-07 + +[node name="TailPoint" parent="Tracks/TrackSwitch/RightTrack" index="3"] +position = Vector2(79.196, -3.05176e-05) +rotation = -3.85343e-07 +progress = 79.196 + +[node name="TrackLine" parent="Tracks/TrackSwitch/RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 3.40295, -1.3113e-06, 7.30861, -2.81632e-06, 9.71098, -3.74205e-06, 12.3744, -4.76837e-06, 15.2698, -5.8841e-06, 18.3682, -7.07805e-06, 21.6407, -8.33907e-06, 25.0581, -9.65596e-06, 28.5916, -1.10176e-05, 32.212, -1.24127e-05, 35.8905, -1.38301e-05, 39.598, -1.52588e-05, 43.3055, -1.66874e-05, 46.984, -1.81049e-05, 50.6044, -1.95e-05, 54.1379, -2.08616e-05, 57.5553, -2.21785e-05, 60.8278, -2.34395e-05, 63.9262, -2.46335e-05, 66.8216, -2.57492e-05, 69.485, -2.67755e-05, 71.8874, -2.77013e-05, 75.793, -2.92063e-05, 79.196, -3.05176e-05) + +[node name="Pointer" parent="Tracks/TrackSwitch/RightTrack" index="5"] +visible = false +position = Vector2(66.7695, -2.57291e-05) +rotation = -3.85343e-07 + +[node name="Button" parent="Tracks/TrackSwitch" index="2"] +offset_left = -39.5979 +offset_top = 28.2843 +offset_right = 36.4021 +offset_bottom = 76.2843 +rotation = -1.5708 +button_pressed = false + +[node name="TrainStation" parent="." instance=ExtResource("5_jlsfp")] +position = Vector2(424, 96) + +[node name="TrainStation2" parent="." instance=ExtResource("5_jlsfp")] +position = Vector2(424, 496) + +[node name="TrainEngine" parent="." instance=ExtResource("6_2g7vp")] +color = Color(1, 0.929412, 0.619608, 1) + +[node name="TrainEngine2" parent="." instance=ExtResource("6_2g7vp")] + +[node name="TrainRoute" parent="." node_paths=PackedStringArray("train") instance=ExtResource("7_p34jf")] +position = Vector2(354.396, 151.157) +train = NodePath("../TrainEngine") + +[node name="TrainRouteStop" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] +station = NodePath("../../TrainStation") + +[node name="TrainRouteStop2" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] +station = NodePath("../../TrainStation2") + +[node name="TrainRoute2" parent="." node_paths=PackedStringArray("train") instance=ExtResource("7_p34jf")] +train = NodePath("../TrainEngine2") + +[node name="TrainRouteStop" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] +station = NodePath("../../TrainStation2") + +[node name="TrainRouteStop2" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] +station = NodePath("../../TrainStation") + +[editable path="Tracks/TrackSwitch2"] +[editable path="Tracks/TrackSwitch2/LeftTrack"] +[editable path="Tracks/TrackSwitch2/RightTrack"] +[editable path="Tracks/Track5"] +[editable path="Tracks/Track6"] +[editable path="Tracks/TrackSwitch"] +[editable path="Tracks/TrackSwitch/LeftTrack"] +[editable path="Tracks/TrackSwitch/RightTrack"] diff --git a/scenes/Level3.tscn b/scenes/Level3.tscn new file mode 100644 index 0000000..070b10d --- /dev/null +++ b/scenes/Level3.tscn @@ -0,0 +1,295 @@ +[gd_scene load_steps=31 format=3 uid="uid://bdxckbbvt81uj"] + +[ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="1_dtmcd"] +[ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="2_xqhrk"] +[ext_resource type="PackedScene" uid="uid://eky3mqmnjgl3" path="res://prefabs/Tracks/Track_90_Curve_Small.tscn" id="3_0tpkn"] +[ext_resource type="PackedScene" uid="uid://bjejtrah22b5a" path="res://prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right90Curve.tscn" id="4_6tlvt"] +[ext_resource type="PackedScene" uid="uid://bnivg4uv1nogr" path="res://prefabs/Tracks/Track_45_Curve.tscn" id="5_ehsh7"] +[ext_resource type="PackedScene" uid="uid://dd6cvx5sfi3up" path="res://prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right45Curve.tscn" id="6_so35w"] +[ext_resource type="PackedScene" uid="uid://cgg0iicpep7b2" path="res://prefabs/Tracks/Track_90_Curve_Medium.tscn" id="7_4d6sr"] +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="8_vug4q"] +[ext_resource type="PackedScene" uid="uid://dnq6bkqmpu7vi" path="res://prefabs/TrackSwitches/TrackSwitch_Left45Curve_RightStraight.tscn" id="9_u1i1j"] + +[sub_resource type="Curve2D" id="Curve2D_ggyx5"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -354, 0, 0, 0, 0, 0, -78, 0) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_7h6tk"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 101, 0) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_ajr1l"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 64, 0, -15.9835, -15.9593, 15.9835, 15.9593, 112, 16, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 212) +} +point_count = 5 + +[sub_resource type="Curve2D" id="Curve2D_iq7pd"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 61, 140, 0, 0, 0, 0, 262, -62) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_d3oor"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -78, 279, 0, 0, 0, 0, -7, 208) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_ia1ry"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 22, -23, 0, 0, 0, 0, 22, 18) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_mbur0"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 72) +} +point_count = 5 + +[sub_resource type="Curve2D" id="Curve2D_e48av"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 162) +} +point_count = 5 + +[sub_resource type="Curve2D" id="Curve2D_rk71d"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -16.8086, -8.04456, 16.8086, 8.04456, -80, 8, 0, 0, 0, 0, -48, 32, 0, 0, 0, 0, -40, 40) +} +point_count = 5 + +[sub_resource type="Curve2D" id="Curve2D_xf5hl"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -33, -42, 0, 0, 0, 0, 12, -42) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_ljhms"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 21, -45, 0, 0, 0, 0, 63, -45) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_rkbq0"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 17, -19, 0, 0, 0, 0, 57, -19) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_my8ew"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 72) +} +point_count = 5 + +[sub_resource type="Curve2D" id="Curve2D_118kd"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) +} +point_count = 5 + +[sub_resource type="Curve2D" id="Curve2D_pygfx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -222, 0, 0, 0, 0, 0, 256, 2.08165e-12) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_7svv4"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) +} +point_count = 5 + +[sub_resource type="Curve2D" id="Curve2D_34ply"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -5, -1, 0, 0, 0, 0, 133, -1) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_vow4u"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -10, -31, 0, 0, 0, 0, -10, 18) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_v3hha"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -12, -41, 0, 0, 0, 0, -12, 27) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_ypxof"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 489, 0) +} +point_count = 2 + +[sub_resource type="Curve2D" id="Curve2D_6e803"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 106) +} +point_count = 5 + +[node name="Level3" type="Node2D"] + +[node name="TrainStation" parent="." instance=ExtResource("1_dtmcd")] +position = Vector2(210, 89) + +[node name="TrainStation2" parent="." instance=ExtResource("1_dtmcd")] +position = Vector2(1036, 301) +rotation = 1.5708 + +[node name="TrainStation3" parent="." instance=ExtResource("1_dtmcd")] +position = Vector2(40, 638) + +[node name="TrainStation4" parent="." instance=ExtResource("1_dtmcd")] +position = Vector2(858, 598) +rotation = -1.5708 + +[node name="Tracks" type="Node2D" parent="."] + +[node name="Track" parent="Tracks" instance=ExtResource("2_xqhrk")] +position = Vector2(864, 89) +curve = SubResource("Curve2D_ggyx5") + +[node name="Track2" parent="Tracks" instance=ExtResource("2_xqhrk")] +position = Vector2(864, 89) +curve = SubResource("Curve2D_7h6tk") + +[node name="Track3" parent="Tracks" instance=ExtResource("3_0tpkn")] +position = Vector2(908, 89) +curve = SubResource("Curve2D_ajr1l") + +[node name="TrackSwitch" parent="Tracks" instance=ExtResource("4_6tlvt")] +position = Vector2(786, 89) + +[node name="Track2" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(548, 311) +curve = SubResource("Curve2D_iq7pd") + +[node name="Track17" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(548, 311) +curve = SubResource("Curve2D_d3oor") + +[node name="TrackSwitch" parent="." instance=ExtResource("6_so35w")] +position = Vector2(858, 161) +rotation = 1.5708 + +[node name="Track3" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(836, 280) +curve = SubResource("Curve2D_ia1ry") + +[node name="Track4" parent="." instance=ExtResource("3_0tpkn")] +position = Vector2(858, 542) +rotation = 1.5708 +curve = SubResource("Curve2D_mbur0") + +[node name="Track5" parent="." instance=ExtResource("7_4d6sr")] +position = Vector2(1036, 630) +rotation = 1.5708 +curve = SubResource("Curve2D_e48av") + +[node name="TrackSwitch2" parent="." instance=ExtResource("6_so35w")] +position = Vector2(690, 670) + +[node name="Track6" parent="." instance=ExtResource("5_ehsh7")] +position = Vector2(738, 758) +rotation = 3.14159 +curve = SubResource("Curve2D_rk71d") + +[node name="TrackSwitch3" parent="." instance=ExtResource("8_vug4q")] +position = Vector2(646, 670) +rotation = 3.14159 + +[node name="Track7" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(678, 712) +curve = SubResource("Curve2D_xf5hl") + +[node name="Track8" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(319, 683) +curve = SubResource("Curve2D_ljhms") + +[node name="TrackSwitch5" parent="." instance=ExtResource("9_u1i1j")] +position = Vector2(382, 638) + +[node name="Track9" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(461, 657) +curve = SubResource("Curve2D_rkbq0") + +[node name="Track10" parent="." instance=ExtResource("3_0tpkn")] +position = Vector2(96, 638) +rotation = 3.14159 +curve = SubResource("Curve2D_my8ew") + +[node name="Track11" parent="." instance=ExtResource("7_4d6sr")] +position = Vector2(32, 702) +rotation = 3.14159 +curve = SubResource("Curve2D_118kd") + +[node name="Track12" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(262, 702) +curve = SubResource("Curve2D_pygfx") + +[node name="TrackSwitch6" parent="." instance=ExtResource("8_vug4q")] +position = Vector2(-64, 438) +rotation = 1.5708 + +[node name="Track13" parent="." instance=ExtResource("7_4d6sr")] +position = Vector2(-64, 217) +rotation = -1.5708 +curve = SubResource("Curve2D_7svv4") + +[node name="Track15" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(77, 90) +curve = SubResource("Curve2D_34ply") + +[node name="TrackSwitch4" parent="." instance=ExtResource("4_6tlvt")] +position = Vector2(-64, 389) +rotation = -1.5708 + +[node name="Track" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(-54, 420) +curve = SubResource("Curve2D_vow4u") + +[node name="Track14" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(-52, 266) +curve = SubResource("Curve2D_v3hha") + +[node name="Track16" parent="." instance=ExtResource("2_xqhrk")] +position = Vector2(8, 317) +curve = SubResource("Curve2D_ypxof") + +[node name="TrackSwitch7" parent="." instance=ExtResource("9_u1i1j")] +position = Vector2(541, 519) +rotation = -0.785398 + +[node name="Track18" parent="." instance=ExtResource("3_0tpkn")] +position = Vector2(441, 317) +curve = SubResource("Curve2D_6e803") diff --git a/scripts/Levels/Level2.gd b/scripts/Levels/Level2.gd new file mode 100644 index 0000000..3ffa1c0 --- /dev/null +++ b/scripts/Levels/Level2.gd @@ -0,0 +1,28 @@ +extends Node + +@export var car_count = 2 + +@onready var _train_vehicle_reference = load("res://prefabs/TrainVehicle.tscn") +@onready var _engine1: TrainEngine = $TrainEngine +@onready var _engine2: TrainEngine = $TrainEngine2 +@onready var _tracks_controller: TracksController = $Tracks + +func _ready(): + self._engine1.connect_tracks_controller(self._tracks_controller) + self._engine2.connect_tracks_controller(self._tracks_controller) + self._engine1.add_to_track($TrainStation2/Track, 500) + self._engine2.add_to_track($TrainStation/Track, 500) + + var last_car = self._engine1 + for index in range(car_count): + var car = self._train_vehicle_reference.instantiate() + add_child(car) + last_car.set_follower_car(car) + last_car = car + + last_car = self._engine2 + for index in range(car_count): + var car = self._train_vehicle_reference.instantiate() + add_child(car) + last_car.set_follower_car(car) + last_car = car From 131061b67df3352d36bbfdbc67346132a2afd506 Mon Sep 17 00:00:00 2001 From: mineiwik <29404520+mineiwik@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:51:38 +0200 Subject: [PATCH 3/7] Add rail signal to level 1 and add routes to level 3 --- scenes/Level1.tscn | 73 ++++++++++++----- scenes/Level3.tscn | 194 ++++++++++++++++++++++++++------------------- 2 files changed, 166 insertions(+), 101 deletions(-) diff --git a/scenes/Level1.tscn b/scenes/Level1.tscn index eae965d..15bddb2 100644 --- a/scenes/Level1.tscn +++ b/scenes/Level1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=24 format=3 uid="uid://bhjkcskfwdbug"] +[gd_scene load_steps=25 format=3 uid="uid://bhjkcskfwdbug"] [ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="1_odec6"] [ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="2_5wuhy"] @@ -8,7 +8,7 @@ [ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="7_nktel"] [ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="8_l78k2"] -[sub_resource type="Curve2D" id="Curve2D_pcn80"] +[sub_resource type="Curve2D" id="Curve2D_dx211"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 208, 112, -23.833, 36.0765, 23.833, -36.0765, 176, 32, 0, 0, 0, 0, 264, 0) @@ -39,7 +39,7 @@ _surfaces = [{ resource_local_to_scene = true instance_count = 10 mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.998274, -0.0587227, 0, 4.99137, 0.0587227, 0.998274, 0, 0.293614, 0.998274, -0.0587227, 0, 14.9741, 0.0587227, 0.998274, 0, 0.880841, 0.998274, -0.0587227, 0, 24.9569, 0.0587227, 0.998274, 0, 1.46807, 0.998274, -0.0587227, 0, 34.9396, 0.0587227, 0.998274, 0, 2.05529, 0.998274, -0.0587227, 0, 44.9223, 0.0587227, 0.998274, 0, 2.64252, 0.998274, -0.0587228, 0, 54.9051, 0.0587228, 0.998274, 0, 3.22975, 0.998274, -0.0587226, 0, 64.8878, 0.0587226, 0.998274, 0, 3.81698, 0.998274, -0.0587228, 0, 74.8706, 0.0587228, 0.998274, 0, 4.4042, 0.998274, -0.0587228, 0, 84.8533, 0.0587228, 0.998274, 0, 4.99143, 0.998274, -0.0587227, 0, 94.8361, 0.0587227, 0.998274, 0, 5.57866) +buffer = PackedFloat32Array(0.998274, -0.0587227, 0, 4.99137, 0.0587227, 0.998274, 0, 0.293614, 0.998274, -0.0587227, 0, 14.9741, 0.0587227, 0.998274, 0, 0.880841, 0.998274, -0.0587227, 0, 24.9569, 0.0587227, 0.998274, 0, 1.46807, 0.998274, -0.0587227, 0, 34.9396, 0.0587227, 0.998274, 0, 2.05529, 0.998274, -0.0587227, 0, 44.9223, 0.0587227, 0.998274, 0, 2.64252, 0.998274, -0.0587228, 0, 54.9051, 0.0587228, 0.998274, 0, 3.22975, 0.998274, -0.0587226, 0, 64.8878, 0.0587226, 0.998274, 0, 3.81698, 0.998274, -0.0587227, 0, 74.8706, 0.0587227, 0.998274, 0, 4.4042, 0.998274, -0.058723, 0, 84.8533, 0.058723, 0.998274, 0, 4.99143, 0.998274, -0.0587227, 0, 94.8361, 0.0587227, 0.998274, 0, 5.57866) [sub_resource type="Curve2D" id="Curve2D_q6d23"] resource_local_to_scene = true @@ -52,44 +52,50 @@ point_count = 3 resource_local_to_scene = true instance_count = 11 mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.999049, -0.0436099, 0, 4.99933, 0.0436099, 0.999049, 0, 0.0488746, 0.994522, -0.104527, 0, 14.9811, 0.104527, 0.994522, 0, 0.627066, 0.985411, -0.170193, 0, 24.9078, 0.170193, 0.985411, 0, 1.82289, 0.967065, -0.254529, 0, 34.7237, 0.254529, 0.967065, 0, 3.71877, 0.92969, -0.368342, 0, 44.3161, 0.368342, 0.92969, 0, 6.52693, 0.849052, -0.528308, 0, 53.448, 0.528308, 0.849052, 0, 10.5731, 0.717449, -0.696611, 0, 61.547, 0.696611, 0.717449, 0, 16.3878, 0.707669, -0.706544, 0, 68.6724, 0.706544, 0.707669, 0, 23.4009, 0.707199, -0.707014, 0, 75.7479, 0.707014, 0.707199, 0, 30.4676, 0.706773, -0.70744, 0, 82.8188, 0.70744, 0.706773, 0, 37.5388, 0.706311, -0.707902, 0, 89.8854, 0.707902, 0.706311, 0, 44.6143) +buffer = PackedFloat32Array(0.999049, -0.0436099, 0, 4.99933, 0.0436099, 0.999049, 0, 0.0488746, 0.994522, -0.104527, 0, 14.9811, 0.104527, 0.994522, 0, 0.627066, 0.985411, -0.170193, 0, 24.9078, 0.170193, 0.985411, 0, 1.82289, 0.967065, -0.254529, 0, 34.7237, 0.254529, 0.967065, 0, 3.71877, 0.92969, -0.368342, 0, 44.3161, 0.368342, 0.92969, 0, 6.52693, 0.849053, -0.528308, 0, 53.448, 0.528308, 0.849053, 0, 10.5731, 0.717449, -0.696611, 0, 61.547, 0.696611, 0.717449, 0, 16.3878, 0.707669, -0.706544, 0, 68.6724, 0.706544, 0.707669, 0, 23.4009, 0.707199, -0.707014, 0, 75.7479, 0.707014, 0.707199, 0, 30.4676, 0.706773, -0.70744, 0, 82.8188, 0.70744, 0.706773, 0, 37.5388, 0.706311, -0.707902, 0, 89.8854, 0.707902, 0.706311, 0, 44.6143) -[sub_resource type="Curve2D" id="Curve2D_mayfe"] +[sub_resource type="Curve2D" id="Curve2D_jnyil"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -4, 0, -9.2703, 24.8974, 9.2703, -24.8974, 56, -24, -1.38898, -2.48031, 1.38898, 2.48031, 40, -80) } point_count = 3 -[sub_resource type="Curve2D" id="Curve2D_tytqk"] +[sub_resource type="Curve2D" id="Curve2D_5kklp"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 200, 104, -6.62164, 38.4055, 6.62164, -38.4055, 152, 64, 1.11362, 0.890899, -1.11362, -0.890899, 168, 24) } point_count = 3 -[sub_resource type="Curve2D" id="Curve2D_mgg06"] +[sub_resource type="Curve2D" id="Curve2D_ul5hn"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -48, -16, 0, 0, 0, 0, 128, -16) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_rn445"] +[sub_resource type="Curve2D" id="Curve2D_ns0ju"] resource_local_to_scene = true _data = { "points": PackedVector2Array(4.49492, -5.61865, -4.49492, 5.61865, -64, -48, 8.30851, -5.48008, -8.30851, 5.48008, 280, 104) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_00p67"] +[sub_resource type="MultiMesh" id="MultiMesh_sxxw1"] +resource_local_to_scene = true +instance_count = 38 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.887414, -0.460974, 0, -60.0108, 0.460974, 0.887414, 0, -45.0042, 0.905093, -0.425215, 0, -51.0767, 0.425215, 0.905093, 0, -40.5151, 0.911384, -0.411557, 0, -42.0062, 0.411557, 0.911384, 0, -36.3054, 0.914674, -0.404193, 0, -32.883, 0.404193, 0.914674, 0, -32.2105, 0.916744, -0.399476, 0, -23.7304, 0.399476, 0.916744, 0, -28.1819, 0.918207, -0.396102, 0, -14.5591, 0.396102, 0.918207, 0, -24.1962, 0.919262, -0.393646, 0, -5.37424, 0.393646, 0.919262, 0, -20.2416, 0.920054, -0.391792, 0, 3.82057, 0.391792, 0.920054, 0, -16.3103, 0.92071, -0.390248, 0, 13.023, 0.390248, 0.92071, 0, -12.3968, 0.921213, -0.389059, 0, 22.2313, 0.389059, 0.921213, 0, -8.49726, 0.921609, -0.38812, 0, 31.4445, 0.38812, 0.921609, 0, -4.60922, 0.921924, -0.38737, 0, 40.6614, 0.38737, 0.921924, 0, -0.729957, 0.92218, -0.386761, 0, 49.8814, 0.386761, 0.92218, 0, 3.14205, 0.922369, -0.38631, 0, 59.1037, 0.38631, 0.922369, 0, 7.00846, 0.922513, -0.385965, 0, 68.3278, 0.385965, 0.922513, 0, 10.8706, 0.922612, -0.385729, 0, 77.5532, 0.385729, 0.922612, 0, 14.7296, 0.922668, -0.385596, 0, 86.7795, 0.385596, 0.922668, 0, 18.5865, 0.922685, -0.385554, 0, 96.0062, 0.385554, 0.922685, 0, 22.4423, 0.922664, -0.385606, 0, 105.233, 0.385606, 0.922664, 0, 26.2979, 0.922604, -0.385748, 0, 114.46, 0.385748, 0.922604, 0, 30.1543, 0.922506, -0.385982, 0, 123.685, 0.385982, 0.922506, 0, 34.0123, 0.92237, -0.386308, 0, 132.91, 0.386308, 0.92237, 0, 37.8729, 0.92218, -0.38676, 0, 142.133, 0.38676, 0.92218, 0, 41.7369, 0.921951, -0.387306, 0, 151.355, 0.387306, 0.921951, 0, 45.6059, 0.921672, -0.387971, 0, 160.573, 0.387971, 0.921672, 0, 49.4805, 0.921307, -0.388837, 0, 169.789, 0.388837, 0.921307, 0, 53.3621, 0.920892, -0.389818, 0, 179.001, 0.389818, 0.920892, 0, 57.2528, 0.920373, -0.391043, 0, 188.209, 0.391043, 0.920373, 0, 61.1538, 0.919746, -0.392514, 0, 197.411, 0.392514, 0.919746, 0, 65.0679, 0.918937, -0.394405, 0, 206.607, 0.394405, 0.918937, 0, 68.9972, 0.917979, -0.39663, 0, 215.794, 0.39663, 0.917979, 0, 72.9462, 0.916728, -0.399512, 0, 224.971, 0.399512, 0.916728, 0, 76.9195, 0.915018, -0.403412, 0, 234.134, 0.403412, 0.915018, 0, 80.9239, 0.912598, -0.408858, 0, 243.279, 0.408858, 0.912598, 0, 84.9697, 0.908782, -0.417271, 0, 252.397, 0.417271, 0.908782, 0, 89.0759, 0.90236, -0.430983, 0, 261.472, 0.430983, 0.90236, 0, 93.2766, 0.882252, -0.470777, 0, 270.468, 0.470777, 0.882252, 0, 97.6435, 0.70642, -0.707793, 0, 278.898, 0.707793, 0.70642, 0, 102.895) + +[sub_resource type="Curve2D" id="Curve2D_2j3w1"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0.350769, -0.420923, -0.350769, 0.420923, -108, -72, -2.51984, -37.1677, 2.51984, 37.1677, -32, -40, 0, 0, 0, 0, -72, 24) } point_count = 3 -[sub_resource type="Curve2D" id="Curve2D_2q1sk"] +[sub_resource type="Curve2D" id="Curve2D_sjkd1"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0.445953, 6.39199, -0.445953, -6.39199, -48, 48, 1.31102, 2.24746, -1.31102, -2.24746, 248, -112) @@ -107,7 +113,7 @@ point_count = 3 resource_local_to_scene = true instance_count = 10 mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.973052, 0.230584, 0, 4.88223, -0.230584, 0.973052, 0, -1.07852, 0.966958, 0.254934, 0, 14.5981, -0.254934, 0.966958, 0, -3.44424, 0.959557, 0.281516, 0, 24.2506, -0.281516, 0.959557, 0, -6.05645, 0.949848, 0.312712, 0, 33.8255, -0.312712, 0.949848, 0, -8.93951, 0.935812, 0.352498, 0, 43.2949, -0.352498, 0.935812, 0, -12.1518, 0.913086, 0.407766, 0, 52.606, -0.407766, 0.913086, 0, -15.7957, 0.869407, 0.494097, 0, 61.6456, -0.494097, 0.869407, 0, -20.0638, 0.753243, 0.657743, 0, 70.1223, -0.657743, 0.753243, 0, -25.3463, 0.706087, 0.708125, 0, 77.4166, -0.708125, 0.706087, 0, -32.1762, 0.707437, 0.706777, 0, 84.4802, -0.706777, 0.707437, 0, -39.2547) +buffer = PackedFloat32Array(0.973052, 0.230584, 0, 4.88223, -0.230584, 0.973052, 0, -1.07852, 0.966958, 0.254934, 0, 14.5981, -0.254934, 0.966958, 0, -3.44424, 0.959557, 0.281516, 0, 24.2506, -0.281516, 0.959557, 0, -6.05645, 0.949848, 0.312712, 0, 33.8255, -0.312712, 0.949848, 0, -8.93951, 0.935813, 0.352498, 0, 43.2949, -0.352498, 0.935813, 0, -12.1518, 0.913086, 0.407766, 0, 52.606, -0.407766, 0.913086, 0, -15.7957, 0.869407, 0.494097, 0, 61.6456, -0.494097, 0.869407, 0, -20.0638, 0.753243, 0.657743, 0, 70.1223, -0.657743, 0.753243, 0, -25.3463, 0.706087, 0.708125, 0, 77.4166, -0.708125, 0.706087, 0, -32.1761, 0.707436, 0.706777, 0, 84.4802, -0.706777, 0.707436, 0, -39.2547) [sub_resource type="Curve2D" id="Curve2D_ys6kh"] resource_local_to_scene = true @@ -137,7 +143,7 @@ script = ExtResource("2_skwkk") [node name="Track" parent="Tracks" instance=ExtResource("1_odec6")] position = Vector2(160, 96) -curve = SubResource("Curve2D_pcn80") +curve = SubResource("Curve2D_dx211") [node name="TrackSwitch2" parent="Tracks" instance=ExtResource("2_h3h4n")] position = Vector2(392, 416) @@ -199,27 +205,51 @@ rotation = 0.783806 [node name="Track2" parent="Tracks" instance=ExtResource("1_odec6")] position = Vector2(728, 496) -curve = SubResource("Curve2D_mayfe") +curve = SubResource("Curve2D_jnyil") [node name="Track3" parent="Tracks" instance=ExtResource("1_odec6")] position = Vector2(224, 392) -curve = SubResource("Curve2D_tytqk") +curve = SubResource("Curve2D_5kklp") [node name="Track4" parent="Tracks" instance=ExtResource("1_odec6")] position = Vector2(544, 400) -curve = SubResource("Curve2D_mgg06") +curve = SubResource("Curve2D_ul5hn") [node name="Track5" parent="Tracks" instance=ExtResource("1_odec6")] position = Vector2(432, 256) -curve = SubResource("Curve2D_rn445") +curve = SubResource("Curve2D_ns0ju") +head_signal_enabled = true + +[node name="MultiMeshInstance2D" parent="Tracks/Track5" index="1"] +multimesh = SubResource("MultiMesh_sxxw1") + +[node name="HeadPoint" parent="Tracks/Track5" index="2"] +position = Vector2(-64, -48) +rotation = 2.24554 + +[node name="SignalButton" parent="Tracks/Track5/HeadPoint" index="1"] +visible = true +offset_left = -14.8365 +offset_top = 5.46582 +offset_right = 509.163 +offset_bottom = 525.466 +rotation = -3.40339 + +[node name="TailPoint" parent="Tracks/Track5" index="3"] +position = Vector2(280, 104) +rotation = 2.55852 +progress = 376.561 + +[node name="TrackLine" parent="Tracks/Track5" index="4"] +points = PackedVector2Array(-64, -48, -60.7862, -45.4272, -58.7843, -44.3351, -56.3363, -43.0758, -53.4588, -41.6555, -50.1685, -40.0804, -46.4819, -38.3566, -42.4157, -36.4905, -37.9866, -34.4882, -35.6411, -33.4379, -33.2111, -32.3558, -30.6986, -31.2429, -28.1058, -30.0997, -25.4347, -28.9271, -22.6874, -27.7259, -19.866, -26.4968, -16.9726, -25.2407, -14.0092, -23.9583, -10.9779, -22.6503, -7.88081, -21.3175, -4.71999, -19.9608, -1.49752, -18.5809, 1.78452, -17.1785, 5.12406, -15.7545, 8.51902, -14.3096, 11.9673, -12.8445, 15.4669, -11.3602, 19.0156, -9.85723, 22.6114, -8.33652, 26.2523, -6.79879, 29.9361, -5.24483, 33.6607, -3.6754, 37.4242, -2.09128, 41.2244, -0.493237, 45.0592, 1.11794, 48.9265, 2.74149, 52.8243, 4.37662, 56.7506, 6.02257, 60.7031, 7.67857, 64.6799, 9.34383, 68.6789, 11.0176, 72.6979, 12.6991, 76.7349, 14.3875, 80.7879, 16.0821, 84.8547, 17.7821, 88.9333, 19.4867, 93.0216, 21.1951, 97.1175, 22.9067, 101.219, 24.6205, 105.324, 26.3359, 109.43, 28.052, 113.536, 29.768, 117.638, 31.4833, 121.736, 33.197, 125.827, 34.9084, 129.909, 36.6166, 133.98, 38.3209, 138.038, 40.0206, 142.081, 41.7148, 146.106, 43.4028, 150.111, 45.0838, 154.096, 46.757, 158.057, 48.4217, 161.992, 50.0771, 165.899, 51.7223, 169.777, 53.3567, 173.622, 54.9795, 177.434, 56.5898, 181.21, 58.187, 184.947, 59.7702, 188.645, 61.3386, 192.3, 62.8915, 195.911, 64.4282, 199.475, 65.9477, 202.991, 67.4495, 206.456, 68.9326, 209.869, 70.3963, 213.227, 71.8399, 216.528, 73.2625, 219.77, 74.6635, 222.952, 76.0419, 226.07, 77.3971, 229.123, 78.7282, 232.109, 80.0345, 235.026, 81.3153, 237.871, 82.5697, 240.643, 83.797, 243.339, 84.9963, 245.958, 86.167, 248.497, 87.3082, 250.954, 88.4192, 253.327, 89.4992, 255.615, 90.5474, 259.924, 92.5453, 263.865, 94.4069, 267.42, 96.1258, 270.573, 97.696, 273.308, 99.1111, 277.457, 101.452, 280, 104) [node name="Track6" parent="Tracks" instance=ExtResource("1_odec6")] position = Vector2(832, 168) -curve = SubResource("Curve2D_00p67") +curve = SubResource("Curve2D_2j3w1") [node name="Track7" parent="Tracks" instance=ExtResource("1_odec6")] position = Vector2(512, 304) -curve = SubResource("Curve2D_2q1sk") +curve = SubResource("Curve2D_sjkd1") [node name="TrackSwitch" parent="Tracks" instance=ExtResource("2_h3h4n")] position = Vector2(768, 416) @@ -242,12 +272,12 @@ rotation = -0.785398 progress = 103.506 [node name="TrackLine" parent="Tracks/TrackSwitch/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 2.48258, -0.535236, 5.37148, -1.18929, 9.16829, -2.08763, 13.7301, -3.22028, 16.2533, -3.87134, 18.9141, -4.57723, 21.6948, -5.33669, 24.5774, -6.14848, 27.5441, -7.01135, 30.577, -7.92405, 33.6584, -8.88533, 36.7702, -9.89393, 39.8947, -10.9486, 43.014, -12.0481, 46.1103, -13.1912, 49.1656, -14.3767, 52.1621, -15.6032, 55.082, -16.8695, 57.9074, -18.1744, 60.6205, -19.5167, 63.2033, -20.895, 65.6381, -22.3082, 67.9069, -23.755, 69.9919, -25.2341, 73.5391, -28.2843, 76.451, -31.2075, 79.0095, -33.7742, 81.2373, -36.0078, 83.1573, -37.9313, 86.1656, -40.9407, 88.2169, -42.9877, 90.5097, -45.2549) +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 2.48258, -0.535236, 5.37148, -1.18929, 9.16829, -2.08763, 13.7301, -3.22028, 16.2533, -3.87134, 18.9141, -4.57723, 21.6948, -5.33669, 24.5774, -6.14848, 27.5441, -7.01135, 30.577, -7.92405, 33.6584, -8.88533, 36.7702, -9.89393, 39.8947, -10.9486, 43.014, -12.0481, 46.1102, -13.1912, 49.1656, -14.3767, 52.1621, -15.6032, 55.082, -16.8695, 57.9074, -18.1744, 60.6205, -19.5167, 63.2033, -20.895, 65.6381, -22.3082, 67.9069, -23.755, 69.9919, -25.2341, 73.5391, -28.2843, 76.451, -31.2075, 79.0095, -33.7742, 81.2373, -36.0078, 83.1573, -37.9313, 86.1656, -40.9407, 88.2169, -42.9877, 90.5097, -45.2549) [node name="Pointer" parent="Tracks/TrackSwitch/LeftTrack" index="5"] visible = true position = Vector2(63.1927, -20.8891) -rotation = -0.507124 +rotation = -0.507123 [node name="RightTrack" parent="Tracks/TrackSwitch" index="1"] z_index = 0 @@ -269,7 +299,7 @@ points = PackedVector2Array(2.08165e-12, 2.08165e-12, 3.40295, -1.3113e-06, 7.30 [node name="Pointer" parent="Tracks/TrackSwitch/RightTrack" index="5"] visible = false -position = Vector2(66.7695, -2.57292e-05) +position = Vector2(66.7695, -2.57291e-05) rotation = -3.85343e-07 [node name="Button" parent="Tracks/TrackSwitch" index="2"] @@ -302,6 +332,7 @@ station = NodePath("../../TrainStation2") [editable path="Tracks/TrackSwitch2"] [editable path="Tracks/TrackSwitch2/LeftTrack"] [editable path="Tracks/TrackSwitch2/RightTrack"] +[editable path="Tracks/Track5"] [editable path="Tracks/TrackSwitch"] [editable path="Tracks/TrackSwitch/LeftTrack"] [editable path="Tracks/TrackSwitch/RightTrack"] diff --git a/scenes/Level3.tscn b/scenes/Level3.tscn index 070b10d..768aa96 100644 --- a/scenes/Level3.tscn +++ b/scenes/Level3.tscn @@ -1,6 +1,8 @@ -[gd_scene load_steps=31 format=3 uid="uid://bdxckbbvt81uj"] +[gd_scene load_steps=35 format=3 uid="uid://bdxckbbvt81uj"] +[ext_resource type="Script" path="res://scripts/TracksController.gd" id="1_biqvw"] [ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="1_dtmcd"] +[ext_resource type="PackedScene" uid="uid://cq6ckyed0ps4t" path="res://prefabs/Level.tscn" id="1_wh5on"] [ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="2_xqhrk"] [ext_resource type="PackedScene" uid="uid://eky3mqmnjgl3" path="res://prefabs/Tracks/Track_90_Curve_Small.tscn" id="3_0tpkn"] [ext_resource type="PackedScene" uid="uid://bjejtrah22b5a" path="res://prefabs/TrackSwitches/TrackSwitch_LeftStraight_Right90Curve.tscn" id="4_6tlvt"] @@ -9,148 +11,150 @@ [ext_resource type="PackedScene" uid="uid://cgg0iicpep7b2" path="res://prefabs/Tracks/Track_90_Curve_Medium.tscn" id="7_4d6sr"] [ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="8_vug4q"] [ext_resource type="PackedScene" uid="uid://dnq6bkqmpu7vi" path="res://prefabs/TrackSwitches/TrackSwitch_Left45Curve_RightStraight.tscn" id="9_u1i1j"] +[ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="11_j0e0o"] +[ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="12_6ai6h"] -[sub_resource type="Curve2D" id="Curve2D_ggyx5"] +[sub_resource type="Curve2D" id="Curve2D_p4tka"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -354, 0, 0, 0, 0, 0, -78, 0) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_7h6tk"] +[sub_resource type="Curve2D" id="Curve2D_3qq01"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 101, 0) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_ajr1l"] +[sub_resource type="Curve2D" id="Curve2D_en8my"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 64, 0, -15.9835, -15.9593, 15.9835, 15.9593, 112, 16, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 212) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_iq7pd"] +[sub_resource type="Curve2D" id="Curve2D_ju6ir"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 61, 140, 0, 0, 0, 0, 262, -62) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_d3oor"] +[sub_resource type="Curve2D" id="Curve2D_u625j"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -78, 279, 0, 0, 0, 0, -7, 208) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_ia1ry"] +[sub_resource type="Curve2D" id="Curve2D_pksan"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 22, -23, 0, 0, 0, 0, 22, 18) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_mbur0"] +[sub_resource type="Curve2D" id="Curve2D_bptob"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 72) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_e48av"] +[sub_resource type="Curve2D" id="Curve2D_gso6i"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 162) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_rk71d"] +[sub_resource type="Curve2D" id="Curve2D_seh53"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -16.8086, -8.04456, 16.8086, 8.04456, -80, 8, 0, 0, 0, 0, -48, 32, 0, 0, 0, 0, -40, 40) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_xf5hl"] +[sub_resource type="Curve2D" id="Curve2D_6vwi8"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -33, -42, 0, 0, 0, 0, 12, -42) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_ljhms"] +[sub_resource type="Curve2D" id="Curve2D_4k6lf"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 21, -45, 0, 0, 0, 0, 63, -45) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_rkbq0"] +[sub_resource type="Curve2D" id="Curve2D_gqx23"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 17, -19, 0, 0, 0, 0, 57, -19) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_my8ew"] +[sub_resource type="Curve2D" id="Curve2D_5oulk"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 72) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_118kd"] +[sub_resource type="Curve2D" id="Curve2D_qf4pl"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_pygfx"] +[sub_resource type="Curve2D" id="Curve2D_j3865"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -222, 0, 0, 0, 0, 0, 256, 2.08165e-12) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_7svv4"] +[sub_resource type="Curve2D" id="Curve2D_idg1o"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_34ply"] +[sub_resource type="Curve2D" id="Curve2D_dg2l1"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -5, -1, 0, 0, 0, 0, 133, -1) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_vow4u"] +[sub_resource type="Curve2D" id="Curve2D_rwruj"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -10, -31, 0, 0, 0, 0, -10, 18) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_v3hha"] +[sub_resource type="Curve2D" id="Curve2D_8uhmf"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -12, -41, 0, 0, 0, 0, -12, 27) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_ypxof"] +[sub_resource type="Curve2D" id="Curve2D_2jm1u"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 489, 0) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_6e803"] +[sub_resource type="Curve2D" id="Curve2D_kqv2g"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 106) @@ -159,137 +163,167 @@ point_count = 5 [node name="Level3" type="Node2D"] -[node name="TrainStation" parent="." instance=ExtResource("1_dtmcd")] -position = Vector2(210, 89) - -[node name="TrainStation2" parent="." instance=ExtResource("1_dtmcd")] -position = Vector2(1036, 301) -rotation = 1.5708 - -[node name="TrainStation3" parent="." instance=ExtResource("1_dtmcd")] -position = Vector2(40, 638) +[node name="CanvasLayer" type="CanvasLayer" parent="."] -[node name="TrainStation4" parent="." instance=ExtResource("1_dtmcd")] -position = Vector2(858, 598) -rotation = -1.5708 +[node name="Level" parent="CanvasLayer" instance=ExtResource("1_wh5on")] +grow_horizontal = 1 +grow_vertical = 1 +size_flags_horizontal = 3 +size_flags_vertical = 3 [node name="Tracks" type="Node2D" parent="."] +script = ExtResource("1_biqvw") [node name="Track" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(864, 89) -curve = SubResource("Curve2D_ggyx5") +curve = SubResource("Curve2D_p4tka") [node name="Track2" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(864, 89) -curve = SubResource("Curve2D_7h6tk") +curve = SubResource("Curve2D_3qq01") [node name="Track3" parent="Tracks" instance=ExtResource("3_0tpkn")] position = Vector2(908, 89) -curve = SubResource("Curve2D_ajr1l") +curve = SubResource("Curve2D_en8my") [node name="TrackSwitch" parent="Tracks" instance=ExtResource("4_6tlvt")] position = Vector2(786, 89) -[node name="Track2" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track4" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(548, 311) -curve = SubResource("Curve2D_iq7pd") +curve = SubResource("Curve2D_ju6ir") -[node name="Track17" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track17" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(548, 311) -curve = SubResource("Curve2D_d3oor") +curve = SubResource("Curve2D_u625j") -[node name="TrackSwitch" parent="." instance=ExtResource("6_so35w")] +[node name="TrackSwitch2" parent="Tracks" instance=ExtResource("6_so35w")] position = Vector2(858, 161) rotation = 1.5708 -[node name="Track3" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track5" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(836, 280) -curve = SubResource("Curve2D_ia1ry") +curve = SubResource("Curve2D_pksan") -[node name="Track4" parent="." instance=ExtResource("3_0tpkn")] +[node name="Track6" parent="Tracks" instance=ExtResource("3_0tpkn")] position = Vector2(858, 542) rotation = 1.5708 -curve = SubResource("Curve2D_mbur0") +curve = SubResource("Curve2D_bptob") -[node name="Track5" parent="." instance=ExtResource("7_4d6sr")] +[node name="Track7" parent="Tracks" instance=ExtResource("7_4d6sr")] position = Vector2(1036, 630) rotation = 1.5708 -curve = SubResource("Curve2D_e48av") +curve = SubResource("Curve2D_gso6i") -[node name="TrackSwitch2" parent="." instance=ExtResource("6_so35w")] +[node name="TrackSwitch3" parent="Tracks" instance=ExtResource("6_so35w")] position = Vector2(690, 670) -[node name="Track6" parent="." instance=ExtResource("5_ehsh7")] +[node name="Track8" parent="Tracks" instance=ExtResource("5_ehsh7")] position = Vector2(738, 758) rotation = 3.14159 -curve = SubResource("Curve2D_rk71d") +curve = SubResource("Curve2D_seh53") -[node name="TrackSwitch3" parent="." instance=ExtResource("8_vug4q")] +[node name="TrackSwitch4" parent="Tracks" instance=ExtResource("8_vug4q")] position = Vector2(646, 670) rotation = 3.14159 -[node name="Track7" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track9" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(678, 712) -curve = SubResource("Curve2D_xf5hl") +curve = SubResource("Curve2D_6vwi8") -[node name="Track8" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track10" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(319, 683) -curve = SubResource("Curve2D_ljhms") +curve = SubResource("Curve2D_4k6lf") -[node name="TrackSwitch5" parent="." instance=ExtResource("9_u1i1j")] +[node name="TrackSwitch5" parent="Tracks" instance=ExtResource("9_u1i1j")] position = Vector2(382, 638) -[node name="Track9" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track11" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(461, 657) -curve = SubResource("Curve2D_rkbq0") +curve = SubResource("Curve2D_gqx23") -[node name="Track10" parent="." instance=ExtResource("3_0tpkn")] +[node name="Track12" parent="Tracks" instance=ExtResource("3_0tpkn")] position = Vector2(96, 638) rotation = 3.14159 -curve = SubResource("Curve2D_my8ew") +curve = SubResource("Curve2D_5oulk") -[node name="Track11" parent="." instance=ExtResource("7_4d6sr")] +[node name="Track13" parent="Tracks" instance=ExtResource("7_4d6sr")] position = Vector2(32, 702) rotation = 3.14159 -curve = SubResource("Curve2D_118kd") +curve = SubResource("Curve2D_qf4pl") -[node name="Track12" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track14" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(262, 702) -curve = SubResource("Curve2D_pygfx") +curve = SubResource("Curve2D_j3865") -[node name="TrackSwitch6" parent="." instance=ExtResource("8_vug4q")] +[node name="TrackSwitch6" parent="Tracks" instance=ExtResource("8_vug4q")] position = Vector2(-64, 438) rotation = 1.5708 -[node name="Track13" parent="." instance=ExtResource("7_4d6sr")] +[node name="Track15" parent="Tracks" instance=ExtResource("7_4d6sr")] position = Vector2(-64, 217) rotation = -1.5708 -curve = SubResource("Curve2D_7svv4") +curve = SubResource("Curve2D_idg1o") -[node name="Track15" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track16" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(77, 90) -curve = SubResource("Curve2D_34ply") +curve = SubResource("Curve2D_dg2l1") -[node name="TrackSwitch4" parent="." instance=ExtResource("4_6tlvt")] +[node name="TrackSwitch7" parent="Tracks" instance=ExtResource("4_6tlvt")] position = Vector2(-64, 389) rotation = -1.5708 -[node name="Track" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track18" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(-54, 420) -curve = SubResource("Curve2D_vow4u") +curve = SubResource("Curve2D_rwruj") -[node name="Track14" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track19" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(-52, 266) -curve = SubResource("Curve2D_v3hha") +curve = SubResource("Curve2D_8uhmf") -[node name="Track16" parent="." instance=ExtResource("2_xqhrk")] +[node name="Track20" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(8, 317) -curve = SubResource("Curve2D_ypxof") +curve = SubResource("Curve2D_2jm1u") -[node name="TrackSwitch7" parent="." instance=ExtResource("9_u1i1j")] +[node name="TrackSwitch8" parent="Tracks" instance=ExtResource("9_u1i1j")] position = Vector2(541, 519) rotation = -0.785398 -[node name="Track18" parent="." instance=ExtResource("3_0tpkn")] +[node name="Track21" parent="Tracks" instance=ExtResource("3_0tpkn")] position = Vector2(441, 317) -curve = SubResource("Curve2D_6e803") +curve = SubResource("Curve2D_kqv2g") + +[node name="TrainStation" parent="." instance=ExtResource("1_dtmcd")] +position = Vector2(210, 89) + +[node name="TrainStation2" parent="." instance=ExtResource("1_dtmcd")] +position = Vector2(1036, 301) +rotation = 1.5708 + +[node name="TrainStation3" parent="." instance=ExtResource("1_dtmcd")] +position = Vector2(40, 638) + +[node name="TrainStation4" parent="." instance=ExtResource("1_dtmcd")] +position = Vector2(858, 598) +rotation = -1.5708 + +[node name="TrainRoute" parent="." node_paths=PackedStringArray("tracks_controller") instance=ExtResource("11_j0e0o")] +tracks_controller = NodePath("../Tracks") +route_name = "RailJet" + +[node name="TrainRouteStop" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("12_6ai6h")] +station = NodePath("../../TrainStation") + +[node name="TrainRouteStop2" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("12_6ai6h")] +station = NodePath("../../TrainStation2") + +[node name="TrainRoute2" parent="." node_paths=PackedStringArray("tracks_controller") instance=ExtResource("11_j0e0o")] +tracks_controller = NodePath("../Tracks") +color = Color(0.592157, 0, 0, 1) +route_name = "Uno" + +[node name="TrainRouteStop" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("12_6ai6h")] +station = NodePath("../../TrainStation3") + +[node name="TrainRouteStop2" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("12_6ai6h")] +station = NodePath("../../TrainStation4") From 3acd4370a4e290cee2e6d8ed03c676e947da3b9f Mon Sep 17 00:00:00 2001 From: mineiwik <29404520+mineiwik@users.noreply.github.com> Date: Mon, 2 Oct 2023 17:31:24 +0200 Subject: [PATCH 4/7] update level 2 and delete unused scene and scripts --- scenes/Level2.tscn | 61 ++++--- scenes/start.tscn | 215 ----------------------- scenes/test_track_1.tscn | 368 --------------------------------------- scripts/Levels/Level2.gd | 28 --- scripts/TestTrack1.gd | 28 --- scripts/track1.gd | 20 --- 6 files changed, 34 insertions(+), 686 deletions(-) delete mode 100644 scenes/start.tscn delete mode 100644 scenes/test_track_1.tscn delete mode 100644 scripts/Levels/Level2.gd delete mode 100644 scripts/TestTrack1.gd delete mode 100644 scripts/track1.gd diff --git a/scenes/Level2.tscn b/scenes/Level2.tscn index cf39772..5ca119b 100644 --- a/scenes/Level2.tscn +++ b/scenes/Level2.tscn @@ -1,15 +1,14 @@ -[gd_scene load_steps=27 format=3 uid="uid://dhrcwth0f3bi0"] +[gd_scene load_steps=26 format=3 uid="uid://dhrcwth0f3bi0"] -[ext_resource type="Script" path="res://scripts/Levels/Level2.gd" id="1_ahmya"] [ext_resource type="Script" path="res://scripts/TracksController.gd" id="2_ai76e"] +[ext_resource type="PackedScene" uid="uid://cq6ckyed0ps4t" path="res://prefabs/Level.tscn" id="2_l6rrh"] [ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="3_ud27o"] [ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="4_iman8"] [ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="5_jlsfp"] -[ext_resource type="PackedScene" uid="uid://c5rp2hi42rfrv" path="res://prefabs/TrainEngine.tscn" id="6_2g7vp"] [ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="7_p34jf"] [ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="8_xs6w7"] -[sub_resource type="Curve2D" id="Curve2D_p3nge"] +[sub_resource type="Curve2D" id="Curve2D_mn1f5"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 208, 112, -23.833, 36.0765, 23.833, -36.0765, 176, 32, 0, 0, 0, 0, 264, 0) @@ -55,28 +54,28 @@ instance_count = 11 mesh = SubResource("ArrayMesh_umy7o") buffer = PackedFloat32Array(0.999049, -0.0436099, 0, 4.99933, 0.0436099, 0.999049, 0, 0.0488746, 0.994522, -0.104527, 0, 14.9811, 0.104527, 0.994522, 0, 0.627066, 0.985411, -0.170193, 0, 24.9078, 0.170193, 0.985411, 0, 1.82289, 0.967065, -0.254529, 0, 34.7237, 0.254529, 0.967065, 0, 3.71877, 0.92969, -0.368342, 0, 44.3161, 0.368342, 0.92969, 0, 6.52693, 0.849053, -0.528308, 0, 53.448, 0.528308, 0.849053, 0, 10.5731, 0.717449, -0.696611, 0, 61.547, 0.696611, 0.717449, 0, 16.3878, 0.707669, -0.706544, 0, 68.6724, 0.706544, 0.707669, 0, 23.4009, 0.707199, -0.707014, 0, 75.7479, 0.707014, 0.707199, 0, 30.4676, 0.706773, -0.70744, 0, 82.8188, 0.70744, 0.706773, 0, 37.5388, 0.706311, -0.707902, 0, 89.8854, 0.707902, 0.706311, 0, 44.6143) -[sub_resource type="Curve2D" id="Curve2D_853vy"] +[sub_resource type="Curve2D" id="Curve2D_3oakt"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -4, 0, -9.2703, 24.8974, 9.2703, -24.8974, 56, -24, -1.38898, -2.48031, 1.38898, 2.48031, 40, -80) } point_count = 3 -[sub_resource type="Curve2D" id="Curve2D_h0bto"] +[sub_resource type="Curve2D" id="Curve2D_cr413"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 200, 104, -6.62164, 38.4055, 6.62164, -38.4055, 152, 64, 1.11362, 0.890899, -1.11362, -0.890899, 168, 24) } point_count = 3 -[sub_resource type="Curve2D" id="Curve2D_6fh71"] +[sub_resource type="Curve2D" id="Curve2D_gr1gd"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -48, -16, 0, 0, 0, 0, 128, -16) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_u77jj"] +[sub_resource type="Curve2D" id="Curve2D_ceqwe"] resource_local_to_scene = true _data = { "points": PackedVector2Array(4.49492, -5.61865, -4.49492, 5.61865, -64, -48, 8.30851, -5.48008, -8.30851, 5.48008, 280, 104) @@ -89,7 +88,7 @@ instance_count = 38 mesh = SubResource("ArrayMesh_umy7o") buffer = PackedFloat32Array(0.887414, -0.460974, 0, -60.0108, 0.460974, 0.887414, 0, -45.0042, 0.905093, -0.425215, 0, -51.0767, 0.425215, 0.905093, 0, -40.5151, 0.911384, -0.411557, 0, -42.0062, 0.411557, 0.911384, 0, -36.3054, 0.914674, -0.404193, 0, -32.883, 0.404193, 0.914674, 0, -32.2105, 0.916744, -0.399476, 0, -23.7304, 0.399476, 0.916744, 0, -28.1819, 0.918207, -0.396102, 0, -14.5591, 0.396102, 0.918207, 0, -24.1962, 0.919262, -0.393646, 0, -5.37424, 0.393646, 0.919262, 0, -20.2416, 0.920054, -0.391792, 0, 3.82057, 0.391792, 0.920054, 0, -16.3103, 0.92071, -0.390248, 0, 13.023, 0.390248, 0.92071, 0, -12.3968, 0.921213, -0.389059, 0, 22.2313, 0.389059, 0.921213, 0, -8.49726, 0.921609, -0.38812, 0, 31.4445, 0.38812, 0.921609, 0, -4.60922, 0.921924, -0.38737, 0, 40.6614, 0.38737, 0.921924, 0, -0.729957, 0.92218, -0.386761, 0, 49.8814, 0.386761, 0.92218, 0, 3.14205, 0.922369, -0.38631, 0, 59.1037, 0.38631, 0.922369, 0, 7.00846, 0.922513, -0.385965, 0, 68.3278, 0.385965, 0.922513, 0, 10.8706, 0.922612, -0.385729, 0, 77.5532, 0.385729, 0.922612, 0, 14.7296, 0.922668, -0.385596, 0, 86.7795, 0.385596, 0.922668, 0, 18.5865, 0.922685, -0.385554, 0, 96.0062, 0.385554, 0.922685, 0, 22.4423, 0.922664, -0.385606, 0, 105.233, 0.385606, 0.922664, 0, 26.2979, 0.922604, -0.385748, 0, 114.46, 0.385748, 0.922604, 0, 30.1543, 0.922506, -0.385982, 0, 123.685, 0.385982, 0.922506, 0, 34.0123, 0.92237, -0.386308, 0, 132.91, 0.386308, 0.92237, 0, 37.8729, 0.92218, -0.38676, 0, 142.133, 0.38676, 0.92218, 0, 41.7369, 0.921951, -0.387306, 0, 151.355, 0.387306, 0.921951, 0, 45.6059, 0.921672, -0.387971, 0, 160.573, 0.387971, 0.921672, 0, 49.4805, 0.921307, -0.388837, 0, 169.789, 0.388837, 0.921307, 0, 53.3621, 0.920892, -0.389818, 0, 179.001, 0.389818, 0.920892, 0, 57.2528, 0.920373, -0.391043, 0, 188.209, 0.391043, 0.920373, 0, 61.1538, 0.919746, -0.392514, 0, 197.411, 0.392514, 0.919746, 0, 65.0679, 0.918937, -0.394405, 0, 206.607, 0.394405, 0.918937, 0, 68.9972, 0.917979, -0.39663, 0, 215.794, 0.39663, 0.917979, 0, 72.9462, 0.916728, -0.399512, 0, 224.971, 0.399512, 0.916728, 0, 76.9195, 0.915018, -0.403412, 0, 234.134, 0.403412, 0.915018, 0, 80.9239, 0.912598, -0.408858, 0, 243.279, 0.408858, 0.912598, 0, 84.9697, 0.908782, -0.417271, 0, 252.397, 0.417271, 0.908782, 0, 89.0759, 0.90236, -0.430983, 0, 261.472, 0.430983, 0.90236, 0, 93.2766, 0.882252, -0.470777, 0, 270.468, 0.470777, 0.882252, 0, 97.6435, 0.70642, -0.707793, 0, 278.898, 0.707793, 0.70642, 0, 102.895) -[sub_resource type="Curve2D" id="Curve2D_s3nsw"] +[sub_resource type="Curve2D" id="Curve2D_se16d"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0.350769, -0.420923, -0.350769, 0.420923, -108, -72, -2.51984, -37.1677, 2.51984, 37.1677, -32, -40, 0, 0, 0, 0, -72, 24) @@ -102,7 +101,7 @@ instance_count = 17 mesh = SubResource("ArrayMesh_umy7o") buffer = PackedFloat32Array(1, 0.000598168, 0, -103, -0.000598168, 1, 0, -72.0539, 0.998903, -0.0468321, 0, -93.0019, 0.0468321, 0.998903, 0, -71.9513, 0.994609, -0.103698, 0, -83.0225, 0.103698, 0.994609, 0, -71.3334, 0.984254, -0.176763, 0, -73.1004, 0.176763, 0.984254, 0, -70.1074, 0.961491, -0.274836, 0, -63.3059, 0.274836, 0.961491, 0, -68.1112, 0.910867, -0.4127, 0, -53.7854, 0.4127, 0.910867, 0, -65.0752, 0.795079, -0.606507, 0, -44.8859, 0.606507, 0.795079, 0, -60.549, 0.549428, -0.835541, 0, -37.442, 0.835541, 0.549428, 0, -53.9368, 0.176727, -0.98426, 0, -32.9085, 0.98426, 0.176727, 0, -45.1147, -0.0827939, -0.996567, 0, -31.9487, 0.996567, -0.0827939, 0, -35.2076, -0.275778, -0.961221, 0, -33.307, 0.961221, -0.275778, 0, -25.321, -0.4324, -0.901682, 0, -36.5098, 0.901682, -0.4324, 0, -15.864, -0.55362, -0.832769, 0, -41.1786, 0.832769, -0.55362, 0, -7.03251, -0.64464, -0.764486, 0, -46.955, 0.764486, -0.64464, 0, 1.12253, -0.712348, -0.701827, 0, -53.5772, 0.701827, -0.712348, 0, 8.60977, -0.767802, -0.640687, 0, -60.8599, 0.640687, -0.767802, 0, 15.4572, -0.821997, -0.569492, 0, -68.6717, 0.569492, -0.821997, 0, 21.6941) -[sub_resource type="Curve2D" id="Curve2D_k0223"] +[sub_resource type="Curve2D" id="Curve2D_wpc1j"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0.445953, 6.39199, -0.445953, -6.39199, -48, 48, 1.31102, 2.24746, -1.31102, -2.24746, 248, -112) @@ -136,14 +135,21 @@ mesh = SubResource("ArrayMesh_umy7o") buffer = PackedFloat32Array(1, 3.85343e-07, 0, 5, -3.85343e-07, 1, 0, -1.92671e-06, 1, 3.85343e-07, 0, 15, -3.85343e-07, 1, 0, -5.78014e-06, 1, 3.85343e-07, 0, 25, -3.85343e-07, 1, 0, -9.63357e-06, 1, 3.85343e-07, 0, 35, -3.85343e-07, 1, 0, -1.3487e-05, 1, 3.85343e-07, 0, 45, -3.85343e-07, 1, 0, -1.73404e-05, 1, 3.85343e-07, 0, 55, -3.85343e-07, 1, 0, -2.11938e-05, 1, 3.85343e-07, 0, 65, -3.85343e-07, 1, 0, -2.50473e-05, 1, 3.85342e-07, 0, 75, -3.85342e-07, 1, 0, -2.89007e-05) [node name="Level2" type="Node2D"] -script = ExtResource("1_ahmya") + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="Level" parent="CanvasLayer" instance=ExtResource("2_l6rrh")] +grow_horizontal = 1 +grow_vertical = 1 +size_flags_horizontal = 3 +size_flags_vertical = 3 [node name="Tracks" type="Node2D" parent="."] script = ExtResource("2_ai76e") [node name="Track" parent="Tracks" instance=ExtResource("3_ud27o")] position = Vector2(160, 96) -curve = SubResource("Curve2D_p3nge") +curve = SubResource("Curve2D_mn1f5") [node name="TrackSwitch2" parent="Tracks" instance=ExtResource("4_iman8")] position = Vector2(392, 416) @@ -193,19 +199,19 @@ rotation = 0.783806 [node name="Track2" parent="Tracks" instance=ExtResource("3_ud27o")] position = Vector2(728, 496) -curve = SubResource("Curve2D_853vy") +curve = SubResource("Curve2D_3oakt") [node name="Track3" parent="Tracks" instance=ExtResource("3_ud27o")] position = Vector2(224, 392) -curve = SubResource("Curve2D_h0bto") +curve = SubResource("Curve2D_cr413") [node name="Track4" parent="Tracks" instance=ExtResource("3_ud27o")] position = Vector2(544, 400) -curve = SubResource("Curve2D_6fh71") +curve = SubResource("Curve2D_gr1gd") [node name="Track5" parent="Tracks" instance=ExtResource("3_ud27o")] position = Vector2(432, 256) -curve = SubResource("Curve2D_u77jj") +curve = SubResource("Curve2D_ceqwe") head_signal_enabled = true [node name="MultiMeshInstance2D" parent="Tracks/Track5" index="1"] @@ -233,7 +239,7 @@ points = PackedVector2Array(-64, -48, -60.7862, -45.4272, -58.7843, -44.3351, -5 [node name="Track6" parent="Tracks" instance=ExtResource("3_ud27o")] position = Vector2(832, 168) -curve = SubResource("Curve2D_s3nsw") +curve = SubResource("Curve2D_se16d") tail_signal_enabled = true [node name="MultiMeshInstance2D" parent="Tracks/Track6" index="1"] @@ -256,7 +262,7 @@ points = PackedVector2Array(-108, -72, -104.938, -72.0286, -101.333, -72.0756, - [node name="Track7" parent="Tracks" instance=ExtResource("3_ud27o")] position = Vector2(512, 304) -curve = SubResource("Curve2D_k0223") +curve = SubResource("Curve2D_wpc1j") [node name="TrackSwitch" parent="Tracks" instance=ExtResource("4_iman8")] position = Vector2(768, 416) @@ -323,14 +329,12 @@ position = Vector2(424, 96) [node name="TrainStation2" parent="." instance=ExtResource("5_jlsfp")] position = Vector2(424, 496) -[node name="TrainEngine" parent="." instance=ExtResource("6_2g7vp")] -color = Color(1, 0.929412, 0.619608, 1) - -[node name="TrainEngine2" parent="." instance=ExtResource("6_2g7vp")] - -[node name="TrainRoute" parent="." node_paths=PackedStringArray("train") instance=ExtResource("7_p34jf")] +[node name="TrainRoute" parent="." node_paths=PackedStringArray("tracks_controller") instance=ExtResource("7_p34jf")] position = Vector2(354.396, 151.157) -train = NodePath("../TrainEngine") +tracks_controller = NodePath("../Tracks") +car_count = 2 +color = Color(1, 0.929412, 0.619608, 1) +route_name = "Icarus" [node name="TrainRouteStop" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] station = NodePath("../../TrainStation") @@ -338,8 +342,11 @@ station = NodePath("../../TrainStation") [node name="TrainRouteStop2" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] station = NodePath("../../TrainStation2") -[node name="TrainRoute2" parent="." node_paths=PackedStringArray("train") instance=ExtResource("7_p34jf")] -train = NodePath("../TrainEngine2") +[node name="TrainRoute2" parent="." node_paths=PackedStringArray("tracks_controller") instance=ExtResource("7_p34jf")] +tracks_controller = NodePath("../Tracks") +car_count = 2 +color = Color(0.203922, 0.203922, 0.203922, 1) +route_name = "Gargantua" [node name="TrainRouteStop" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] station = NodePath("../../TrainStation2") diff --git a/scenes/start.tscn b/scenes/start.tscn deleted file mode 100644 index 7b961c2..0000000 --- a/scenes/start.tscn +++ /dev/null @@ -1,215 +0,0 @@ -[gd_scene load_steps=21 format=3 uid="uid://bt0pdthcms3sl"] - -[ext_resource type="Script" path="res://scripts/track1.gd" id="1_31lvk"] -[ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="2_aska1"] -[ext_resource type="PackedScene" uid="uid://c5rp2hi42rfrv" path="res://prefabs/TrainEngine.tscn" id="2_ee1j8"] -[ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="4_kq6cn"] -[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="4_wifjq"] -[ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="6_sec3k"] -[ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="7_hql3n"] - -[sub_resource type="Curve2D" id="Curve2D_rf02u"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(137.622, -3.25118, -137.622, 3.25118, -323.749, -330.001, 28.7998, -67, -28.7998, 67, -438.09, -133.876, -80.756, -7.07106, 80.756, 7.07106, -383.47, -13.876, -74.7544, -18.1696, 74.7544, 18.1696, -186.836, -20.876, -93.1992, -6.32794, 93.1992, 6.32794, 314.813, -361.999) -} -point_count = 5 - -[sub_resource type="Curve2D" id="Curve2D_6pi6j"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -24.017, 16.005, 24.017, -16.005, 64, -16, -8.2255, 0.90609, 8.2255, -0.90609, 211, -4) -} -point_count = 3 - -[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] -_surfaces = [{ -"2d": true, -"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), -"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), -"format": 33558545, -"index_count": 6, -"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), -"primitive": 3, -"vertex_count": 4, -"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) -}] - -[sub_resource type="MultiMesh" id="MultiMesh_cd0fe"] -resource_local_to_scene = true -instance_count = 22 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.99808, 0.0619333, 0, 4.99647, -0.0619333, 0.99808, 0, -0.176236, 0.992584, 0.121559, 0, 14.9636, -0.121559, 0.992584, 0, -0.961502, 0.98391, 0.178663, 0, 24.872, -0.178663, 0.98391, 0, -2.30135, 0.969346, 0.2457, 0, 34.6786, -0.2457, 0.969346, 0, -4.24865, 0.94496, 0.327186, 0, 44.3185, -0.327186, 0.94496, 0, -6.89664, 0.901405, 0.432977, 0, 53.6711, -0.432977, 0.901405, 0, -10.4225, 0.872033, 0.489447, 0, 62.5187, -0.489447, 0.872033, 0, -15.0622, 0.98167, 0.190586, 0, 71.6268, -0.190586, 0.98167, 0, -19.0316, 0.998726, 0.0504612, 0, 81.5022, -0.0504612, 0.998726, 0, -20.5174, 0.999794, -0.0203211, 0, 91.4947, 0.0203211, 0.999794, 0, -20.8305, 0.997779, -0.0666037, 0, 101.488, 0.0666037, 0.997779, 0, -20.5031, 0.995204, -0.0978241, 0, 111.46, 0.0978241, 0.995204, 0, -19.7521, 0.992528, -0.122021, 0, 121.405, 0.122021, 0.992528, 0, -18.7091, 0.99009, -0.140433, 0, 131.324, 0.140433, 0.99009, 0, -17.4429, 0.987979, -0.15459, 0, 141.219, 0.15459, 0.987979, 0, -16.0016, 0.986092, -0.166203, 0, 151.094, 0.166203, 0.986092, 0, -14.4235, 0.984476, -0.175519, 0, 160.951, 0.175519, 0.984476, 0, -12.7366, 0.983271, -0.182148, 0, 170.792, 0.182148, 0.983271, 0, -10.9635, 0.982529, -0.186112, 0, 180.623, 0.186112, 0.982529, 0, -9.12998, 0.982767, -0.18485, 0, 190.448, 0.18485, 0.982767, 0, -7.26821, 0.985876, -0.167476, 0, 200.28, 0.167476, 0.985876, 0, -5.44161, 0.998275, -0.0587069, 0, 210.173, 0.0587069, 0.998275, 0, -4.04861) - -[sub_resource type="Curve2D" id="Curve2D_t0o6m"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -23.902, -16.064, 23.902, 16.064, 64, 16, 40.9502, -53.9767, -40.9502, 53.9767, 81, 115) -} -point_count = 3 - -[sub_resource type="MultiMesh" id="MultiMesh_adgnh"] -resource_local_to_scene = true -instance_count = 18 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.998161, -0.0606213, 0, 4.9967, 0.0606213, 0.998161, 0, 0.169378, 0.992717, -0.120468, 0, 14.9649, 0.120468, 0.992717, 0, 0.941638, 0.984055, -0.177863, 0, 24.8746, 0.177863, 0.984055, 0, 2.27142, 0.969439, -0.245334, 0, 34.6825, 0.245334, 0.969439, 0, 4.21167, 0.944761, -0.32776, 0, 44.323, 0.32776, 0.944761, 0, 6.85753, 0.90068, -0.434483, 0, 53.6727, 0.434483, 0.90068, 0, 10.3906, 0.831705, -0.555218, 0, 62.5102, 0.555218, 0.831705, 0, 15.0492, 0.792282, -0.610156, 0, 70.7349, 0.610156, 0.792282, 0, 20.7335, 0.735251, -0.677795, 0, 78.5318, 0.677795, 0.735251, 0, 26.9903, 0.647282, -0.762251, 0, 85.6731, 0.762251, 0.647282, 0, 33.9812, 0.514369, -0.857569, 0, 91.8239, 0.857569, 0.514369, 0, 41.8516, 0.333145, -0.942875, 0, 96.5422, 0.942875, 0.333145, 0, 50.6492, 0.12076, -0.992682, 0, 99.3671, 0.992682, 0.12076, 0, 60.2197, -0.080349, -0.996767, 0, 100.045, 0.996767, -0.080349, 0, 70.1748, -0.262192, -0.965016, 0, 98.7245, 0.965016, -0.262192, 0, 80.0688, -0.393564, -0.919297, 0, 95.7542, 0.919297, -0.393564, 0, 89.6051, -0.491523, -0.870865, 0, 91.5784, 0.870865, -0.491523, 0, 98.6837, -0.565395, -0.82482, 0, 86.4657, 0.82482, -0.565395, 0, 107.274) - -[sub_resource type="Curve2D" id="Curve2D_k7kih"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(-79.4597, 5.29732, 79.4597, -5.29732, -142, -352, 7.99999, -67.75, -7.99999, 67.75, -143, -110, 44, 3.75, -44, -3.75, -245, 48) -} -point_count = 3 - -[sub_resource type="Curve2D" id="Curve2D_ifa0p"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -24.017, 16.005, 24.017, -16.005, 64, -16, 0, 0, 0, 0, 128, -32) -} -point_count = 3 - -[sub_resource type="MultiMesh" id="MultiMesh_yjbhi"] -resource_local_to_scene = true -instance_count = 13 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.99808, 0.0619333, 0, 4.99647, -0.0619333, 0.99808, 0, -0.176236, 0.992584, 0.121559, 0, 14.9636, -0.121559, 0.992584, 0, -0.961502, 0.98391, 0.178663, 0, 24.872, -0.178663, 0.98391, 0, -2.30135, 0.969346, 0.2457, 0, 34.6786, -0.2457, 0.969346, 0, -4.24865, 0.94496, 0.327186, 0, 44.3185, -0.327186, 0.94496, 0, -6.89664, 0.901405, 0.432977, 0, 53.6711, -0.432977, 0.901405, 0, -10.4225, 0.847395, 0.530963, 0, 62.5187, -0.530963, 0.847395, 0, -15.0622, 0.910454, 0.413611, 0, 71.1488, -0.413611, 0.910454, 0, -20.1015, 0.949217, 0.314623, 0, 80.3623, -0.314623, 0.949217, 0, -23.9742, 0.971893, 0.235421, 0, 89.9171, -0.235421, 0.971893, 0, -26.9124, 0.985566, 0.169291, 0, 99.6749, -0.169291, 0.985566, 0, -29.0903, 0.993711, 0.111974, 0, 109.553, -0.111974, 0.993711, 0, -30.6376, 0.99852, 0.054383, 0, 119.503, -0.054383, 0.99852, 0, -31.6189) - -[sub_resource type="Curve2D" id="Curve2D_s6mpb"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -23.902, -16.064, 23.902, 16.064, 64, 16, 0, 0, 0, 0, 53, 80) -} -point_count = 3 - -[sub_resource type="MultiMesh" id="MultiMesh_fdcvs"] -resource_local_to_scene = true -instance_count = 14 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.998161, -0.0606213, 0, 4.9967, 0.0606213, 0.998161, 0, 0.169378, 0.992717, -0.120468, 0, 14.9649, 0.120468, 0.992717, 0, 0.941638, 0.984055, -0.177863, 0, 24.8746, 0.177863, 0.984055, 0, 2.27142, 0.969439, -0.245334, 0, 34.6825, 0.245334, 0.969439, 0, 4.21167, 0.944761, -0.32776, 0, 44.323, 0.32776, 0.944761, 0, 6.85753, 0.90068, -0.434483, 0, 53.6727, 0.434483, 0.90068, 0, 10.3906, 0.800831, -0.59889, 0, 62.5102, 0.59889, 0.800831, 0, 15.0492, 0.387919, -0.921694, 0, 69.5121, 0.921694, 0.387919, 0, 21.9997, -0.00928453, -0.999957, 0, 72.2325, 0.999957, -0.00928453, 0, 31.4886, -0.243766, -0.969834, 0, 71.4367, 0.969834, -0.243766, 0, 41.4151, -0.372475, -0.928042, 0, 68.6345, 0.928042, -0.372475, 0, 51.0042, -0.453013, -0.891504, 0, 64.6923, 0.891504, -0.453013, 0, 60.1896, -0.514499, -0.857491, 0, 59.9968, 0.857491, -0.514499, 0, 69.0157, -0.567529, -0.823353, 0, 54.7185, 0.823353, -0.567529, 0, 77.5069) - -[sub_resource type="Curve2D" id="Curve2D_38uo1"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 8, 111, 0.595275, -2.57953, -0.595275, 2.57953, 117, -62) -} -point_count = 2 - -[sub_resource type="Curve2D" id="Curve2D_56v8v"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, -892, 42, 24.75, -76.75, -24.75, 76.75, -826, 123, -75.7984, -44.4472, 75.7984, 44.4472, -906, 340, 0, 0, 0, 0, -733, 381) -} -point_count = 4 - -[node name="Node2D" type="Node2D"] -script = ExtResource("1_31lvk") -car_count = 4 - -[node name="TrainEngine" parent="." instance=ExtResource("2_ee1j8")] -color = Color(0, 0.698039, 1, 1) - -[node name="Tracks" type="Node2D" parent="."] - -[node name="Track" parent="Tracks" instance=ExtResource("2_aska1")] -position = Vector2(615, 159) -rotation = 3.14159 -scale = Vector2(1.00695, 1) -curve = SubResource("Curve2D_rf02u") - -[node name="TrackSwitch" parent="Tracks" instance=ExtResource("4_wifjq")] -position = Vector2(273, 153) - -[node name="LeftTrack" parent="Tracks/TrackSwitch" index="0"] -curve = SubResource("Curve2D_6pi6j") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_cd0fe") - -[node name="TailPoint" parent="Tracks/TrackSwitch/LeftTrack" index="3"] -position = Vector2(211, -4) -rotation = -0.109714 -progress = 215.828 - -[node name="TrackLine" parent="Tracks/TrackSwitch/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.76493, -0.031045, 6.62261, -0.249297, 10.0063, -0.487274, 13.9174, -0.842432, 18.2738, -1.33823, 22.9936, -1.99813, 25.4642, -2.39694, 27.9949, -2.84558, 30.5755, -3.34697, 33.1957, -3.90405, 35.8452, -4.51975, 38.514, -5.197, 41.1916, -5.93874, 43.8678, -6.74789, 46.5325, -7.62739, 49.1753, -8.58017, 51.7861, -9.60917, 54.3545, -10.7173, 56.8703, -11.9075, 59.3234, -13.1828, 61.7033, -14.5459, 64, -16, 66.5114, -17.3712, 69.5184, -18.4928, 72.9848, -19.3787, 76.8745, -20.0424, 81.1515, -20.4977, 85.7795, -20.7582, 90.7224, -20.8376, 93.3007, -20.8137, 95.9442, -20.7497, 98.6484, -20.6472, 101.409, -20.508, 104.221, -20.3338, 107.08, -20.1264, 109.982, -19.8873, 112.921, -19.6183, 115.895, -19.3212, 118.897, -18.9977, 121.924, -18.6494, 124.971, -18.278, 128.034, -17.8854, 131.108, -17.4731, 134.188, -17.0429, 137.27, -16.5965, 140.349, -16.1357, 143.422, -15.6621, 146.483, -15.1774, 149.528, -14.6834, 152.552, -14.1817, 155.551, -13.6742, 158.521, -13.1624, 161.456, -12.648, 164.353, -12.1329, 167.206, -11.6188, 170.012, -11.1072, 172.766, -10.6, 175.463, -10.0988, 178.098, -9.60536, 180.668, -9.12141, 183.168, -8.64863, 187.939, -7.74345, 192.374, -6.9035, 196.438, -6.14248, 200.094, -5.47406, 203.307, -4.91193, 206.04, -4.46978, 208.257, -4.16128, 211, -4) - -[node name="Pointer" parent="Tracks/TrackSwitch/LeftTrack" index="5"] -position = Vector2(64, -16) - -[node name="RightTrack" parent="Tracks/TrackSwitch" index="1"] -curve = SubResource("Curve2D_t0o6m") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_adgnh") - -[node name="TailPoint" parent="Tracks/TrackSwitch/RightTrack" index="3"] -position = Vector2(81, 115) -rotation = 2.21982 -progress = 184.466 - -[node name="TrackLine" parent="Tracks/TrackSwitch/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.76964, 0.028625, 6.63878, 0.241, 10.0295, 0.475391, 13.9477, 0.826875, 18.311, 1.31917, 23.0368, 1.976, 25.5098, 2.37353, 28.0427, 2.82108, 30.6249, 3.32162, 33.2462, 3.87813, 35.8963, 4.49355, 38.5649, 5.17086, 41.2417, 5.91302, 43.9163, 6.723, 46.5786, 7.60376, 49.218, 8.55827, 51.8245, 9.58948, 54.3875, 10.7004, 56.8969, 11.8939, 59.3423, 13.173, 61.7135, 14.5408, 64, 16, 66.2679, 17.5441, 68.5797, 19.1661, 70.9198, 20.868, 73.2726, 22.6521, 75.6224, 24.5207, 77.9537, 26.476, 80.251, 28.5201, 82.4985, 30.6553, 84.6808, 32.8838, 86.7822, 35.2079, 88.7872, 37.6297, 90.6801, 40.1515, 92.4454, 42.7754, 94.0675, 45.5038, 95.5307, 48.3389, 96.8196, 51.2827, 97.9184, 54.3377, 98.8117, 57.5059, 99.4838, 60.7897, 99.9191, 64.1912, 100.102, 67.7126, 100.017, 71.3562, 99.6485, 75.1242, 98.9808, 79.0188, 97.9985, 83.0423, 96.6858, 87.1968, 95.0272, 91.4845, 93.0071, 95.9078, 91.8566, 98.1709, 90.6099, 100.469, 89.265, 102.802, 87.8201, 105.17, 86.273, 107.573, 84.622, 110.013, 82.8649, 112.488, 81, 115) - -[node name="Track2" parent="Tracks" instance=ExtResource("2_aska1")] -position = Vector2(28, 201) -rotation = -3.14159 -curve = SubResource("Curve2D_k7kih") - -[node name="TrackSwitch2" parent="Tracks" instance=ExtResource("4_wifjq")] -position = Vector2(298, 521) -rotation = -3.14159 - -[node name="LeftTrack" parent="Tracks/TrackSwitch2" index="0"] -curve = SubResource("Curve2D_ifa0p") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_yjbhi") - -[node name="RightTrack" parent="Tracks/TrackSwitch2" index="1"] -curve = SubResource("Curve2D_s6mpb") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_fdcvs") - -[node name="TailPoint" parent="Tracks/TrackSwitch2/RightTrack" index="3"] -position = Vector2(53, 80) -rotation = 1.74101 -progress = 138.028 - -[node name="TrackLine" parent="Tracks/TrackSwitch2/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.76964, 0.028625, 6.63878, 0.241, 10.0295, 0.475391, 13.9477, 0.826875, 18.311, 1.31917, 23.0368, 1.976, 25.5098, 2.37353, 28.0427, 2.82108, 30.6249, 3.32162, 33.2462, 3.87813, 35.8963, 4.49355, 38.5649, 5.17086, 41.2417, 5.91302, 43.9163, 6.723, 46.5786, 7.60376, 49.218, 8.55827, 51.8245, 9.58948, 54.3875, 10.7004, 56.8969, 11.8939, 59.3423, 13.173, 61.7135, 14.5408, 64, 16, 66.0714, 17.5969, 67.8154, 19.366, 70.3898, 23.3621, 71.8606, 27.8714, 72.3649, 32.777, 72.2976, 35.3419, 72.0401, 37.962, 71.6096, 40.6227, 71.0233, 43.3094, 70.2984, 46.0075, 69.452, 48.7024, 68.5012, 51.3794, 67.4632, 54.024, 66.3553, 56.6215, 65.1944, 59.1574, 63.9979, 61.617, 62.7828, 63.9856, 61.5662, 66.2488, 60.3655, 68.3918, 58.08, 72.259, 56.0634, 75.4703, 54.453, 77.9089, 53, 80) - -[node name="Pointer" parent="Tracks/TrackSwitch2/RightTrack" index="5"] -position = Vector2(64, 16) - -[node name="Track3" parent="Tracks" instance=ExtResource("2_aska1")] -position = Vector2(237, 330) -curve = SubResource("Curve2D_38uo1") - -[node name="Timer" type="Timer" parent="."] -wait_time = 0.1 -one_shot = true -autostart = true - -[node name="TrainStation" parent="." instance=ExtResource("4_kq6cn")] -position = Vector2(641, 489) - -[node name="Track" parent="." instance=ExtResource("2_aska1")] -position = Vector2(1376, 108) -curve = SubResource("Curve2D_56v8v") - -[node name="TrainRoute" parent="." node_paths=PackedStringArray("train") instance=ExtResource("6_sec3k")] -train = NodePath("../TrainEngine") - -[node name="TrainRouteStop" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("7_hql3n")] -station = NodePath("../../TrainStation") -delay = 40.0 - -[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] - -[editable path="Tracks/TrackSwitch"] -[editable path="Tracks/TrackSwitch/LeftTrack"] -[editable path="Tracks/TrackSwitch/RightTrack"] -[editable path="Tracks/TrackSwitch2"] -[editable path="Tracks/TrackSwitch2/LeftTrack"] -[editable path="Tracks/TrackSwitch2/RightTrack"] diff --git a/scenes/test_track_1.tscn b/scenes/test_track_1.tscn deleted file mode 100644 index 3337e67..0000000 --- a/scenes/test_track_1.tscn +++ /dev/null @@ -1,368 +0,0 @@ -[gd_scene load_steps=31 format=3 uid="uid://cadcn8wkc5qsa"] - -[ext_resource type="Script" path="res://scripts/TestTrack1.gd" id="1_4j3ii"] -[ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="1_xd5th"] -[ext_resource type="Script" path="res://scripts/TracksController.gd" id="2_1mxdt"] -[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="2_3o3ks"] -[ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="3_xcxqr"] -[ext_resource type="PackedScene" uid="uid://c5rp2hi42rfrv" path="res://prefabs/TrainEngine.tscn" id="5_i7i1o"] -[ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="6_gcl3h"] -[ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="7_ws50l"] - -[sub_resource type="Curve2D" id="Curve2D_5ytd8"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 544, 16, -45, -45, 45, 45, 664, 56, 2.08165e-12, 2.08165e-12, 10.6838, 22.4144, 704, 128) -} -point_count = 3 - -[sub_resource type="Curve2D" id="Curve2D_2hjnx"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(-43.9422, -0.960031, 43.9422, 0.960031, 2.08165e-12, 2.08165e-12, -0.41989, -34.0143, 0.41989, 34.0143, 64, 72, 0, 0, 0, 0, 64, 128) -} -point_count = 3 - -[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] -_surfaces = [{ -"2d": true, -"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), -"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), -"format": 33558545, -"index_count": 6, -"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), -"primitive": 3, -"vertex_count": 4, -"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) -}] - -[sub_resource type="MultiMesh" id="MultiMesh_vqlwl"] -resource_local_to_scene = true -instance_count = 16 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.992327, -0.123641, 0, 4.99044, 0.123641, 0.992327, 0, 0.290575, 0.962388, -0.271678, 0, 14.8556, 0.271678, 0.962388, 0, 1.86741, 0.90543, -0.424495, 0, 24.3492, 0.424495, 0.90543, 0, 4.96879, 0.818401, -0.574647, 0, 33.1875, 0.574647, 0.818401, 0, 9.61463, 0.708248, -0.705964, 0, 41.0933, 0.705964, 0.708248, 0, 15.7144, 0.586411, -0.810013, 0, 47.872, 0.810013, 0.586411, 0, 23.0491, 0.462831, -0.886447, 0, 53.4373, 0.886447, 0.462831, 0, 31.3455, 0.342998, -0.939336, 0, 57.7867, 0.939336, 0.342998, 0, 40.342, 0.229513, -0.973306, 0, 60.9541, 0.973306, 0.229513, 0, 49.821, 0.120222, -0.992747, 0, 62.9901, 0.992747, 0.120222, 0, 59.606, 0.0206377, -0.999787, 0, 63.9268, 0.999787, 0.0206377, 0, 69.5566, 0.00835572, -0.999965, 0, 64.0814, 0.999965, 0.00835572, 0, 79.5551, 0.00414735, -0.999991, 0, 64.1545, 0.999991, 0.00414735, 0, 89.5548, -0.000117465, -1, 0, 64.1852, 1, -0.000117465, 0, 99.5547, -0.00508728, -0.999987, 0, 64.1715, 0.999987, -0.00508728, 0, 109.555, -0.0112259, -0.999937, 0, 64.1074, 0.999937, -0.0112259, 0, 119.554) - -[sub_resource type="Curve2D" id="Curve2D_jdlbk"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 96, 0) -} -point_count = 2 - -[sub_resource type="MultiMesh" id="MultiMesh_6ypi5"] -resource_local_to_scene = true -instance_count = 10 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(1, 2.16838e-14, 0, 5, -2.16838e-14, 1, 0, 1.97323e-12, 1, 2.16839e-14, 0, 15, -2.16839e-14, 1, 0, 1.75639e-12, 1, 2.16839e-14, 0, 25, -2.16839e-14, 1, 0, 1.53955e-12, 1, 2.16838e-14, 0, 35, -2.16838e-14, 1, 0, 1.32272e-12, 1, 2.16838e-14, 0, 45, -2.16838e-14, 1, 0, 1.10588e-12, 1, 2.16839e-14, 0, 55, -2.16839e-14, 1, 0, 8.89038e-13, 1, 2.16838e-14, 0, 65, -2.16838e-14, 1, 0, 6.72199e-13, 1, 2.16838e-14, 0, 75, -2.16838e-14, 1, 0, 4.55361e-13, 1, 2.16839e-14, 0, 85, -2.16839e-14, 1, 0, 2.38522e-13, 1, 2.16839e-14, 0, 95, -2.16839e-14, 1, 0, 2.16839e-14) - -[sub_resource type="Curve2D" id="Curve2D_1ghy7"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -24.017, 16.005, 24.017, -16.005, 74, -12, -0.15749, -0.15749, 0.15749, 0.15749, 130, -28) -} -point_count = 3 - -[sub_resource type="MultiMesh" id="MultiMesh_mevmg"] -resource_local_to_scene = true -instance_count = 14 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.999648, -0.026521, 0, 4.99242, 0.026521, 0.999648, 0, 0.271338, 0.999906, 0.0136889, 0, 14.9902, -0.0136889, 0.999906, 0, 0.430786, 0.998032, 0.0627002, 0, 24.9858, -0.0627002, 0.998032, 0, 0.172665, 0.993346, 0.115172, 0, 34.9562, -0.115172, 0.993346, 0, -0.580401, 0.982975, 0.18374, 0, 44.8662, -0.18374, 0.982975, 0, -1.90406, 0.961156, 0.276007, 0, 54.6501, -0.276007, 0.961156, 0, -3.95497, 0.915015, 0.40342, 0, 64.1712, -0.40342, 0.915015, 0, -6.99119, 0.848704, 0.528868, 0, 73.1065, -0.528868, 0.848704, 0, -11.4457, 0.903296, 0.429017, 0, 81.7289, -0.429017, 0.903296, 0, -16.4998, 0.944942, 0.327237, 0, 90.871, -0.327237, 0.944942, 0, -20.5389, 0.96897, 0.247177, 0, 100.381, -0.247177, 0.96897, 0, -23.6171, 0.985394, 0.170292, 0, 110.115, -0.170292, 0.985394, 0, -25.8932, 0.995921, 0.0902245, 0, 120, -0.0902245, 0.995921, 0, -27.3868, 0.999953, -0.00967744, 0, 129.974, 0.00967744, 0.999953, 0, -28.0002) - -[sub_resource type="Curve2D" id="Curve2D_agot6"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -23.902, -16.064, 23.902, 16.064, 64, 16, 0, 0, 0, 0, 80, 65) -} -point_count = 3 - -[sub_resource type="MultiMesh" id="MultiMesh_u62bb"] -resource_local_to_scene = true -instance_count = 12 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.998161, -0.0606213, 0, 4.9967, 0.0606213, 0.998161, 0, 0.169378, 0.992717, -0.120468, 0, 14.9649, 0.120468, 0.992717, 0, 0.941638, 0.984055, -0.177863, 0, 24.8746, 0.177863, 0.984055, 0, 2.27142, 0.969439, -0.245334, 0, 34.6825, 0.245334, 0.969439, 0, 4.21167, 0.944761, -0.32776, 0, 44.323, 0.32776, 0.944761, 0, 6.85753, 0.90068, -0.434483, 0, 53.6727, 0.434483, 0.90068, 0, 10.3906, 0.817576, -0.575821, 0, 62.5102, 0.575821, 0.817576, 0, 15.0492, 0.63649, -0.771285, 0, 70.2234, 0.771285, 0.63649, 0, 21.3568, 0.414092, -0.910235, 0, 76.0271, 0.910235, 0.414092, 0, 29.4489, 0.193854, -0.98103, 0, 79.608, 0.98103, 0.193854, 0, 38.7571, 0.0270504, -0.999634, 0, 81.1038, 0.999634, 0.0270504, 0, 48.6292, -0.131902, -0.991263, 0, 80.9487, 0.991263, -0.131902, 0, 58.6157) - -[sub_resource type="Curve2D" id="Curve2D_gl7m7"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -24.017, 16.005, 24.017, -16.005, 64, -16, 1.83541, 39.2943, -1.83541, -39.2943, 115, -89) -} -point_count = 3 - -[sub_resource type="MultiMesh" id="MultiMesh_u1yjv"] -resource_local_to_scene = true -instance_count = 16 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.99808, 0.0619333, 0, 4.99647, -0.0619333, 0.99808, 0, -0.176236, 0.992584, 0.121559, 0, 14.9636, -0.121559, 0.992584, 0, -0.961502, 0.98391, 0.178663, 0, 24.872, -0.178663, 0.98391, 0, -2.30135, 0.969346, 0.2457, 0, 34.6786, -0.2457, 0.969346, 0, -4.24865, 0.94496, 0.327186, 0, 44.3185, -0.327186, 0.94496, 0, -6.89664, 0.901405, 0.432977, 0, 53.6711, -0.432977, 0.901405, 0, -10.4225, 0.837023, 0.547167, 0, 62.5187, -0.547167, 0.837023, 0, -15.0622, 0.827404, 0.561607, 0, 70.8643, -0.561607, 0.827404, 0, -20.5707, 0.805572, 0.592498, 0, 79.0941, -0.592498, 0.805572, 0, -26.2507, 0.76406, 0.645145, 0, 87.0616, -0.645145, 0.76406, 0, -32.2911, 0.697405, 0.716677, 0, 94.5499, -0.716677, 0.697405, 0, -38.9132, 0.599872, 0.800096, 0, 101.303, -0.800096, 0.599872, 0, -46.2796, 0.466576, 0.884481, 0, 106.978, -0.884481, 0.466576, 0, -54.5005, 0.307666, 0.951494, 0, 111.271, -0.951494, 0.307666, 0, -63.5181, 0.148572, 0.988902, 0, 113.941, -0.988902, 0.148572, 0, -73.1413, -0.00053732, 1, 0, 115.024, -1, -0.00053732, 0, -83.0706) - -[sub_resource type="Curve2D" id="Curve2D_xdxc8"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -23.902, -16.064, 23.902, 16.064, 64, 16, 0, 0, 0, 0, 128, 32) -} -point_count = 3 - -[sub_resource type="MultiMesh" id="MultiMesh_5mimc"] -resource_local_to_scene = true -instance_count = 13 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.998161, -0.0606213, 0, 4.9967, 0.0606213, 0.998161, 0, 0.169378, 0.992717, -0.120468, 0, 14.9649, 0.120468, 0.992717, 0, 0.941638, 0.984055, -0.177863, 0, 24.8746, 0.177863, 0.984055, 0, 2.27142, 0.969439, -0.245334, 0, 34.6825, 0.245334, 0.969439, 0, 4.21167, 0.944761, -0.32776, 0, 44.323, 0.32776, 0.944761, 0, 6.85753, 0.90068, -0.434483, 0, 53.6727, 0.434483, 0.90068, 0, 10.3906, 0.845464, -0.534033, 0, 62.5102, 0.534033, 0.845464, 0, 15.0492, 0.909689, -0.415289, 0, 71.1239, 0.415289, 0.909689, 0, 20.116, 0.949047, -0.315133, 0, 80.3316, 0.315133, 0.949047, 0, 24.0021, 0.971927, -0.235281, 0, 89.8854, 0.235281, 0.971927, 0, 26.9434, 0.985684, -0.168601, 0, 99.6439, 0.168601, 0.985684, 0, 29.1182, 0.993824, -0.110965, 0, 109.523, 0.110965, 0.993824, 0, 30.6578, 0.998585, -0.0531809, 0, 119.475, 0.0531809, 0.998585, 0, 31.6286) - -[sub_resource type="Curve2D" id="Curve2D_uq2bq"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0.198425, 2.08165e-12, 2.08165e-12, -99, 204, -27, 115, 27, -115, -230, 100, 0, 0, 0, 0, -61, -16, -36.2647, 2.46773, 36.2647, -2.46773, 251, -32, 0.891905, 2.08165e-12, -0.891905, -2.08165e-12, 291, -96) -} -point_count = 5 - -[sub_resource type="Curve2D" id="Curve2D_w101q"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(-0.788518, -3.15158, 0.788518, 3.15158, -34, -53, -60.1357, 12.4726, 60.1357, -12.4726, 118, -85, -10.3306, -1.68979, 10.3306, 1.68979, 302, -117) -} -point_count = 3 - -[sub_resource type="Curve2D" id="Curve2D_ncru3"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(-2.35969, -4.01147, 2.35969, 4.01147, 109, -214, -28.3162, -53.8008, 28.3162, 53.8008, 91, 104, 0, 0, 0, 0, 203, 146, -31.1479, -0.943874, 31.1479, 0.943874, 256, 148, -54.2378, 5.04538, 54.2378, -5.04538, 858, 143, 1.68369, 8.69908, -1.68369, -8.69908, 940, 106) -} -point_count = 6 - -[sub_resource type="Curve2D" id="Curve2D_38jn6"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 256, 2.08165e-12) -} -point_count = 2 - -[sub_resource type="Curve2D" id="Curve2D_sis42"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 248, 0, 0, 0, 0, 0, -56, 0) -} -point_count = 2 - -[sub_resource type="Curve2D" id="Curve2D_2f2g8"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 86.267, 0, -86.267, 96, -88, 0, 0, 0, 0, 0, -168, 0, 0, 0, 0, -160, -168) -} -point_count = 4 - -[sub_resource type="Curve2D" id="Curve2D_yi26a"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 256, 2.08165e-12) -} -point_count = 2 - -[sub_resource type="Curve2D" id="Curve2D_h7ahl"] -resource_local_to_scene = true -_data = { -"points": PackedVector2Array(0, 0, 0, 0, 232, 72, -25.1984, 30.2381, 25.1984, -30.2381, 248, -32, 0.787451, 0.629961, -0.787451, -0.629961, 328, -56) -} -point_count = 3 - -[node name="TestTrack1" type="Node2D"] -script = ExtResource("1_4j3ii") - -[node name="Tracks" type="Node2D" parent="."] -script = ExtResource("2_1mxdt") - -[node name="Track" parent="Tracks" instance=ExtResource("1_xd5th")] -curve = SubResource("Curve2D_5ytd8") - -[node name="TrackSwitch" parent="Tracks" instance=ExtResource("2_3o3ks")] -position = Vector2(704, 128) -rotation = 1.5708 - -[node name="LeftTrack" parent="Tracks/TrackSwitch" index="0"] -curve = SubResource("Curve2D_2hjnx") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_vqlwl") - -[node name="HeadPoint" parent="Tracks/TrackSwitch/LeftTrack" index="2"] -rotation = 0.0218441 - -[node name="TailPoint" parent="Tracks/TrackSwitch/LeftTrack" index="3"] -position = Vector2(64, 128) -rotation = 1.5708 -progress = 163.446 - -[node name="TrackLine" parent="Tracks/TrackSwitch/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4.04853, 0.194471, 7.95559, 0.59311, 11.7221, 1.18876, 15.349, 1.97427, 18.8372, 2.94247, 22.1877, 4.08623, 25.4013, 5.39837, 28.4791, 6.87175, 31.4219, 8.49921, 34.2306, 10.2736, 36.9063, 12.1878, 39.4498, 14.2345, 41.8621, 16.4068, 44.1441, 18.6973, 46.2967, 21.099, 48.3209, 23.6046, 50.2175, 26.2072, 51.9876, 28.8994, 53.6321, 31.6741, 55.1518, 34.5242, 56.5478, 37.4425, 57.8209, 40.4219, 58.972, 43.4552, 60.0022, 46.5352, 60.9124, 49.6549, 61.7034, 52.8069, 62.3762, 55.9843, 62.9318, 59.1798, 63.371, 62.3863, 63.6948, 65.5966, 63.9042, 68.8035, 64, 72, 64.0369, 75.1533, 64.0692, 78.2343, 64.097, 81.2412, 64.1206, 84.1721, 64.1401, 87.0252, 64.1559, 89.7988, 64.1682, 92.4909, 64.1771, 95.0998, 64.1861, 100.061, 64.1845, 104.666, 64.1744, 108.903, 64.1575, 112.755, 64.1356, 116.209, 64.1107, 119.25, 64.0591, 124.033, 64, 128) - -[node name="Pointer" parent="Tracks/TrackSwitch/LeftTrack" index="5"] -position = Vector2(54.2924, 32.8752) -rotation = 1.07745 - -[node name="RightTrack" parent="Tracks/TrackSwitch" index="1"] -curve = SubResource("Curve2D_jdlbk") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_6ypi5") - -[node name="HeadPoint" parent="Tracks/TrackSwitch/RightTrack" index="2"] -rotation = -2.16839e-14 - -[node name="TailPoint" parent="Tracks/TrackSwitch/RightTrack" index="3"] -position = Vector2(96, 0) -rotation = -2.16839e-14 -progress = 96.0 - -[node name="TrackLine" parent="Tracks/TrackSwitch/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4.125, 1.9922e-12, 8.85938, 1.88954e-12, 11.7715, 1.8264e-12, 15, 1.75639e-12, 18.5098, 1.68029e-12, 22.2656, 1.59885e-12, 26.2324, 1.51283e-12, 30.375, 1.423e-12, 34.6582, 1.33013e-12, 39.0469, 1.23496e-12, 43.5059, 1.13828e-12, 48, 1.04082e-12, 52.4941, 9.43375e-13, 56.9531, 8.46687e-13, 61.3418, 7.51523e-13, 65.625, 6.58647e-13, 69.7676, 5.6882e-13, 73.7344, 4.82805e-13, 77.4902, 4.01363e-13, 81, 3.25258e-13, 84.2285, 2.55251e-13, 87.1406, 1.92105e-13, 91.875, 8.94459e-14, 96, 0) - -[node name="Pointer" parent="Tracks/TrackSwitch/RightTrack" index="5"] -position = Vector2(66.7824, 6.3355e-13) -rotation = -2.16839e-14 - -[node name="TrackSwitch2" parent="Tracks" instance=ExtResource("2_3o3ks")] -position = Vector2(870, 524) - -[node name="LeftTrack" parent="Tracks/TrackSwitch2" index="0"] -curve = SubResource("Curve2D_1ghy7") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_mevmg") - -[node name="HeadPoint" parent="Tracks/TrackSwitch2/LeftTrack" index="2"] -rotation = -0.160763 - -[node name="TailPoint" parent="Tracks/TrackSwitch2/LeftTrack" index="3"] -position = Vector2(130, -28) -rotation = 0.78541 -progress = 135.026 - -[node name="TrackLine" parent="Tracks/TrackSwitch2/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 2.19462, 0.14083, 4.771, 0.2641, 8.18511, 0.375703, 12.3257, 0.44046, 17.0815, 0.423193, 19.6553, 0.372808, 22.3412, 0.288724, 25.1253, 0.166546, 27.9936, 0.00187469, 30.9323, -0.209686, 33.9275, -0.472533, 36.9652, -0.791065, 40.0316, -1.16968, 43.1127, -1.61277, 46.1946, -2.12474, 49.2635, -2.70998, 52.3053, -3.37289, 55.3063, -4.11787, 58.2525, -4.94932, 61.1299, -5.87162, 63.9248, -6.88919, 66.6231, -8.00641, 69.2111, -9.22769, 71.6747, -10.5574, 74, -12, 76.2733, -13.4545, 78.5851, -14.819, 80.9281, -16.0962, 83.2953, -17.2891, 85.6793, -18.4006, 88.0729, -19.4333, 90.4689, -20.3903, 92.86, -21.2743, 97.5989, -22.8347, 102.232, -24.1375, 106.7, -25.2053, 110.947, -26.0609, 114.915, -26.7272, 118.545, -27.2268, 121.779, -27.5825, 124.561, -27.8171, 128.534, -28.0142, 130, -28) - -[node name="Pointer" parent="Tracks/TrackSwitch2/LeftTrack" index="5"] -position = Vector2(65.8023, -7.65092) -rotation = -0.401816 - -[node name="RightTrack" parent="Tracks/TrackSwitch2" index="1"] -curve = SubResource("Curve2D_agot6") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_u62bb") - -[node name="TailPoint" parent="Tracks/TrackSwitch2/RightTrack" index="3"] -position = Vector2(80, 65) -rotation = 1.25518 -progress = 121.458 - -[node name="TrackLine" parent="Tracks/TrackSwitch2/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.76964, 0.028625, 6.63878, 0.241, 10.0295, 0.475391, 13.9477, 0.826875, 18.311, 1.31917, 23.0368, 1.976, 25.5098, 2.37353, 28.0427, 2.82108, 30.6249, 3.32162, 33.2462, 3.87813, 35.8963, 4.49355, 38.5649, 5.17086, 41.2417, 5.91302, 43.9163, 6.723, 46.5786, 7.60376, 49.218, 8.55827, 51.8245, 9.58948, 54.3875, 10.7004, 56.8969, 11.8939, 59.3423, 13.173, 61.7135, 14.5408, 64, 16, 66.1488, 17.5539, 68.1186, 19.1976, 71.55, 22.7176, 74.3523, 26.4871, 76.5837, 30.4333, 78.3023, 34.4829, 79.5663, 38.5633, 80.4339, 42.6013, 80.9632, 46.524, 81.2125, 50.2585, 81.2398, 53.7317, 81.1033, 56.8708, 80.8612, 59.6027, 80.2929, 63.5534, 80, 65) - -[node name="Pointer" parent="Tracks/TrackSwitch2/RightTrack" index="5"] -position = Vector2(64, 16) - -[node name="TrackSwitch3" parent="Tracks" instance=ExtResource("2_3o3ks")] -position = Vector2(151, 141) -rotation = 1.5708 - -[node name="LeftTrack" parent="Tracks/TrackSwitch3" index="0"] -curve = SubResource("Curve2D_gl7m7") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch3/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_u1yjv") - -[node name="TailPoint" parent="Tracks/TrackSwitch3/LeftTrack" index="3"] -position = Vector2(115, -89) -rotation = -1.61747 -progress = 160.931 - -[node name="TrackLine" parent="Tracks/TrackSwitch3/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.76493, -0.031045, 6.62261, -0.249297, 10.0063, -0.487274, 13.9174, -0.842432, 18.2738, -1.33823, 22.9936, -1.99813, 25.4642, -2.39694, 27.9949, -2.84558, 30.5755, -3.34697, 33.1957, -3.90405, 35.8452, -4.51975, 38.514, -5.197, 41.1916, -5.93874, 43.8678, -6.74789, 46.5325, -7.62739, 49.1753, -8.58017, 51.7861, -9.60917, 54.3545, -10.7173, 56.8703, -11.9075, 59.3234, -13.1828, 61.7033, -14.5459, 64, -16, 66.2646, -17.506, 68.5508, -19.0257, 70.8522, -20.5625, 73.1622, -22.1202, 75.4744, -23.7024, 77.7822, -25.3128, 80.0793, -26.955, 82.359, -28.6326, 84.615, -30.3493, 86.8406, -32.1087, 89.0294, -33.9145, 91.175, -35.7703, 93.2708, -37.6798, 95.3103, -39.6465, 97.2871, -41.6742, 99.1947, -43.7665, 101.026, -45.927, 102.776, -48.1594, 104.437, -50.4673, 106.002, -52.8544, 107.466, -55.3243, 108.822, -57.8806, 110.063, -60.527, 111.183, -63.2672, 112.175, -66.1047, 113.033, -69.0432, 113.75, -72.0865, 114.321, -75.238, 114.737, -78.5014, 114.994, -81.8805, 115.083, -85.3788, 115, -89) - -[node name="Pointer" parent="Tracks/TrackSwitch3/LeftTrack" index="5"] -position = Vector2(64, -16) - -[node name="RightTrack" parent="Tracks/TrackSwitch3" index="1"] -curve = SubResource("Curve2D_xdxc8") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch3/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_5mimc") - -[node name="TailPoint" parent="Tracks/TrackSwitch3/RightTrack" index="3"] -position = Vector2(128, 32) - -[node name="TrackLine" parent="Tracks/TrackSwitch3/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.76964, 0.028625, 6.63878, 0.241, 10.0295, 0.475391, 13.9477, 0.826875, 18.311, 1.31917, 23.0368, 1.976, 25.5098, 2.37353, 28.0427, 2.82108, 30.6249, 3.32162, 33.2462, 3.87813, 35.8963, 4.49355, 38.5649, 5.17086, 41.2417, 5.91302, 43.9163, 6.723, 46.5786, 7.60376, 49.218, 8.55827, 51.8245, 9.58948, 54.3875, 10.7004, 56.8969, 11.8939, 59.3423, 13.173, 61.7135, 14.5408, 64, 16, 66.2865, 17.4592, 68.6577, 18.827, 71.1031, 20.1061, 73.6125, 21.2996, 76.1756, 22.4105, 78.782, 23.4417, 81.4214, 24.3962, 84.0837, 25.277, 86.7583, 26.087, 89.4351, 26.8291, 92.1037, 27.5065, 94.7538, 28.1219, 97.3751, 28.6784, 99.9574, 29.1789, 102.49, 29.6265, 104.963, 30.024, 109.689, 30.6808, 114.052, 31.1731, 117.97, 31.5246, 121.361, 31.759, 126.23, 31.9714, 128, 32) - -[node name="Pointer" parent="Tracks/TrackSwitch3/RightTrack" index="5"] -position = Vector2(64, 16) - -[node name="Track2" parent="Tracks" instance=ExtResource("1_xd5th")] -position = Vector2(413, 320) -curve = SubResource("Curve2D_uq2bq") - -[node name="Track3" parent="Tracks" instance=ExtResource("1_xd5th")] -position = Vector2(274, 309) -curve = SubResource("Curve2D_w101q") - -[node name="Track4" parent="Tracks" instance=ExtResource("1_xd5th")] -position = Vector2(10, 483) -curve = SubResource("Curve2D_ncru3") - -[node name="Track5" parent="Tracks" instance=ExtResource("1_xd5th")] -position = Vector2(614, 524) -curve = SubResource("Curve2D_38jn6") - -[node name="Track6" parent="Tracks" instance=ExtResource("1_xd5th")] -position = Vector2(1056, 496) -curve = SubResource("Curve2D_sis42") - -[node name="Track7" parent="Tracks" instance=ExtResource("1_xd5th")] -position = Vector2(1304, 496) -curve = SubResource("Curve2D_2f2g8") - -[node name="Track8" parent="Tracks" instance=ExtResource("1_xd5th")] -position = Vector2(888, 328) -curve = SubResource("Curve2D_yi26a") - -[node name="TrainStation" parent="." instance=ExtResource("3_xcxqr")] -position = Vector2(314, 524) - -[node name="TrainEngine1" parent="." instance=ExtResource("5_i7i1o")] -color = Color(1, 0, 0, 1) - -[node name="TrainEngine2" parent="." instance=ExtResource("5_i7i1o")] -color = Color(0, 0, 1, 1) - -[node name="TrainStation2" parent="." instance=ExtResource("3_xcxqr")] -position = Vector2(248, 16) - -[node name="TrainRoute2" parent="." node_paths=PackedStringArray("train") instance=ExtResource("6_gcl3h")] -train = NodePath("../TrainEngine2") - -[node name="TrainRouteStop" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("7_ws50l")] -station = NodePath("../../TrainStation") - -[node name="TrainRouteStop2" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("7_ws50l")] -station = NodePath("../../TrainStation2") - -[node name="TrainRoute" parent="." node_paths=PackedStringArray("train") instance=ExtResource("6_gcl3h")] -train = NodePath("../TrainEngine1") - -[node name="TrainRouteStop" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("7_ws50l")] -station = NodePath("../../TrainStation") - -[node name="TrainRouteStop2" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("7_ws50l")] -station = NodePath("../../TrainStation2") - -[node name="Track" parent="." instance=ExtResource("1_xd5th")] -position = Vector2(-80, 72) -curve = SubResource("Curve2D_h7ahl") - -[editable path="Tracks/TrackSwitch"] -[editable path="Tracks/TrackSwitch/LeftTrack"] -[editable path="Tracks/TrackSwitch/RightTrack"] -[editable path="Tracks/TrackSwitch2"] -[editable path="Tracks/TrackSwitch2/LeftTrack"] -[editable path="Tracks/TrackSwitch2/RightTrack"] -[editable path="Tracks/TrackSwitch3"] -[editable path="Tracks/TrackSwitch3/LeftTrack"] -[editable path="Tracks/TrackSwitch3/RightTrack"] diff --git a/scripts/Levels/Level2.gd b/scripts/Levels/Level2.gd deleted file mode 100644 index 3ffa1c0..0000000 --- a/scripts/Levels/Level2.gd +++ /dev/null @@ -1,28 +0,0 @@ -extends Node - -@export var car_count = 2 - -@onready var _train_vehicle_reference = load("res://prefabs/TrainVehicle.tscn") -@onready var _engine1: TrainEngine = $TrainEngine -@onready var _engine2: TrainEngine = $TrainEngine2 -@onready var _tracks_controller: TracksController = $Tracks - -func _ready(): - self._engine1.connect_tracks_controller(self._tracks_controller) - self._engine2.connect_tracks_controller(self._tracks_controller) - self._engine1.add_to_track($TrainStation2/Track, 500) - self._engine2.add_to_track($TrainStation/Track, 500) - - var last_car = self._engine1 - for index in range(car_count): - var car = self._train_vehicle_reference.instantiate() - add_child(car) - last_car.set_follower_car(car) - last_car = car - - last_car = self._engine2 - for index in range(car_count): - var car = self._train_vehicle_reference.instantiate() - add_child(car) - last_car.set_follower_car(car) - last_car = car diff --git a/scripts/TestTrack1.gd b/scripts/TestTrack1.gd deleted file mode 100644 index 962b8d4..0000000 --- a/scripts/TestTrack1.gd +++ /dev/null @@ -1,28 +0,0 @@ -extends Node - -@export var car_count = 2 - -@onready var _train_vehicle_reference = load("res://prefabs/TrainVehicle.tscn") -@onready var _engine1: TrainEngine = $TrainEngine1 -@onready var _engine2: TrainEngine = $TrainEngine2 -@onready var _tracks_controller: TracksController = $Tracks - -func _ready(): - self._engine1.connect_tracks_controller(self._tracks_controller) - self._engine2.connect_tracks_controller(self._tracks_controller) - self._engine1.add_to_track($Tracks/Track8, 500) - self._engine2.add_to_track($Tracks/Track2, 500) - - var last_car = self._engine1 - for index in range(car_count): - var car = self._train_vehicle_reference.instantiate() - add_child(car) - last_car.set_follower_car(car) - last_car = car - - last_car = self._engine2 - for index in range(car_count): - var car = self._train_vehicle_reference.instantiate() - add_child(car) - last_car.set_follower_car(car) - last_car = car diff --git a/scripts/track1.gd b/scripts/track1.gd deleted file mode 100644 index d25503c..0000000 --- a/scripts/track1.gd +++ /dev/null @@ -1,20 +0,0 @@ -extends Node - -@export var car_count = 25 - -@onready var train_vehicle_reference = load("res://prefabs/TrainVehicle.tscn") -@onready var engine = $TrainEngine - -func _setup_train(): - #engine.connect("train_info", $TestWorld, "update_train_info") - engine.add_to_track($Tracks/Track, 500) - - var last_car = engine - for index in range(car_count): - var car = train_vehicle_reference.instantiate() - add_child(car) - last_car.set_follower_car(car) - last_car = car - -func _on_Timer_timeout(): - _setup_train() From e0e8bcb1ee31d8fa7813900a4a6e4359f349d561 Mon Sep 17 00:00:00 2001 From: mineiwik <29404520+mineiwik@users.noreply.github.com> Date: Mon, 2 Oct 2023 18:22:20 +0200 Subject: [PATCH 5/7] Improve levels 1 & 2 --- .../TrackSwitch_Left45Curve_Right90Curve.tscn | 90 ++++ .../TrackSwitch_Left90Curve_Left45Curve.tscn | 91 ++++ .../TrackSwitch_Left90Curve_Right45Curve.tscn | 90 ++++ ...TrackSwitch_Right45Curve_Right90Curve.tscn | 91 ++++ prefabs/Tracks/Track_45_Curve_Mirrored.tscn | 106 +++++ scenes/Level1.tscn | 386 +++++++---------- scenes/Level2.tscn | 398 ++++++++---------- scenes/MainMenu.tscn | 2 +- 8 files changed, 804 insertions(+), 450 deletions(-) create mode 100644 prefabs/TrackSwitches/TrackSwitch_Left45Curve_Right90Curve.tscn create mode 100644 prefabs/TrackSwitches/TrackSwitch_Left90Curve_Left45Curve.tscn create mode 100644 prefabs/TrackSwitches/TrackSwitch_Left90Curve_Right45Curve.tscn create mode 100644 prefabs/TrackSwitches/TrackSwitch_Right45Curve_Right90Curve.tscn create mode 100644 prefabs/Tracks/Track_45_Curve_Mirrored.tscn diff --git a/prefabs/TrackSwitches/TrackSwitch_Left45Curve_Right90Curve.tscn b/prefabs/TrackSwitches/TrackSwitch_Left45Curve_Right90Curve.tscn new file mode 100644 index 0000000..23af7fa --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_Left45Curve_Right90Curve.tscn @@ -0,0 +1,90 @@ +[gd_scene load_steps=7 format=3 uid="uid://u7ha51gesbwl"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_jwpm4"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9099, 15.5564, 15.9099, -15.5564, 56, -16, 0, 0, 0, 0, 80, -40, 0, 0, 0, 0, 88, -48) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999839, 0.0179174, 0, 5, -0.0179174, 0.999839, 0, 7.80619e-13, 0.992192, 0.124718, 0, 14.9817, -0.124718, 0.992192, 0, -0.483434, 0.977357, 0.211597, 0, 24.87, -0.211597, 0.977357, 0, -1.94846, 0.945591, 0.325357, 0, 34.5727, -0.325357, 0.945591, 0, -4.34475, 0.884774, 0.466021, 0, 43.8991, -0.466021, 0.884774, 0, -7.92319, 0.758261, 0.651951, 0, 52.485, -0.651951, 0.758261, 0, -13.0107, 0.712022, 0.702157, 0, 59.8432, -0.702157, 0.712022, 0, -19.7698, 0.707563, 0.70665, 0, 66.9529, -0.70665, 0.707563, 0, -26.802, 0.7011, 0.713063, 0, 74.0144, -0.713063, 0.7011, 0, -33.8826, 0.707107, 0.707107, 0, 81.0192, -0.707107, 0.707107, 0, -41.0192) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9491, -15.9704, 15.9491, 15.9704, 56, 16, 0, 0, 0, 0, 72, 64, 0, 0, 0, 0, 72, 72) +} +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 12 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999912, -0.0132958, 0, 5, 0.0132958, 0.999912, 0, 7.80619e-13, 0.993157, -0.116789, 0, 14.9862, 0.116789, 0.993157, 0, 0.410031, 0.978234, -0.207504, 0, 24.8843, 0.207504, 0.978234, 0, 1.80522, 0.945319, -0.326147, 0, 34.5931, 0.326147, 0.945319, 0, 4.1747, 0.88189, -0.471456, 0, 43.911, 0.471456, 0.88189, 0, 7.77285, 0.749671, -0.661811, 0, 52.4581, 0.661811, 0.749671, 0, 12.9232, 0.5492, -0.835691, 0, 59.426, 0.835691, 0.5492, 0, 20.0448, 0.385896, -0.922542, 0, 64.479, 0.922542, 0.385896, 0, 28.6489, 0.255447, -0.966823, 0, 68.0035, 0.966823, 0.255447, 0, 37.996, 0.158615, -0.987341, 0, 70.2963, 0.987341, 0.158615, 0, 47.7241, 0.0651445, -0.997876, 0, 71.6416, 0.997876, 0.0651445, 0, 57.629, -4.37114e-08, -1, 0, 72, 1, -4.37114e-08, 0, 67.6175) + +[node name="TrackSwitch" instance=ExtResource("1_jwpm4")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(88, -48) +rotation = -0.785398 +progress = 104.872 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40995, -0.0494445, 13.2627, -0.312381, 15.9283, -0.577629, 18.9925, -0.960715, 22.3846, -1.48313, 26.0338, -2.16635, 29.8694, -3.03188, 33.8208, -4.10119, 37.8173, -5.39578, 41.788, -6.93714, 45.6624, -8.74676, 49.3696, -10.8461, 52.8391, -13.2567, 56, -16, 58.8914, -18.8331, 61.5991, -21.4976, 64.1228, -23.9915, 66.462, -26.3129, 68.6163, -28.4597, 70.5854, -30.4301, 73.9662, -33.8336, 76.6012, -36.508, 78.4873, -38.4376, 80, -40, 81.25, -41.25, 84, -44, 86.75, -46.75, 88, -48) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(50.4062, -11.515) +progress = 52.4362 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(72, 72) +rotation = 1.5708 +progress = 119.383 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40834, 0.0324641, 13.2572, 0.254163, 15.9204, 0.494243, 18.9822, 0.851555, 22.3719, 1.3494, 26.0191, 2.0111, 29.8532, 2.85995, 33.8036, 3.91926, 37.7999, 5.21234, 41.7715, 6.76249, 45.6478, 8.59302, 49.3584, 10.7272, 52.8326, 13.1885, 56, 16, 58.808, 19.1709, 61.2666, 22.6478, 63.3991, 26.3601, 65.2285, 30.2375, 66.7782, 34.2095, 68.0714, 38.2057, 69.1312, 42.1557, 69.9809, 45.9889, 70.6437, 49.635, 71.1428, 53.0234, 71.5015, 56.0839, 71.7428, 58.7458, 71.9667, 62.5925, 72, 64, 72, 68, 72, 72) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(50.4243, 11.4282) +rotation = 0.597223 +progress = 52.4745 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Left45Curve.tscn b/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Left45Curve.tscn new file mode 100644 index 0000000..dd25f4a --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Left45Curve.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=7 format=3 uid="uid://dhhfykmc5w8mp"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_q7qx6"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9099, 15.5564, 15.9099, -15.5564, 56, -16, 0, 0, 0, 0, 72, -56, 0, 0, 0, 0, 72, -72) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 12 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999839, 0.0179174, 0, 5, -0.0179174, 0.999839, 0, 7.80619e-13, 0.992192, 0.124718, 0, 14.9817, -0.124718, 0.992192, 0, -0.483434, 0.977357, 0.211597, 0, 24.87, -0.211597, 0.977357, 0, -1.94846, 0.945591, 0.325357, 0, 34.5727, -0.325357, 0.945591, 0, -4.34475, 0.884774, 0.466021, 0, 43.8991, -0.466021, 0.884774, 0, -7.92319, 0.755939, 0.654642, 0, 52.485, -0.654642, 0.755939, 0, -13.0107, 0.581746, 0.813371, 0, 59.5782, -0.813371, 0.581746, 0, -20.0169, 0.415341, 0.909666, 0, 64.9887, -0.909666, 0.415341, 0, -28.4043, 0.269735, 0.962935, 0, 68.7616, -0.962935, 0.269735, 0, -37.6514, 0.12907, 0.991635, 0, 71.1167, -0.991635, 0.12907, 0, -47.3608, -4.37114e-08, 1, 0, 72, -1, -4.37114e-08, 0, -57.3103, -4.37114e-08, 1, 0, 72, -1, -4.37114e-08, 0, -67.3103) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9491, 15.8426, 15.9491, -15.8426, 56, -16, 0, 0, 0, 0, 80, -40, 0, 0, 0, 0, 104, -64) +} +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 13 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999891, 0.0147324, 0, 5, -0.0147324, 0.999891, 0, 7.80619e-13, 0.992858, 0.119299, 0, 14.9849, -0.119299, 0.992858, 0, -0.432923, 0.977952, 0.208829, 0, 24.8799, -0.208829, 0.977952, 0, -1.85027, 0.945385, 0.325956, 0, 34.5866, -0.325956, 0.945385, 0, -4.22887, 0.882792, 0.469763, 0, 43.907, -0.469763, 0.882792, 0, -7.82133, 0.754133, 0.656721, 0, 52.4665, -0.656721, 0.754133, 0, -12.9518, 0.708592, 0.705619, 0, 59.7804, -0.705619, 0.708592, 0, -19.7587, 0.707257, 0.706956, 0, 66.8633, -0.706956, 0.707257, 0, -26.8179, 0.70532, 0.708889, 0, 73.9317, -0.708889, 0.70532, 0, -33.8917, 0.707107, 0.707106, 0, 80.9827, -0.707106, 0.707107, 0, -40.9827, 0.707107, 0.707107, 0, 88.0538, -0.707107, 0.707107, 0, -48.0538, 0.707107, 0.707106, 0, 95.1248, -0.707106, 0.707107, 0, -55.1249, 0.707108, 0.707106, 0, 102.196, -0.707106, 0.707108, 0, -62.1959) + +[node name="TrackSwitch" instance=ExtResource("1_q7qx6")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(72, -72) +rotation = -1.5708 +progress = 119.69 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40995, -0.0494445, 13.2627, -0.312381, 15.9283, -0.577629, 18.9925, -0.960715, 22.3846, -1.48313, 26.0338, -2.16635, 29.8694, -3.03188, 33.8208, -4.10119, 37.8173, -5.39578, 41.788, -6.93714, 45.6624, -8.74676, 49.3696, -10.8461, 52.8391, -13.2567, 56, -16, 58.8016, -19.0128, 61.2554, -22.1851, 63.3845, -25.4681, 65.212, -28.8129, 66.7609, -32.1706, 68.0542, -35.4926, 69.1149, -38.7298, 69.9662, -41.8336, 70.6311, -44.7552, 71.1325, -47.4455, 71.7373, -51.9376, 72, -56, 72, -58.5, 72, -61.0625, 72, -64, 72, -66.9375, 72, -69.5, 72, -72) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(70.069, -42.2486) +rotation = -1.33188 +progress = 89.7673 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(104, -64) +rotation = -0.785398 +progress = 127.551 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40834, -0.0377059, 13.2572, -0.272134, 15.9204, -0.519984, 18.9822, -0.885252, 22.3719, -1.39068, 26.0191, -2.05903, 29.8532, -2.91302, 33.8036, -3.97542, 37.7999, -5.26897, 41.7715, -6.8164, 45.6478, -8.64048, 49.3584, -10.7639, 52.8326, -13.2095, 56, -16, 58.8979, -18.8803, 61.6104, -21.5798, 64.1373, -24.0978, 66.4785, -26.4336, 68.6337, -28.5865, 70.6026, -30.5558, 73.9809, -33.941, 76.6116, -36.5835, 78.4928, -38.4779, 80, -40, 81.0312, -41.0312, 83.75, -43.75, 85.5664, -45.5664, 87.5938, -47.5938, 89.7617, -49.7617, 92, -52, 94.2383, -54.2383, 96.4062, -56.4062, 98.4336, -58.4336, 100.25, -60.25, 102.969, -62.9688, 104, -64) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(81.3677, -41.3677) +rotation = -0.785398 +progress = 95.6635 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Right45Curve.tscn b/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Right45Curve.tscn new file mode 100644 index 0000000..fc2b7cb --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_Left90Curve_Right45Curve.tscn @@ -0,0 +1,90 @@ +[gd_scene load_steps=7 format=3 uid="uid://bpg2thfikkk1x"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_0lwiv"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9099, 15.5564, 15.9099, -15.5564, 56, -16, 0, 0, 0, 0, 72, -56, 0, 0, 0, 0, 72, -72) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 12 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999839, 0.0179174, 0, 5, -0.0179174, 0.999839, 0, 7.80619e-13, 0.992192, 0.124718, 0, 14.9817, -0.124718, 0.992192, 0, -0.483434, 0.977357, 0.211597, 0, 24.87, -0.211597, 0.977357, 0, -1.94846, 0.945591, 0.325357, 0, 34.5727, -0.325357, 0.945591, 0, -4.34475, 0.884774, 0.466021, 0, 43.8991, -0.466021, 0.884774, 0, -7.92319, 0.755939, 0.654642, 0, 52.485, -0.654642, 0.755939, 0, -13.0107, 0.581746, 0.813371, 0, 59.5782, -0.813371, 0.581746, 0, -20.0169, 0.415341, 0.909666, 0, 64.9887, -0.909666, 0.415341, 0, -28.4043, 0.269735, 0.962935, 0, 68.7616, -0.962935, 0.269735, 0, -37.6514, 0.12907, 0.991635, 0, 71.1167, -0.991635, 0.12907, 0, -47.3608, -4.37114e-08, 1, 0, 72, -1, -4.37114e-08, 0, -57.3103, -4.37114e-08, 1, 0, 72, -1, -4.37114e-08, 0, -67.3103) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9491, -15.9704, 15.9491, 15.9704, 56, 16, 0, 0, 0, 0, 80, 40, 0, 0, 0, 0, 88, 48) +} +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 10 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999912, -0.0132958, 0, 5, 0.0132958, 0.999912, 0, 7.80619e-13, 0.993157, -0.116789, 0, 14.9862, 0.116789, 0.993157, 0, 0.410031, 0.978234, -0.207504, 0, 24.8843, 0.207504, 0.978234, 0, 1.80522, 0.945319, -0.326147, 0, 34.5931, 0.326147, 0.945319, 0, 4.1747, 0.88189, -0.471456, 0, 43.911, 0.471456, 0.88189, 0, 7.77285, 0.752086, -0.659065, 0, 52.4581, 0.659065, 0.752086, 0, 12.9232, 0.706809, -0.707405, 0, 59.7496, 0.707405, 0.706809, 0, 19.7539, 0.707076, -0.707138, 0, 66.8183, 0.707138, 0.707076, 0, 26.8274, 0.707461, -0.706752, 0, 73.8899, 0.706752, 0.707461, 0, 33.8979, 0.707107, -0.707107, 0, 80.965, 0.707107, 0.707107, 0, 40.965) + +[node name="TrackSwitch" instance=ExtResource("1_0lwiv")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(72, -72) +rotation = -1.5708 +progress = 119.69 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40995, -0.0494445, 13.2627, -0.312381, 15.9283, -0.577629, 18.9925, -0.960715, 22.3846, -1.48313, 26.0338, -2.16635, 29.8694, -3.03188, 33.8208, -4.10119, 37.8173, -5.39578, 41.788, -6.93714, 45.6624, -8.74676, 49.3696, -10.8461, 52.8391, -13.2567, 56, -16, 58.8016, -19.0128, 61.2554, -22.1851, 63.3845, -25.4681, 65.212, -28.8129, 66.7609, -32.1706, 68.0542, -35.4926, 69.1149, -38.7298, 69.9662, -41.8336, 70.6311, -44.7552, 71.1325, -47.4455, 71.7373, -51.9376, 72, -56, 72, -58.5, 72, -61.0625, 72, -64, 72, -66.9375, 72, -69.5, 72, -72) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(50.4062, -11.515) +progress = 52.4362 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(88, 48) +rotation = 0.785398 +progress = 104.949 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40834, 0.0324641, 13.2572, 0.254163, 15.9204, 0.494243, 18.9822, 0.851555, 22.3719, 1.3494, 26.0191, 2.0111, 29.8532, 2.85995, 33.8036, 3.91926, 37.7999, 5.21234, 41.7715, 6.76249, 45.6478, 8.59302, 49.3584, 10.7272, 52.8326, 13.1885, 56, 16, 58.8979, 18.9014, 61.6104, 21.6165, 64.1373, 24.1453, 66.4785, 26.4875, 68.6337, 28.6431, 70.6026, 30.612, 73.9809, 33.9889, 76.6116, 36.6172, 78.4928, 38.4958, 80, 40, 81.25, 41.25, 84, 44, 86.75, 46.75, 88, 48) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(50.4243, 11.4282) +rotation = 0.597223 +progress = 52.4745 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/TrackSwitches/TrackSwitch_Right45Curve_Right90Curve.tscn b/prefabs/TrackSwitches/TrackSwitch_Right45Curve_Right90Curve.tscn new file mode 100644 index 0000000..218b2cf --- /dev/null +++ b/prefabs/TrackSwitches/TrackSwitch_Right45Curve_Right90Curve.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=7 format=3 uid="uid://dvt4wgess2jyj"] + +[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="1_bylgj"] + +[sub_resource type="Curve2D" id="Curve2D_81xyj"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -16.0349, -15.9716, 16.0349, 15.9716, 56, 16, 0, 0, 0, 0, 80, 40, 0, 0, 0, 0, 104, 64) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_55w7u"] +resource_local_to_scene = true +instance_count = 13 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999911, -0.013338, 0, 5, 0.013338, 0.999911, 0, 7.80619e-13, 0.99311, -0.117186, 0, 14.9862, 0.117186, 0.99311, 0, 0.411204, 0.978145, -0.207924, 0, 24.8837, 0.207924, 0.978145, 0, 1.81027, 0.945185, -0.326536, 0, 34.591, 0.326536, 0.945185, 0, 4.18571, 0.88196, -0.471324, 0, 43.9078, 0.471324, 0.88196, 0, 7.78681, 0.753186, -0.657808, 0, 52.4575, 0.657808, 0.753186, 0, 12.9333, 0.707989, -0.706223, 0, 59.7627, 0.706223, 0.707989, 0, 19.7499, 0.707201, -0.707013, 0, 66.8408, 0.707013, 0.707201, 0, 26.8139, 0.706054, -0.708158, 0, 73.9103, 0.708158, 0.706054, 0, 33.8865, 0.707107, -0.707107, 0, 80.9695, 0.707107, 0.707107, 0, 40.9695, 0.707106, -0.707108, 0, 88.0405, 0.707108, 0.707106, 0, 48.0405, 0.707107, -0.707106, 0, 95.1116, 0.707106, 0.707107, 0, 55.1116, 0.707107, -0.707107, 0, 102.183, 0.707107, 0.707107, 0, 62.1827) + +[sub_resource type="Curve2D" id="Curve2D_jf8fx"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9956, -15.9894, 15.9956, 15.9894, 56, 16, 0, 0, 0, 0, 72, 56, 0, 0, 0, 0, 72, 64) +} +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_n0m24"] +resource_local_to_scene = true +instance_count = 11 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999914, -0.0131121, 0, 5, 0.0131121, 0.999914, 0, 7.80619e-13, 0.993174, -0.116643, 0, 14.9864, 0.116643, 0.993174, 0, 0.407375, 0.978226, -0.207541, 0, 24.8846, 0.207541, 0.978226, 0, 1.80148, 0.945237, -0.326386, 0, 34.5928, 0.326386, 0.945237, 0, 4.17289, 0.881798, -0.471627, 0, 43.9098, 0.471627, 0.881798, 0, 7.77345, 0.750554, -0.660809, 0, 52.4566, 0.660809, 0.750554, 0, 12.9246, 0.580281, -0.814416, 0, 59.5014, 0.814416, 0.580281, 0, 19.9817, 0.420537, -0.907275, 0, 64.909, 0.907275, 0.420537, 0, 28.3721, 0.274261, -0.961655, 0, 68.7216, 0.961655, 0.274261, 0, 37.6024, 0.131685, -0.991292, 0, 71.1074, 0.991292, 0.131685, 0, 47.3038, -4.37114e-08, -1, 0, 72, 1, -4.37114e-08, 0, 57.2519) + +[node name="TrackSwitch" instance=ExtResource("1_bylgj")] + +[node name="LeftTrack" parent="." index="0"] +curve = SubResource("Curve2D_81xyj") + +[node name="MultiMeshInstance2D" parent="LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_55w7u") + +[node name="HeadPoint" parent="LeftTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="LeftTrack" index="3"] +position = Vector2(104, 64) +rotation = 0.785398 +progress = 127.57 + +[node name="TrackLine" parent="LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40482, 0.0324149, 13.2451, 0.253994, 15.9031, 0.494002, 18.9595, 0.851238, 22.3442, 1.34902, 25.9869, 2.01065, 29.8175, 2.85945, 33.7659, 3.91873, 37.7619, 5.2118, 41.7353, 6.76198, 45.6159, 8.59258, 49.3337, 10.7269, 52.8185, 13.1883, 56, 16, 58.912, 18.9016, 61.635, 21.6168, 64.1692, 24.1457, 66.5147, 26.488, 68.6717, 28.6437, 70.6403, 30.6125, 74.0131, 33.9893, 76.6342, 36.6175, 78.5049, 38.496, 80, 40, 81.0312, 41.0312, 83.75, 43.75, 85.5664, 45.5664, 87.5938, 47.5938, 89.7617, 49.7617, 92, 52, 94.2383, 54.2383, 96.4062, 56.4062, 98.4336, 58.4336, 100.25, 60.25, 102.969, 62.9688, 104, 64) + +[node name="Pointer" parent="LeftTrack" index="5"] +position = Vector2(81.3648, 41.3648) +rotation = 0.785398 +progress = 95.6776 + +[node name="RightTrack" parent="." index="1"] +curve = SubResource("Curve2D_jf8fx") + +[node name="MultiMeshInstance2D" parent="RightTrack" index="1"] +multimesh = SubResource("MultiMesh_n0m24") + +[node name="HeadPoint" parent="RightTrack" index="2"] +rotation = -2.60206e-13 + +[node name="TailPoint" parent="RightTrack" index="3"] +position = Vector2(72, 64) +rotation = 1.5708 +progress = 111.748 + +[node name="TrackLine" parent="RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40643, 0.0316848, 13.2506, 0.251491, 15.911, 0.490416, 18.9699, 0.846545, 22.3569, 1.34327, 26.0017, 2.00397, 29.8339, 2.85206, 33.7832, 3.91091, 37.7793, 5.20392, 41.7519, 6.75447, 45.6305, 8.58597, 49.345, 10.7218, 52.8249, 13.1853, 56, 16, 58.8157, 19.0842, 61.28, 22.3095, 63.4163, 25.6289, 65.2481, 28.9955, 66.7988, 32.3625, 68.0918, 35.6828, 69.1505, 38.9097, 69.9984, 41.996, 70.6587, 44.895, 71.1551, 47.5597, 71.7494, 51.9985, 72, 56, 72, 60, 72, 64) + +[node name="Pointer" parent="RightTrack" index="5"] +position = Vector2(68.3721, 36.4824) +rotation = 1.24039 +progress = 83.8111 + +[editable path="LeftTrack"] +[editable path="RightTrack"] diff --git a/prefabs/Tracks/Track_45_Curve_Mirrored.tscn b/prefabs/Tracks/Track_45_Curve_Mirrored.tscn new file mode 100644 index 0000000..21c961d --- /dev/null +++ b/prefabs/Tracks/Track_45_Curve_Mirrored.tscn @@ -0,0 +1,106 @@ +[gd_scene load_steps=9 format=3 uid="uid://cr8fyeohy7xyg"] + +[ext_resource type="Script" path="res://scripts/Track.gd" id="1_b74i5"] +[ext_resource type="Texture2D" uid="uid://dyk30b1nt2gvq" path="res://assets/crosstie.png" id="2_gfu3x"] +[ext_resource type="PackedScene" uid="uid://btfdanletw1gi" path="res://prefabs/TrackJunction.tscn" id="3_56qa2"] +[ext_resource type="PackedScene" uid="uid://iw1demrx5nvt" path="res://prefabs/SignalButton.tscn" id="4_e8wbh"] +[ext_resource type="Texture2D" uid="uid://dlgfnj8p01ym4" path="res://assets/track.png" id="5_hnvhd"] + +[sub_resource type="Curve2D" id="Curve2D_asyaa"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -15.9668, 7.95053, 15.9668, -7.95053, -80, -8, 0, 0, 0, 0, -48, -32, 0, 0, 0, 0, -40, -40) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_hmeh0"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_nb77j"] +resource_local_to_scene = true +instance_count = 11 +mesh = SubResource("ArrayMesh_hmeh0") +buffer = PackedFloat32Array(0.999975, 0.00704915, 0, -131, -0.00704915, 0.999975, 0, 0, 0.998224, 0.0595698, 0, -121.004, -0.0595698, 0.998224, 0, -0.211871, 0.994286, 0.106751, 0, -111.03, -0.106751, 0.994286, 0, -0.923444, 0.984957, 0.172802, 0, -101.108, -0.172802, 0.984957, 0, -2.1523, 0.963237, 0.268653, 0, -91.3005, -0.268653, 0.963237, 0, -4.08749, 0.896852, 0.442331, 0, -81.8124, -0.442331, 0.896852, 0, -7.19964, 0.835271, 0.549839, 0, -73.0285, -0.549839, 0.835271, 0, -11.9557, 0.79135, 0.611364, 0, -64.7946, -0.611364, 0.79135, 0, -17.6247, 0.753857, 0.657039, 0, -56.9775, -0.657039, 0.753857, 0, -23.8583, 0.71391, 0.700238, 0, -49.5344, -0.700238, 0.71391, 0, -30.534, 0.707107, 0.707107, 0, -42.4295, -0.707107, 0.707107, 0, -37.5705) + +[node name="Track" type="Path2D"] +position = Vector2(144, 0) +curve = SubResource("Curve2D_asyaa") +script = ExtResource("1_b74i5") +metadata/_edit_group_ = true + +[node name="Crosstie" type="MeshInstance2D" parent="."] +visible = false +position = Vector2(-50, -50) +mesh = SubResource("ArrayMesh_hmeh0") +texture = ExtResource("2_gfu3x") + +[node name="MultiMeshInstance2D" type="MultiMeshInstance2D" parent="."] +z_index = 1 +multimesh = SubResource("MultiMesh_nb77j") +texture = ExtResource("2_gfu3x") + +[node name="HeadPoint" type="PathFollow2D" parent="."] +position = Vector2(-136, 0) +loop = false + +[node name="TrackJunction" parent="HeadPoint" instance=ExtResource("3_56qa2")] +parent = NodePath("../..") +side = 2 + +[node name="SignalButton" parent="HeadPoint" instance=ExtResource("4_e8wbh")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = -15.0 +offset_bottom = 505.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TailPoint" type="PathFollow2D" parent="."] +position = Vector2(-40, -40) +rotation = -0.785398 +progress = 108.436 +loop = false + +[node name="TrackJunction" parent="TailPoint" instance=ExtResource("3_56qa2")] +parent = NodePath("../..") +side = 3 + +[node name="SignalButton" parent="TailPoint" instance=ExtResource("4_e8wbh")] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_top = 15.0 +offset_bottom = 535.0 +grow_horizontal = 2 +grow_vertical = 2 +rotation = 1.5708 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TrackLine" type="Line2D" parent="."] +z_index = 2 +points = PackedVector2Array(-136, 0, -132, 0, -128, 0, -126.592, -0.0176542, -122.745, -0.131957, -120.083, -0.254106, -117.022, -0.43492, -113.634, -0.685902, -109.988, -1.01855, -106.154, -1.44437, -102.204, -1.97487, -98.2079, -2.62153, -94.236, -3.39587, -90.3587, -4.30939, -86.6467, -5.37358, -83.1703, -6.59995, -80, -8, -77.0094, -9.57974, -74.0408, -11.3139, -71.1178, -13.1672, -68.264, -15.1041, -65.503, -17.0894, -62.8584, -19.0876, -60.3537, -21.0634, -58.0125, -22.9814, -55.8584, -24.8063, -53.915, -26.5026, -50.7547, -29.368, -48, -32, -46.75, -33.25, -44, -36, -41.25, -38.75, -40, -40) +width = 20.0 +texture = ExtResource("5_hnvhd") +texture_mode = 1 +metadata/_edit_lock_ = true + +[connection signal="pressed" from="HeadPoint/SignalButton" to="." method="_on_head_signal_button_pressed" flags=18] +[connection signal="pressed" from="TailPoint/SignalButton" to="." method="_on_tail_signal_button_pressed" flags=18] diff --git a/scenes/Level1.tscn b/scenes/Level1.tscn index 15bddb2..2aeb7b8 100644 --- a/scenes/Level1.tscn +++ b/scenes/Level1.tscn @@ -1,338 +1,252 @@ -[gd_scene load_steps=25 format=3 uid="uid://bhjkcskfwdbug"] - -[ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="1_odec6"] -[ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="2_5wuhy"] -[ext_resource type="PackedScene" uid="uid://cq6ckyed0ps4t" path="res://prefabs/Level.tscn" id="2_gptj6"] -[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="2_h3h4n"] -[ext_resource type="Script" path="res://scripts/TracksController.gd" id="2_skwkk"] -[ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="7_nktel"] -[ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="8_l78k2"] - -[sub_resource type="Curve2D" id="Curve2D_dx211"] +[gd_scene load_steps=28 format=3 uid="uid://f00y8rjii1h1"] + +[ext_resource type="Script" path="res://scripts/TracksController.gd" id="2_ai76e"] +[ext_resource type="PackedScene" uid="uid://cq6ckyed0ps4t" path="res://prefabs/Level.tscn" id="2_l6rrh"] +[ext_resource type="PackedScene" uid="uid://cgg0iicpep7b2" path="res://prefabs/Tracks/Track_90_Curve_Medium.tscn" id="3_1radm"] +[ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="3_ud27o"] +[ext_resource type="PackedScene" uid="uid://bnivg4uv1nogr" path="res://prefabs/Tracks/Track_45_Curve.tscn" id="5_2sq2s"] +[ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="5_jlsfp"] +[ext_resource type="PackedScene" uid="uid://cr8fyeohy7xyg" path="res://prefabs/Tracks/Track_45_Curve_Mirrored.tscn" id="6_e3k5x"] +[ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="7_p34jf"] +[ext_resource type="PackedScene" uid="uid://dhhfykmc5w8mp" path="res://prefabs/TrackSwitches/TrackSwitch_Left90Curve_Left45Curve.tscn" id="7_rhne7"] +[ext_resource type="PackedScene" uid="uid://dvt4wgess2jyj" path="res://prefabs/TrackSwitches/TrackSwitch_Right45Curve_Right90Curve.tscn" id="8_j2k0u"] +[ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="8_xs6w7"] + +[sub_resource type="Curve2D" id="Curve2D_d88jc"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 208, 112, -23.833, 36.0765, 23.833, -36.0765, 176, 32, 0, 0, 0, 0, 264, 0) +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 152) } -point_count = 3 +point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_wvr62"] +[sub_resource type="Curve2D" id="Curve2D_frut4"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 96.1665, 5.65692) +"points": PackedVector2Array(0, 0, 0, 0, -64, -27, 0, 0, 0, 0, 103, 140) } point_count = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] -_surfaces = [{ -"2d": true, -"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), -"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), -"format": 33558545, -"index_count": 6, -"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), -"primitive": 3, -"vertex_count": 4, -"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) -}] - -[sub_resource type="MultiMesh" id="MultiMesh_2dy52"] -resource_local_to_scene = true -instance_count = 10 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.998274, -0.0587227, 0, 4.99137, 0.0587227, 0.998274, 0, 0.293614, 0.998274, -0.0587227, 0, 14.9741, 0.0587227, 0.998274, 0, 0.880841, 0.998274, -0.0587227, 0, 24.9569, 0.0587227, 0.998274, 0, 1.46807, 0.998274, -0.0587227, 0, 34.9396, 0.0587227, 0.998274, 0, 2.05529, 0.998274, -0.0587227, 0, 44.9223, 0.0587227, 0.998274, 0, 2.64252, 0.998274, -0.0587228, 0, 54.9051, 0.0587228, 0.998274, 0, 3.22975, 0.998274, -0.0587226, 0, 64.8878, 0.0587226, 0.998274, 0, 3.81698, 0.998274, -0.0587227, 0, 74.8706, 0.0587227, 0.998274, 0, 4.4042, 0.998274, -0.058723, 0, 84.8533, 0.058723, 0.998274, 0, 4.99143, 0.998274, -0.0587227, 0, 94.8361, 0.0587227, 0.998274, 0, 5.57866) - -[sub_resource type="Curve2D" id="Curve2D_q6d23"] +[sub_resource type="Curve2D" id="Curve2D_1djnw"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -18.0684, -18.0085, 18.0684, 18.0085, 62.2254, 16.9706, 0, 0, 0, 0, 96.1665, 50.9117) +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } -point_count = 3 +point_count = 5 -[sub_resource type="MultiMesh" id="MultiMesh_yocj8"] +[sub_resource type="Curve2D" id="Curve2D_41wbj"] resource_local_to_scene = true -instance_count = 11 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.999049, -0.0436099, 0, 4.99933, 0.0436099, 0.999049, 0, 0.0488746, 0.994522, -0.104527, 0, 14.9811, 0.104527, 0.994522, 0, 0.627066, 0.985411, -0.170193, 0, 24.9078, 0.170193, 0.985411, 0, 1.82289, 0.967065, -0.254529, 0, 34.7237, 0.254529, 0.967065, 0, 3.71877, 0.92969, -0.368342, 0, 44.3161, 0.368342, 0.92969, 0, 6.52693, 0.849053, -0.528308, 0, 53.448, 0.528308, 0.849053, 0, 10.5731, 0.717449, -0.696611, 0, 61.547, 0.696611, 0.717449, 0, 16.3878, 0.707669, -0.706544, 0, 68.6724, 0.706544, 0.707669, 0, 23.4009, 0.707199, -0.707014, 0, 75.7479, 0.707014, 0.707199, 0, 30.4676, 0.706773, -0.70744, 0, 82.8188, 0.70744, 0.706773, 0, 37.5388, 0.706311, -0.707902, 0, 89.8854, 0.707902, 0.706311, 0, 44.6143) +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -16.8086, -8.04456, 16.8086, 8.04456, -80, 8, 0, 0, 0, 0, -48, 32, 0, 0, 0, 0, -40, 40) +} +point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_jnyil"] +[sub_resource type="Curve2D" id="Curve2D_1ukf6"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, -4, 0, -9.2703, 24.8974, 9.2703, -24.8974, 56, -24, -1.38898, -2.48031, 1.38898, 2.48031, 40, -80) +"points": PackedVector2Array(0, 0, 0, 0, -28, -159, 0, 0, 0, 0, 272, 142) } -point_count = 3 +point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_5kklp"] +[sub_resource type="Curve2D" id="Curve2D_sn01j"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 200, 104, -6.62164, 38.4055, 6.62164, -38.4055, 152, 64, 1.11362, 0.890899, -1.11362, -0.890899, 168, 24) +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } -point_count = 3 +point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_ul5hn"] +[sub_resource type="Curve2D" id="Curve2D_uq6se"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, -48, -16, 0, 0, 0, 0, 128, -16) +"points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -15.9668, 7.95053, 15.9668, -7.95053, -80, -8, 0, 0, 0, 0, -48, -32, 0, 0, 0, 0, -40, -40) } -point_count = 2 +point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_ns0ju"] +[sub_resource type="Curve2D" id="Curve2D_tybvb"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(4.49492, -5.61865, -4.49492, 5.61865, -64, -48, 8.30851, -5.48008, -8.30851, 5.48008, 280, 104) +"points": PackedVector2Array(0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 253, -97) } point_count = 2 -[sub_resource type="MultiMesh" id="MultiMesh_sxxw1"] -resource_local_to_scene = true -instance_count = 38 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.887414, -0.460974, 0, -60.0108, 0.460974, 0.887414, 0, -45.0042, 0.905093, -0.425215, 0, -51.0767, 0.425215, 0.905093, 0, -40.5151, 0.911384, -0.411557, 0, -42.0062, 0.411557, 0.911384, 0, -36.3054, 0.914674, -0.404193, 0, -32.883, 0.404193, 0.914674, 0, -32.2105, 0.916744, -0.399476, 0, -23.7304, 0.399476, 0.916744, 0, -28.1819, 0.918207, -0.396102, 0, -14.5591, 0.396102, 0.918207, 0, -24.1962, 0.919262, -0.393646, 0, -5.37424, 0.393646, 0.919262, 0, -20.2416, 0.920054, -0.391792, 0, 3.82057, 0.391792, 0.920054, 0, -16.3103, 0.92071, -0.390248, 0, 13.023, 0.390248, 0.92071, 0, -12.3968, 0.921213, -0.389059, 0, 22.2313, 0.389059, 0.921213, 0, -8.49726, 0.921609, -0.38812, 0, 31.4445, 0.38812, 0.921609, 0, -4.60922, 0.921924, -0.38737, 0, 40.6614, 0.38737, 0.921924, 0, -0.729957, 0.92218, -0.386761, 0, 49.8814, 0.386761, 0.92218, 0, 3.14205, 0.922369, -0.38631, 0, 59.1037, 0.38631, 0.922369, 0, 7.00846, 0.922513, -0.385965, 0, 68.3278, 0.385965, 0.922513, 0, 10.8706, 0.922612, -0.385729, 0, 77.5532, 0.385729, 0.922612, 0, 14.7296, 0.922668, -0.385596, 0, 86.7795, 0.385596, 0.922668, 0, 18.5865, 0.922685, -0.385554, 0, 96.0062, 0.385554, 0.922685, 0, 22.4423, 0.922664, -0.385606, 0, 105.233, 0.385606, 0.922664, 0, 26.2979, 0.922604, -0.385748, 0, 114.46, 0.385748, 0.922604, 0, 30.1543, 0.922506, -0.385982, 0, 123.685, 0.385982, 0.922506, 0, 34.0123, 0.92237, -0.386308, 0, 132.91, 0.386308, 0.92237, 0, 37.8729, 0.92218, -0.38676, 0, 142.133, 0.38676, 0.92218, 0, 41.7369, 0.921951, -0.387306, 0, 151.355, 0.387306, 0.921951, 0, 45.6059, 0.921672, -0.387971, 0, 160.573, 0.387971, 0.921672, 0, 49.4805, 0.921307, -0.388837, 0, 169.789, 0.388837, 0.921307, 0, 53.3621, 0.920892, -0.389818, 0, 179.001, 0.389818, 0.920892, 0, 57.2528, 0.920373, -0.391043, 0, 188.209, 0.391043, 0.920373, 0, 61.1538, 0.919746, -0.392514, 0, 197.411, 0.392514, 0.919746, 0, 65.0679, 0.918937, -0.394405, 0, 206.607, 0.394405, 0.918937, 0, 68.9972, 0.917979, -0.39663, 0, 215.794, 0.39663, 0.917979, 0, 72.9462, 0.916728, -0.399512, 0, 224.971, 0.399512, 0.916728, 0, 76.9195, 0.915018, -0.403412, 0, 234.134, 0.403412, 0.915018, 0, 80.9239, 0.912598, -0.408858, 0, 243.279, 0.408858, 0.912598, 0, 84.9697, 0.908782, -0.417271, 0, 252.397, 0.417271, 0.908782, 0, 89.0759, 0.90236, -0.430983, 0, 261.472, 0.430983, 0.90236, 0, 93.2766, 0.882252, -0.470777, 0, 270.468, 0.470777, 0.882252, 0, 97.6435, 0.70642, -0.707793, 0, 278.898, 0.707793, 0.70642, 0, 102.895) - -[sub_resource type="Curve2D" id="Curve2D_2j3w1"] +[sub_resource type="Curve2D" id="Curve2D_kvg06"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0.350769, -0.420923, -0.350769, 0.420923, -108, -72, -2.51984, -37.1677, 2.51984, 37.1677, -32, -40, 0, 0, 0, 0, -72, 24) +"points": PackedVector2Array(0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } -point_count = 3 +point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_sjkd1"] +[sub_resource type="Curve2D" id="Curve2D_k5b3m"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0.445953, 6.39199, -0.445953, -6.39199, -48, 48, 1.31102, 2.24746, -1.31102, -2.24746, 248, -112) +"points": PackedVector2Array(0, 0, 0, 0, -8, 55, 0, 0, 0, 0, 206, -159) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_r25qh"] +[sub_resource type="Curve2D" id="Curve2D_b5u6y"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -16.5134, 16.5816, 16.5134, -16.5816, 73.5391, -28.2843, 0, 0, 0, 0, 90.5097, -45.2549) +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -16.0349, -15.9716, 16.0349, 15.9716, 56, 16, 0, 0, 0, 0, 80, 40, 0, 0, 0, 0, 104, 64) } -point_count = 3 +point_count = 5 -[sub_resource type="MultiMesh" id="MultiMesh_bq364"] +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_1tu7u"] resource_local_to_scene = true -instance_count = 10 +instance_count = 13 mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.973052, 0.230584, 0, 4.88223, -0.230584, 0.973052, 0, -1.07852, 0.966958, 0.254934, 0, 14.5981, -0.254934, 0.966958, 0, -3.44424, 0.959557, 0.281516, 0, 24.2506, -0.281516, 0.959557, 0, -6.05645, 0.949848, 0.312712, 0, 33.8255, -0.312712, 0.949848, 0, -8.93951, 0.935813, 0.352498, 0, 43.2949, -0.352498, 0.935813, 0, -12.1518, 0.913086, 0.407766, 0, 52.606, -0.407766, 0.913086, 0, -15.7957, 0.869407, 0.494097, 0, 61.6456, -0.494097, 0.869407, 0, -20.0638, 0.753243, 0.657743, 0, 70.1223, -0.657743, 0.753243, 0, -25.3463, 0.706087, 0.708125, 0, 77.4166, -0.708125, 0.706087, 0, -32.1761, 0.707436, 0.706777, 0, 84.4802, -0.706777, 0.707436, 0, -39.2547) +buffer = PackedFloat32Array(0.999911, -0.013338, 0, 5, 0.013338, 0.999911, 0, 7.80619e-13, 0.99311, -0.117186, 0, 14.9862, 0.117186, 0.99311, 0, 0.411204, 0.978145, -0.207924, 0, 24.8837, 0.207924, 0.978145, 0, 1.81027, 0.945185, -0.326536, 0, 34.591, 0.326536, 0.945185, 0, 4.18571, 0.88196, -0.471324, 0, 43.9078, 0.471324, 0.88196, 0, 7.78681, 0.753186, -0.657808, 0, 52.4575, 0.657808, 0.753186, 0, 12.9333, 0.707989, -0.706223, 0, 59.7627, 0.706223, 0.707989, 0, 19.7499, 0.707201, -0.707013, 0, 66.8408, 0.707013, 0.707201, 0, 26.8139, 0.706054, -0.708158, 0, 73.9103, 0.708158, 0.706054, 0, 33.8865, 0.707107, -0.707107, 0, 80.9695, 0.707107, 0.707107, 0, 40.9695, 0.707106, -0.707108, 0, 88.0405, 0.707108, 0.707106, 0, 48.0405, 0.707107, -0.707106, 0, 95.1116, 0.707106, 0.707107, 0, 55.1116, 0.707107, -0.707107, 0, 102.183, 0.707107, 0.707107, 0, 62.1827) -[sub_resource type="Curve2D" id="Curve2D_ys6kh"] +[sub_resource type="Curve2D" id="Curve2D_qar2q"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 79.196, -3.05176e-05) +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9956, -15.9894, 15.9956, 15.9894, 56, 16, 0, 0, 0, 0, 72, 56, 0, 0, 0, 0, 72, 64) } -point_count = 2 +point_count = 5 -[sub_resource type="MultiMesh" id="MultiMesh_nrtpx"] +[sub_resource type="MultiMesh" id="MultiMesh_1gawn"] resource_local_to_scene = true -instance_count = 8 +instance_count = 11 mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(1, 3.85343e-07, 0, 5, -3.85343e-07, 1, 0, -1.92671e-06, 1, 3.85343e-07, 0, 15, -3.85343e-07, 1, 0, -5.78014e-06, 1, 3.85343e-07, 0, 25, -3.85343e-07, 1, 0, -9.63357e-06, 1, 3.85343e-07, 0, 35, -3.85343e-07, 1, 0, -1.3487e-05, 1, 3.85343e-07, 0, 45, -3.85343e-07, 1, 0, -1.73404e-05, 1, 3.85343e-07, 0, 55, -3.85343e-07, 1, 0, -2.11938e-05, 1, 3.85343e-07, 0, 65, -3.85343e-07, 1, 0, -2.50473e-05, 1, 3.85342e-07, 0, 75, -3.85342e-07, 1, 0, -2.89007e-05) +buffer = PackedFloat32Array(0.999914, -0.0131121, 0, 5, 0.0131121, 0.999914, 0, 7.80619e-13, 0.993174, -0.116643, 0, 14.9864, 0.116643, 0.993174, 0, 0.407375, 0.978226, -0.207541, 0, 24.8846, 0.207541, 0.978226, 0, 1.80148, 0.945237, -0.326386, 0, 34.5928, 0.326386, 0.945237, 0, 4.17289, 0.881798, -0.471627, 0, 43.9098, 0.471627, 0.881798, 0, 7.77345, 0.750554, -0.660809, 0, 52.4566, 0.660809, 0.750554, 0, 12.9246, 0.580281, -0.814416, 0, 59.5014, 0.814416, 0.580281, 0, 19.9817, 0.420537, -0.907275, 0, 64.909, 0.907275, 0.420537, 0, 28.3721, 0.274261, -0.961655, 0, 68.7216, 0.961655, 0.274261, 0, 37.6024, 0.131685, -0.991292, 0, 71.1074, 0.991292, 0.131685, 0, 47.3038, -4.37114e-08, -1, 0, 72, 1, -4.37114e-08, 0, 57.2519) + +[sub_resource type="Curve2D" id="Curve2D_a7pxc"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 67, -219, 0, 0, 0, 0, 67, 217) +} +point_count = 2 [node name="Level1" type="Node2D"] +position = Vector2(-7, 24) [node name="CanvasLayer" type="CanvasLayer" parent="."] -[node name="Level" parent="CanvasLayer" instance=ExtResource("2_gptj6")] +[node name="Level" parent="CanvasLayer" instance=ExtResource("2_l6rrh")] grow_horizontal = 1 grow_vertical = 1 size_flags_horizontal = 3 size_flags_vertical = 3 [node name="Tracks" type="Node2D" parent="."] -script = ExtResource("2_skwkk") +script = ExtResource("2_ai76e") -[node name="Track" parent="Tracks" instance=ExtResource("1_odec6")] -position = Vector2(160, 96) -curve = SubResource("Curve2D_dx211") +[node name="Track" parent="Tracks" instance=ExtResource("3_1radm")] +position = Vector2(105, 143) +rotation = -1.5708 +curve = SubResource("Curve2D_d88jc") + +[node name="Track3" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(425, 106) +curve = SubResource("Curve2D_frut4") + +[node name="Track4" parent="Tracks" instance=ExtResource("3_1radm")] +position = Vector2(1060, 459) +rotation = 1.5708 +curve = SubResource("Curve2D_1djnw") + +[node name="Track5" parent="Tracks" instance=ExtResource("5_2sq2s")] +position = Vector2(788, 587) +rotation = -3.14159 +curve = SubResource("Curve2D_41wbj") + +[node name="Track6" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(556, 405) +curve = SubResource("Curve2D_1ukf6") + +[node name="Track7" parent="Tracks" instance=ExtResource("3_1radm")] +position = Vector2(932, 15) +curve = SubResource("Curve2D_sn01j") + +[node name="Track8" parent="Tracks" instance=ExtResource("6_e3k5x")] +position = Vector2(788, 15) +rotation = -3.14159 +curve = SubResource("Curve2D_uq6se") + +[node name="Track9" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(575, 152) +curve = SubResource("Curve2D_tybvb") + +[node name="Track11" parent="Tracks" instance=ExtResource("3_1radm")] +position = Vector2(233, 587) +rotation = 3.14159 +curve = SubResource("Curve2D_kvg06") + +[node name="Track12" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(369, 468) +curve = SubResource("Curve2D_k5b3m") + +[node name="TrackSwitch" parent="Tracks" instance=ExtResource("7_rhne7")] +position = Vector2(257, 587) +direction = 0 -[node name="TrackSwitch2" parent="Tracks" instance=ExtResource("2_h3h4n")] -position = Vector2(392, 416) -rotation = -0.785398 +[node name="TrackSwitch2" parent="Tracks" instance=ExtResource("8_j2k0u")] +position = Vector2(257, 15) [node name="LeftTrack" parent="Tracks/TrackSwitch2" index="0"] -curve = SubResource("Curve2D_wvr62") +curve = SubResource("Curve2D_b5u6y") [node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_2dy52") - -[node name="HeadPoint" parent="Tracks/TrackSwitch2/LeftTrack" index="2"] -rotation = 0.0587565 - -[node name="TrackJunction" parent="Tracks/TrackSwitch2/LeftTrack/HeadPoint" index="0"] -parent = NodePath("../../../../TrackSwitch2") - -[node name="TailPoint" parent="Tracks/TrackSwitch2/LeftTrack" index="3"] -position = Vector2(96.1665, 5.65692) -rotation = 0.0587565 -progress = 96.3327 - -[node name="TrackJunction" parent="Tracks/TrackSwitch2/LeftTrack/TailPoint" index="0"] -parent = NodePath("../../../../TrackSwitch2") +multimesh = SubResource("MultiMesh_1tu7u") [node name="TrackLine" parent="Tracks/TrackSwitch2/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4.13215, 0.243071, 8.87474, 0.52205, 11.7919, 0.693649, 15.026, 0.883894, 18.5419, 1.09071, 22.3042, 1.31203, 26.2779, 1.54578, 30.4277, 1.78988, 34.7183, 2.04228, 39.1146, 2.30089, 43.5813, 2.56364, 48.0832, 2.82846, 52.5852, 3.09328, 57.0519, 3.35603, 61.4482, 3.61464, 65.7388, 3.86704, 69.8886, 4.11114, 73.8623, 4.34489, 77.6246, 4.56621, 81.1405, 4.77303, 84.3746, 4.96327, 87.2918, 5.13487, 92.0343, 5.41385, 96.1665, 5.65692) +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40482, 0.0324149, 13.2451, 0.253994, 15.9031, 0.494002, 18.9595, 0.851238, 22.3442, 1.34902, 25.9869, 2.01065, 29.8175, 2.85945, 33.7659, 3.91873, 37.7619, 5.2118, 41.7353, 6.76198, 45.6159, 8.59258, 49.3337, 10.7269, 52.8185, 13.1883, 56, 16, 58.912, 18.9016, 61.635, 21.6168, 64.1692, 24.1457, 66.5147, 26.488, 68.6717, 28.6437, 70.6403, 30.6125, 74.0131, 33.9893, 76.6342, 36.6175, 78.5049, 38.496, 80, 40, 81.0312, 41.0312, 83.75, 43.75, 85.5664, 45.5664, 87.5938, 47.5938, 89.7617, 49.7617, 92, 52, 94.2383, 54.2383, 96.4062, 56.4062, 98.4336, 58.4336, 100.25, 60.25, 102.969, 62.9688, 104, 64) [node name="Pointer" parent="Tracks/TrackSwitch2/LeftTrack" index="5"] -position = Vector2(66.6506, 3.92067) -rotation = 0.0587565 +position = Vector2(81.3648, 41.3648) [node name="RightTrack" parent="Tracks/TrackSwitch2" index="1"] -curve = SubResource("Curve2D_q6d23") +curve = SubResource("Curve2D_qar2q") [node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_yocj8") - -[node name="HeadPoint" parent="Tracks/TrackSwitch2/RightTrack" index="2"] -rotation = 0.266253 - -[node name="TrackJunction" parent="Tracks/TrackSwitch2/RightTrack/HeadPoint" index="0"] -parent = NodePath("../../../../TrackSwitch2") - -[node name="TailPoint" parent="Tracks/TrackSwitch2/RightTrack" index="3"] -position = Vector2(96.1665, 50.9117) -rotation = 0.785398 -progress = 113.894 - -[node name="TrackJunction" parent="Tracks/TrackSwitch2/RightTrack/TailPoint" index="0"] -parent = NodePath("../../../../TrackSwitch2") +multimesh = SubResource("MultiMesh_1gawn") [node name="TrackLine" parent="Tracks/TrackSwitch2/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.93266, -0.00942437, 4.19414, 0.0229257, 7.18185, 0.119211, 10.7929, 0.308852, 14.9244, 0.621269, 19.4734, 1.08588, 24.337, 1.73211, 26.8547, 2.13253, 29.4124, 2.58938, 31.9974, 3.10635, 34.5967, 3.6871, 37.1975, 4.33533, 39.7869, 5.05471, 42.352, 5.84891, 44.8801, 6.72161, 47.3582, 7.67649, 49.7734, 8.71723, 52.113, 9.8475, 54.364, 11.071, 56.5137, 12.3914, 58.549, 13.8123, 62.2254, 16.9706, 65.5842, 20.3195, 68.8714, 23.5994, 72.0671, 26.7901, 75.1513, 29.8712, 78.1039, 32.8225, 80.9048, 35.6237, 83.534, 38.2544, 85.9716, 40.6943, 88.1974, 42.9233, 90.1915, 44.9209, 93.4041, 48.1409, 96.1665, 50.9117) +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40643, 0.0316848, 13.2506, 0.251491, 15.911, 0.490416, 18.9699, 0.846545, 22.3569, 1.34327, 26.0017, 2.00397, 29.8339, 2.85206, 33.7832, 3.91091, 37.7793, 5.20392, 41.7519, 6.75447, 45.6305, 8.58597, 49.345, 10.7218, 52.8249, 13.1853, 56, 16, 58.8157, 19.0842, 61.28, 22.3095, 63.4163, 25.6289, 65.2481, 28.9955, 66.7988, 32.3625, 68.0918, 35.6828, 69.1505, 38.9097, 69.9984, 41.996, 70.6587, 44.895, 71.1551, 47.5597, 71.7494, 51.9985, 72, 56, 72, 60, 72, 64) [node name="Pointer" parent="Tracks/TrackSwitch2/RightTrack" index="5"] -position = Vector2(62.8641, 17.5763) -rotation = 0.783806 - -[node name="Track2" parent="Tracks" instance=ExtResource("1_odec6")] -position = Vector2(728, 496) -curve = SubResource("Curve2D_jnyil") - -[node name="Track3" parent="Tracks" instance=ExtResource("1_odec6")] -position = Vector2(224, 392) -curve = SubResource("Curve2D_5kklp") - -[node name="Track4" parent="Tracks" instance=ExtResource("1_odec6")] -position = Vector2(544, 400) -curve = SubResource("Curve2D_ul5hn") - -[node name="Track5" parent="Tracks" instance=ExtResource("1_odec6")] -position = Vector2(432, 256) -curve = SubResource("Curve2D_ns0ju") -head_signal_enabled = true - -[node name="MultiMeshInstance2D" parent="Tracks/Track5" index="1"] -multimesh = SubResource("MultiMesh_sxxw1") - -[node name="HeadPoint" parent="Tracks/Track5" index="2"] -position = Vector2(-64, -48) -rotation = 2.24554 - -[node name="SignalButton" parent="Tracks/Track5/HeadPoint" index="1"] -visible = true -offset_left = -14.8365 -offset_top = 5.46582 -offset_right = 509.163 -offset_bottom = 525.466 -rotation = -3.40339 - -[node name="TailPoint" parent="Tracks/Track5" index="3"] -position = Vector2(280, 104) -rotation = 2.55852 -progress = 376.561 - -[node name="TrackLine" parent="Tracks/Track5" index="4"] -points = PackedVector2Array(-64, -48, -60.7862, -45.4272, -58.7843, -44.3351, -56.3363, -43.0758, -53.4588, -41.6555, -50.1685, -40.0804, -46.4819, -38.3566, -42.4157, -36.4905, -37.9866, -34.4882, -35.6411, -33.4379, -33.2111, -32.3558, -30.6986, -31.2429, -28.1058, -30.0997, -25.4347, -28.9271, -22.6874, -27.7259, -19.866, -26.4968, -16.9726, -25.2407, -14.0092, -23.9583, -10.9779, -22.6503, -7.88081, -21.3175, -4.71999, -19.9608, -1.49752, -18.5809, 1.78452, -17.1785, 5.12406, -15.7545, 8.51902, -14.3096, 11.9673, -12.8445, 15.4669, -11.3602, 19.0156, -9.85723, 22.6114, -8.33652, 26.2523, -6.79879, 29.9361, -5.24483, 33.6607, -3.6754, 37.4242, -2.09128, 41.2244, -0.493237, 45.0592, 1.11794, 48.9265, 2.74149, 52.8243, 4.37662, 56.7506, 6.02257, 60.7031, 7.67857, 64.6799, 9.34383, 68.6789, 11.0176, 72.6979, 12.6991, 76.7349, 14.3875, 80.7879, 16.0821, 84.8547, 17.7821, 88.9333, 19.4867, 93.0216, 21.1951, 97.1175, 22.9067, 101.219, 24.6205, 105.324, 26.3359, 109.43, 28.052, 113.536, 29.768, 117.638, 31.4833, 121.736, 33.197, 125.827, 34.9084, 129.909, 36.6166, 133.98, 38.3209, 138.038, 40.0206, 142.081, 41.7148, 146.106, 43.4028, 150.111, 45.0838, 154.096, 46.757, 158.057, 48.4217, 161.992, 50.0771, 165.899, 51.7223, 169.777, 53.3567, 173.622, 54.9795, 177.434, 56.5898, 181.21, 58.187, 184.947, 59.7702, 188.645, 61.3386, 192.3, 62.8915, 195.911, 64.4282, 199.475, 65.9477, 202.991, 67.4495, 206.456, 68.9326, 209.869, 70.3963, 213.227, 71.8399, 216.528, 73.2625, 219.77, 74.6635, 222.952, 76.0419, 226.07, 77.3971, 229.123, 78.7282, 232.109, 80.0345, 235.026, 81.3153, 237.871, 82.5697, 240.643, 83.797, 243.339, 84.9963, 245.958, 86.167, 248.497, 87.3082, 250.954, 88.4192, 253.327, 89.4992, 255.615, 90.5474, 259.924, 92.5453, 263.865, 94.4069, 267.42, 96.1258, 270.573, 97.696, 273.308, 99.1111, 277.457, 101.452, 280, 104) - -[node name="Track6" parent="Tracks" instance=ExtResource("1_odec6")] -position = Vector2(832, 168) -curve = SubResource("Curve2D_2j3w1") - -[node name="Track7" parent="Tracks" instance=ExtResource("1_odec6")] -position = Vector2(512, 304) -curve = SubResource("Curve2D_sjkd1") - -[node name="TrackSwitch" parent="Tracks" instance=ExtResource("2_h3h4n")] -position = Vector2(768, 416) -rotation = -2.35619 -direction = 0 - -[node name="LeftTrack" parent="Tracks/TrackSwitch" index="0"] -z_index = 1 -curve = SubResource("Curve2D_r25qh") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_bq364") - -[node name="HeadPoint" parent="Tracks/TrackSwitch/LeftTrack" index="2"] -rotation = -0.367174 +position = Vector2(68.3721, 36.4824) -[node name="TailPoint" parent="Tracks/TrackSwitch/LeftTrack" index="3"] -position = Vector2(90.5097, -45.2549) -rotation = -0.785398 -progress = 103.506 +[node name="Button" parent="Tracks/TrackSwitch2" index="2"] +offset_top = 25.0 +offset_bottom = 73.0 -[node name="TrackLine" parent="Tracks/TrackSwitch/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 2.48258, -0.535236, 5.37148, -1.18929, 9.16829, -2.08763, 13.7301, -3.22028, 16.2533, -3.87134, 18.9141, -4.57723, 21.6948, -5.33669, 24.5774, -6.14848, 27.5441, -7.01135, 30.577, -7.92405, 33.6584, -8.88533, 36.7702, -9.89393, 39.8947, -10.9486, 43.014, -12.0481, 46.1102, -13.1912, 49.1656, -14.3767, 52.1621, -15.6032, 55.082, -16.8695, 57.9074, -18.1744, 60.6205, -19.5167, 63.2033, -20.895, 65.6381, -22.3082, 67.9069, -23.755, 69.9919, -25.2341, 73.5391, -28.2843, 76.451, -31.2075, 79.0095, -33.7742, 81.2373, -36.0078, 83.1573, -37.9313, 86.1656, -40.9407, 88.2169, -42.9877, 90.5097, -45.2549) +[node name="Track2" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(262, 298) +curve = SubResource("Curve2D_a7pxc") -[node name="Pointer" parent="Tracks/TrackSwitch/LeftTrack" index="5"] -visible = true -position = Vector2(63.1927, -20.8891) -rotation = -0.507123 +[node name="TrainStation" parent="." instance=ExtResource("5_jlsfp")] +position = Vector2(1060, 151) +rotation = 1.5708 -[node name="RightTrack" parent="Tracks/TrackSwitch" index="1"] -z_index = 0 -curve = SubResource("Curve2D_ys6kh") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_nrtpx") - -[node name="HeadPoint" parent="Tracks/TrackSwitch/RightTrack" index="2"] -rotation = -3.85343e-07 - -[node name="TailPoint" parent="Tracks/TrackSwitch/RightTrack" index="3"] -position = Vector2(79.196, -3.05176e-05) -rotation = -3.85343e-07 -progress = 79.196 - -[node name="TrackLine" parent="Tracks/TrackSwitch/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 3.40295, -1.3113e-06, 7.30861, -2.81632e-06, 9.71098, -3.74205e-06, 12.3744, -4.76837e-06, 15.2698, -5.8841e-06, 18.3682, -7.07805e-06, 21.6407, -8.33907e-06, 25.0581, -9.65596e-06, 28.5916, -1.10176e-05, 32.212, -1.24127e-05, 35.8905, -1.38301e-05, 39.598, -1.52588e-05, 43.3055, -1.66874e-05, 46.984, -1.81049e-05, 50.6044, -1.95e-05, 54.1379, -2.08616e-05, 57.5553, -2.21785e-05, 60.8278, -2.34395e-05, 63.9262, -2.46335e-05, 66.8216, -2.57492e-05, 69.485, -2.67755e-05, 71.8874, -2.77013e-05, 75.793, -2.92063e-05, 79.196, -3.05176e-05) - -[node name="Pointer" parent="Tracks/TrackSwitch/RightTrack" index="5"] -visible = false -position = Vector2(66.7695, -2.57291e-05) -rotation = -3.85343e-07 - -[node name="Button" parent="Tracks/TrackSwitch" index="2"] -offset_left = -39.5979 -offset_top = 28.2843 -offset_right = 36.4021 -offset_bottom = 76.2843 +[node name="TrainStation2" parent="." instance=ExtResource("5_jlsfp")] +position = Vector2(105, 451) rotation = -1.5708 -button_pressed = false - -[node name="TrainStation" parent="." instance=ExtResource("2_5wuhy")] -position = Vector2(424, 96) - -[node name="TrainStation2" parent="." instance=ExtResource("2_5wuhy")] -position = Vector2(424, 496) -[node name="TrainRoute" parent="." node_paths=PackedStringArray("tracks_controller") instance=ExtResource("7_nktel")] +[node name="TrainRoute" parent="." node_paths=PackedStringArray("tracks_controller") instance=ExtResource("7_p34jf")] position = Vector2(354.396, 151.157) tracks_controller = NodePath("../Tracks") car_count = 2 color = Color(1, 0.627451, 0.572549, 1) route_name = "Beziani" -[node name="TrainRouteStop" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_l78k2")] +[node name="TrainRouteStop" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] station = NodePath("../../TrainStation") -[node name="TrainRouteStop2" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_l78k2")] +[node name="TrainRouteStop2" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] station = NodePath("../../TrainStation2") [editable path="Tracks/TrackSwitch2"] [editable path="Tracks/TrackSwitch2/LeftTrack"] [editable path="Tracks/TrackSwitch2/RightTrack"] -[editable path="Tracks/Track5"] -[editable path="Tracks/TrackSwitch"] -[editable path="Tracks/TrackSwitch/LeftTrack"] -[editable path="Tracks/TrackSwitch/RightTrack"] diff --git a/scenes/Level2.tscn b/scenes/Level2.tscn index 5ca119b..208661d 100644 --- a/scenes/Level2.tscn +++ b/scenes/Level2.tscn @@ -1,28 +1,46 @@ -[gd_scene load_steps=26 format=3 uid="uid://dhrcwth0f3bi0"] +[gd_scene load_steps=32 format=3 uid="uid://bhjkcskfwdbug"] [ext_resource type="Script" path="res://scripts/TracksController.gd" id="2_ai76e"] [ext_resource type="PackedScene" uid="uid://cq6ckyed0ps4t" path="res://prefabs/Level.tscn" id="2_l6rrh"] +[ext_resource type="PackedScene" uid="uid://cgg0iicpep7b2" path="res://prefabs/Tracks/Track_90_Curve_Medium.tscn" id="3_1radm"] [ext_resource type="PackedScene" uid="uid://d1xy67euifbh6" path="res://prefabs/Track.tscn" id="3_ud27o"] -[ext_resource type="PackedScene" uid="uid://bm5dq3lcopsvl" path="res://prefabs/TrackSwitch.tscn" id="4_iman8"] +[ext_resource type="PackedScene" uid="uid://bnivg4uv1nogr" path="res://prefabs/Tracks/Track_45_Curve.tscn" id="5_2sq2s"] [ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="5_jlsfp"] +[ext_resource type="PackedScene" uid="uid://cr8fyeohy7xyg" path="res://prefabs/Tracks/Track_45_Curve_Mirrored.tscn" id="6_e3k5x"] [ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="7_p34jf"] +[ext_resource type="PackedScene" uid="uid://dhhfykmc5w8mp" path="res://prefabs/TrackSwitches/TrackSwitch_Left90Curve_Left45Curve.tscn" id="7_rhne7"] +[ext_resource type="PackedScene" uid="uid://dvt4wgess2jyj" path="res://prefabs/TrackSwitches/TrackSwitch_Right45Curve_Right90Curve.tscn" id="8_j2k0u"] [ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="8_xs6w7"] -[sub_resource type="Curve2D" id="Curve2D_mn1f5"] +[sub_resource type="Curve2D" id="Curve2D_ljegh"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 208, 112, -23.833, 36.0765, 23.833, -36.0765, 176, 32, 0, 0, 0, 0, 264, 0) +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 152) } -point_count = 3 +point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_wvr62"] +[sub_resource type="Curve2D" id="Curve2D_komhc"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 96.1665, 5.65692) +"points": PackedVector2Array(0, 0, 0, 0, -64, -27, 0, 0, 0, 0, 103, 140) } point_count = 2 -[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +[sub_resource type="Curve2D" id="Curve2D_av25h"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) +} +point_count = 5 + +[sub_resource type="Curve2D" id="Curve2D_jdjub"] +resource_local_to_scene = true +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -16.8086, -8.04456, 16.8086, 8.04456, -80, 8, 0, 0, 0, 0, -48, 32, 0, 0, 0, 0, -40, 40) +} +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_hmeh0"] _surfaces = [{ "2d": true, "aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), @@ -35,106 +53,115 @@ _surfaces = [{ "vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) }] -[sub_resource type="MultiMesh" id="MultiMesh_2dy52"] +[sub_resource type="MultiMesh" id="MultiMesh_8iosm"] resource_local_to_scene = true -instance_count = 10 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.998274, -0.0587227, 0, 4.99137, 0.0587227, 0.998274, 0, 0.293614, 0.998274, -0.0587227, 0, 14.9741, 0.0587227, 0.998274, 0, 0.880841, 0.998274, -0.0587227, 0, 24.9569, 0.0587227, 0.998274, 0, 1.46807, 0.998274, -0.0587227, 0, 34.9396, 0.0587227, 0.998274, 0, 2.05529, 0.998274, -0.0587227, 0, 44.9223, 0.0587227, 0.998274, 0, 2.64252, 0.998274, -0.0587228, 0, 54.9051, 0.0587228, 0.998274, 0, 3.22975, 0.998274, -0.0587226, 0, 64.8878, 0.0587226, 0.998274, 0, 3.81698, 0.998274, -0.0587227, 0, 74.8706, 0.0587227, 0.998274, 0, 4.4042, 0.998274, -0.058723, 0, 84.8533, 0.058723, 0.998274, 0, 4.99143, 0.998274, -0.0587227, 0, 94.8361, 0.0587227, 0.998274, 0, 5.57866) +instance_count = 11 +mesh = SubResource("ArrayMesh_hmeh0") +buffer = PackedFloat32Array(0.99998, -0.00625427, 0, -131, 0.00625427, 0.99998, 0, 0, 0.99821, -0.0597991, 0, -121.003, 0.0597991, 0.99821, 0, 0.201691, 0.993981, -0.109557, 0, -111.03, 0.109557, 0.993981, 0, 0.917158, 0.984565, -0.175017, 0, -101.111, 0.175017, 0.984565, 0, 2.17038, 0.962464, -0.27141, 0, -91.3075, 0.27141, 0.962464, 0, 4.12544, 0.902641, -0.430394, 0, -81.8129, 0.430394, 0.902641, 0, 7.22449, 0.840226, -0.542236, 0, -72.9645, 0.542236, 0.840226, 0, 11.8598, 0.791097, -0.611691, 0, -64.688, 0.611691, 0.791097, 0, 17.4654, 0.74764, -0.664105, 0, -56.8854, 0.664105, 0.74764, 0, 23.7164, 0.708123, -0.706089, 0, -49.5264, 0.706089, 0.708123, 0, 30.4837, 0.707107, -0.707107, 0, -42.4503, 0.707107, 0.707107, 0, 37.5497) -[sub_resource type="Curve2D" id="Curve2D_q6d23"] +[sub_resource type="Curve2D" id="Curve2D_kwp65"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -18.0684, -18.0085, 18.0684, 18.0085, 62.2254, 16.9706, 0, 0, 0, 0, 96.1665, 50.9117) +"points": PackedVector2Array(0, 0, 0, 0, -28, -159, 0, 0, 0, 0, 272, 142) } -point_count = 3 - -[sub_resource type="MultiMesh" id="MultiMesh_yocj8"] -resource_local_to_scene = true -instance_count = 11 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.999049, -0.0436099, 0, 4.99933, 0.0436099, 0.999049, 0, 0.0488746, 0.994522, -0.104527, 0, 14.9811, 0.104527, 0.994522, 0, 0.627066, 0.985411, -0.170193, 0, 24.9078, 0.170193, 0.985411, 0, 1.82289, 0.967065, -0.254529, 0, 34.7237, 0.254529, 0.967065, 0, 3.71877, 0.92969, -0.368342, 0, 44.3161, 0.368342, 0.92969, 0, 6.52693, 0.849053, -0.528308, 0, 53.448, 0.528308, 0.849053, 0, 10.5731, 0.717449, -0.696611, 0, 61.547, 0.696611, 0.717449, 0, 16.3878, 0.707669, -0.706544, 0, 68.6724, 0.706544, 0.707669, 0, 23.4009, 0.707199, -0.707014, 0, 75.7479, 0.707014, 0.707199, 0, 30.4676, 0.706773, -0.70744, 0, 82.8188, 0.70744, 0.706773, 0, 37.5388, 0.706311, -0.707902, 0, 89.8854, 0.707902, 0.706311, 0, 44.6143) +point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_3oakt"] +[sub_resource type="Curve2D" id="Curve2D_rp5i0"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, -4, 0, -9.2703, 24.8974, 9.2703, -24.8974, 56, -24, -1.38898, -2.48031, 1.38898, 2.48031, 40, -80) +"points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } -point_count = 3 +point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_cr413"] +[sub_resource type="Curve2D" id="Curve2D_75ew0"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 200, 104, -6.62164, 38.4055, 6.62164, -38.4055, 152, 64, 1.11362, 0.890899, -1.11362, -0.890899, 168, 24) +"points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -15.9668, 7.95053, 15.9668, -7.95053, -80, -8, 0, 0, 0, 0, -48, -32, 0, 0, 0, 0, -40, -40) } -point_count = 3 +point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_gr1gd"] +[sub_resource type="Curve2D" id="Curve2D_kliyo"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, -48, -16, 0, 0, 0, 0, 128, -16) +"points": PackedVector2Array(0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 253, -97) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_ceqwe"] +[sub_resource type="Curve2D" id="Curve2D_qyjxh"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(4.49492, -5.61865, -4.49492, 5.61865, -64, -48, 8.30851, -5.48008, -8.30851, 5.48008, 280, 104) +"points": PackedVector2Array(0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } -point_count = 2 +point_count = 5 -[sub_resource type="MultiMesh" id="MultiMesh_wannq"] +[sub_resource type="Curve2D" id="Curve2D_7nvmt"] resource_local_to_scene = true -instance_count = 38 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.887414, -0.460974, 0, -60.0108, 0.460974, 0.887414, 0, -45.0042, 0.905093, -0.425215, 0, -51.0767, 0.425215, 0.905093, 0, -40.5151, 0.911384, -0.411557, 0, -42.0062, 0.411557, 0.911384, 0, -36.3054, 0.914674, -0.404193, 0, -32.883, 0.404193, 0.914674, 0, -32.2105, 0.916744, -0.399476, 0, -23.7304, 0.399476, 0.916744, 0, -28.1819, 0.918207, -0.396102, 0, -14.5591, 0.396102, 0.918207, 0, -24.1962, 0.919262, -0.393646, 0, -5.37424, 0.393646, 0.919262, 0, -20.2416, 0.920054, -0.391792, 0, 3.82057, 0.391792, 0.920054, 0, -16.3103, 0.92071, -0.390248, 0, 13.023, 0.390248, 0.92071, 0, -12.3968, 0.921213, -0.389059, 0, 22.2313, 0.389059, 0.921213, 0, -8.49726, 0.921609, -0.38812, 0, 31.4445, 0.38812, 0.921609, 0, -4.60922, 0.921924, -0.38737, 0, 40.6614, 0.38737, 0.921924, 0, -0.729957, 0.92218, -0.386761, 0, 49.8814, 0.386761, 0.92218, 0, 3.14205, 0.922369, -0.38631, 0, 59.1037, 0.38631, 0.922369, 0, 7.00846, 0.922513, -0.385965, 0, 68.3278, 0.385965, 0.922513, 0, 10.8706, 0.922612, -0.385729, 0, 77.5532, 0.385729, 0.922612, 0, 14.7296, 0.922668, -0.385596, 0, 86.7795, 0.385596, 0.922668, 0, 18.5865, 0.922685, -0.385554, 0, 96.0062, 0.385554, 0.922685, 0, 22.4423, 0.922664, -0.385606, 0, 105.233, 0.385606, 0.922664, 0, 26.2979, 0.922604, -0.385748, 0, 114.46, 0.385748, 0.922604, 0, 30.1543, 0.922506, -0.385982, 0, 123.685, 0.385982, 0.922506, 0, 34.0123, 0.92237, -0.386308, 0, 132.91, 0.386308, 0.92237, 0, 37.8729, 0.92218, -0.38676, 0, 142.133, 0.38676, 0.92218, 0, 41.7369, 0.921951, -0.387306, 0, 151.355, 0.387306, 0.921951, 0, 45.6059, 0.921672, -0.387971, 0, 160.573, 0.387971, 0.921672, 0, 49.4805, 0.921307, -0.388837, 0, 169.789, 0.388837, 0.921307, 0, 53.3621, 0.920892, -0.389818, 0, 179.001, 0.389818, 0.920892, 0, 57.2528, 0.920373, -0.391043, 0, 188.209, 0.391043, 0.920373, 0, 61.1538, 0.919746, -0.392514, 0, 197.411, 0.392514, 0.919746, 0, 65.0679, 0.918937, -0.394405, 0, 206.607, 0.394405, 0.918937, 0, 68.9972, 0.917979, -0.39663, 0, 215.794, 0.39663, 0.917979, 0, 72.9462, 0.916728, -0.399512, 0, 224.971, 0.399512, 0.916728, 0, 76.9195, 0.915018, -0.403412, 0, 234.134, 0.403412, 0.915018, 0, 80.9239, 0.912598, -0.408858, 0, 243.279, 0.408858, 0.912598, 0, 84.9697, 0.908782, -0.417271, 0, 252.397, 0.417271, 0.908782, 0, 89.0759, 0.90236, -0.430983, 0, 261.472, 0.430983, 0.90236, 0, 93.2766, 0.882252, -0.470777, 0, 270.468, 0.470777, 0.882252, 0, 97.6435, 0.70642, -0.707793, 0, 278.898, 0.707793, 0.70642, 0, 102.895) +_data = { +"points": PackedVector2Array(0, 0, 0, 0, -8, 55, 0, 0, 0, 0, 206, -159) +} +point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_se16d"] +[sub_resource type="Curve2D" id="Curve2D_b5u6y"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0.350769, -0.420923, -0.350769, 0.420923, -108, -72, -2.51984, -37.1677, 2.51984, 37.1677, -32, -40, 0, 0, 0, 0, -72, 24) +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -16.0349, -15.9716, 16.0349, 15.9716, 56, 16, 0, 0, 0, 0, 80, 40, 0, 0, 0, 0, 104, 64) } -point_count = 3 +point_count = 5 + +[sub_resource type="ArrayMesh" id="ArrayMesh_umy7o"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] -[sub_resource type="MultiMesh" id="MultiMesh_rdbsw"] +[sub_resource type="MultiMesh" id="MultiMesh_1tu7u"] resource_local_to_scene = true -instance_count = 17 +instance_count = 13 mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(1, 0.000598168, 0, -103, -0.000598168, 1, 0, -72.0539, 0.998903, -0.0468321, 0, -93.0019, 0.0468321, 0.998903, 0, -71.9513, 0.994609, -0.103698, 0, -83.0225, 0.103698, 0.994609, 0, -71.3334, 0.984254, -0.176763, 0, -73.1004, 0.176763, 0.984254, 0, -70.1074, 0.961491, -0.274836, 0, -63.3059, 0.274836, 0.961491, 0, -68.1112, 0.910867, -0.4127, 0, -53.7854, 0.4127, 0.910867, 0, -65.0752, 0.795079, -0.606507, 0, -44.8859, 0.606507, 0.795079, 0, -60.549, 0.549428, -0.835541, 0, -37.442, 0.835541, 0.549428, 0, -53.9368, 0.176727, -0.98426, 0, -32.9085, 0.98426, 0.176727, 0, -45.1147, -0.0827939, -0.996567, 0, -31.9487, 0.996567, -0.0827939, 0, -35.2076, -0.275778, -0.961221, 0, -33.307, 0.961221, -0.275778, 0, -25.321, -0.4324, -0.901682, 0, -36.5098, 0.901682, -0.4324, 0, -15.864, -0.55362, -0.832769, 0, -41.1786, 0.832769, -0.55362, 0, -7.03251, -0.64464, -0.764486, 0, -46.955, 0.764486, -0.64464, 0, 1.12253, -0.712348, -0.701827, 0, -53.5772, 0.701827, -0.712348, 0, 8.60977, -0.767802, -0.640687, 0, -60.8599, 0.640687, -0.767802, 0, 15.4572, -0.821997, -0.569492, 0, -68.6717, 0.569492, -0.821997, 0, 21.6941) +buffer = PackedFloat32Array(0.999911, -0.013338, 0, 5, 0.013338, 0.999911, 0, 7.80619e-13, 0.99311, -0.117186, 0, 14.9862, 0.117186, 0.99311, 0, 0.411204, 0.978145, -0.207924, 0, 24.8837, 0.207924, 0.978145, 0, 1.81027, 0.945185, -0.326536, 0, 34.591, 0.326536, 0.945185, 0, 4.18571, 0.88196, -0.471324, 0, 43.9078, 0.471324, 0.88196, 0, 7.78681, 0.753186, -0.657808, 0, 52.4575, 0.657808, 0.753186, 0, 12.9333, 0.707989, -0.706223, 0, 59.7627, 0.706223, 0.707989, 0, 19.7499, 0.707201, -0.707013, 0, 66.8408, 0.707013, 0.707201, 0, 26.8139, 0.706054, -0.708158, 0, 73.9103, 0.708158, 0.706054, 0, 33.8865, 0.707107, -0.707107, 0, 80.9695, 0.707107, 0.707107, 0, 40.9695, 0.707106, -0.707108, 0, 88.0405, 0.707108, 0.707106, 0, 48.0405, 0.707107, -0.707106, 0, 95.1116, 0.707106, 0.707107, 0, 55.1116, 0.707107, -0.707107, 0, 102.183, 0.707107, 0.707107, 0, 62.1827) -[sub_resource type="Curve2D" id="Curve2D_wpc1j"] +[sub_resource type="Curve2D" id="Curve2D_qar2q"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0.445953, 6.39199, -0.445953, -6.39199, -48, 48, 1.31102, 2.24746, -1.31102, -2.24746, 248, -112) +"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 8, 0, -15.9956, -15.9894, 15.9956, 15.9894, 56, 16, 0, 0, 0, 0, 72, 56, 0, 0, 0, 0, 72, 64) } -point_count = 2 +point_count = 5 + +[sub_resource type="MultiMesh" id="MultiMesh_1gawn"] +resource_local_to_scene = true +instance_count = 11 +mesh = SubResource("ArrayMesh_umy7o") +buffer = PackedFloat32Array(0.999914, -0.0131121, 0, 5, 0.0131121, 0.999914, 0, 7.80619e-13, 0.993174, -0.116643, 0, 14.9864, 0.116643, 0.993174, 0, 0.407375, 0.978226, -0.207541, 0, 24.8846, 0.207541, 0.978226, 0, 1.80148, 0.945237, -0.326386, 0, 34.5928, 0.326386, 0.945237, 0, 4.17289, 0.881798, -0.471627, 0, 43.9098, 0.471627, 0.881798, 0, 7.77345, 0.750554, -0.660809, 0, 52.4566, 0.660809, 0.750554, 0, 12.9246, 0.580281, -0.814416, 0, 59.5014, 0.814416, 0.580281, 0, 19.9817, 0.420537, -0.907275, 0, 64.909, 0.907275, 0.420537, 0, 28.3721, 0.274261, -0.961655, 0, 68.7216, 0.961655, 0.274261, 0, 37.6024, 0.131685, -0.991292, 0, 71.1074, 0.991292, 0.131685, 0, 47.3038, -4.37114e-08, -1, 0, 72, 1, -4.37114e-08, 0, 57.2519) -[sub_resource type="Curve2D" id="Curve2D_r25qh"] +[sub_resource type="Curve2D" id="Curve2D_3byt4"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, -16.5134, 16.5816, 16.5134, -16.5816, 73.5391, -28.2843, 0, 0, 0, 0, 90.5097, -45.2549) +"points": PackedVector2Array(0, 0, 0, 0, 67, -191, 0, 0, 0, 0, 67, 217) } -point_count = 3 +point_count = 2 -[sub_resource type="MultiMesh" id="MultiMesh_bq364"] +[sub_resource type="MultiMesh" id="MultiMesh_loj4l"] resource_local_to_scene = true -instance_count = 10 +instance_count = 41 mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(0.973052, 0.230584, 0, 4.88223, -0.230584, 0.973052, 0, -1.07852, 0.966958, 0.254934, 0, 14.5981, -0.254934, 0.966958, 0, -3.44424, 0.959557, 0.281516, 0, 24.2506, -0.281516, 0.959557, 0, -6.05645, 0.949848, 0.312712, 0, 33.8255, -0.312712, 0.949848, 0, -8.93951, 0.935813, 0.352498, 0, 43.2949, -0.352498, 0.935813, 0, -12.1518, 0.913086, 0.407766, 0, 52.606, -0.407766, 0.913086, 0, -15.7957, 0.869407, 0.494097, 0, 61.6456, -0.494097, 0.869407, 0, -20.0638, 0.753243, 0.657743, 0, 70.1223, -0.657743, 0.753243, 0, -25.3463, 0.706087, 0.708125, 0, 77.4166, -0.708125, 0.706087, 0, -32.1761, 0.707436, 0.706777, 0, 84.4802, -0.706777, 0.707436, 0, -39.2547) +buffer = PackedFloat32Array(-4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -186, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -176, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -166, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -156, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -146, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -136, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -126, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -116, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -106, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -96, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -86, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -76, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -66, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -56, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -46, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -36, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -26, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -16, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, -5.99998, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 4.00001, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 14, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 24, -1.47422e-06, -1, 0, 67, 1, -1.47422e-06, 0, 34, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 44, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 54, -1.47422e-06, -1, 0, 67, 1, -1.47422e-06, 0, 64, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 74, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 84, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 94, -1.47422e-06, -1, 0, 67, 1, -1.47422e-06, 0, 104, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 114, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 124, -1.47422e-06, -1, 0, 67, 1, -1.47422e-06, 0, 134, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 144, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 154, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 164, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 174, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 184, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 194, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 204, -4.37114e-08, -1, 0, 67, 1, -4.37114e-08, 0, 214) -[sub_resource type="Curve2D" id="Curve2D_ys6kh"] +[sub_resource type="Curve2D" id="Curve2D_7rple"] resource_local_to_scene = true _data = { -"points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 79.196, -3.05176e-05) +"points": PackedVector2Array(0, 0, 0, 0, 103, -40, 0, 0, 0, 0, 103, -12) } point_count = 2 -[sub_resource type="MultiMesh" id="MultiMesh_nrtpx"] -resource_local_to_scene = true -instance_count = 8 -mesh = SubResource("ArrayMesh_umy7o") -buffer = PackedFloat32Array(1, 3.85343e-07, 0, 5, -3.85343e-07, 1, 0, -1.92671e-06, 1, 3.85343e-07, 0, 15, -3.85343e-07, 1, 0, -5.78014e-06, 1, 3.85343e-07, 0, 25, -3.85343e-07, 1, 0, -9.63357e-06, 1, 3.85343e-07, 0, 35, -3.85343e-07, 1, 0, -1.3487e-05, 1, 3.85343e-07, 0, 45, -3.85343e-07, 1, 0, -1.73404e-05, 1, 3.85343e-07, 0, 55, -3.85343e-07, 1, 0, -2.11938e-05, 1, 3.85343e-07, 0, 65, -3.85343e-07, 1, 0, -2.50473e-05, 1, 3.85342e-07, 0, 75, -3.85342e-07, 1, 0, -2.89007e-05) - [node name="Level2" type="Node2D"] +position = Vector2(-7, 24) [node name="CanvasLayer" type="CanvasLayer" parent="."] @@ -147,194 +174,137 @@ size_flags_vertical = 3 [node name="Tracks" type="Node2D" parent="."] script = ExtResource("2_ai76e") -[node name="Track" parent="Tracks" instance=ExtResource("3_ud27o")] -position = Vector2(160, 96) -curve = SubResource("Curve2D_mn1f5") - -[node name="TrackSwitch2" parent="Tracks" instance=ExtResource("4_iman8")] -position = Vector2(392, 416) -rotation = -0.785398 - -[node name="LeftTrack" parent="Tracks/TrackSwitch2" index="0"] -curve = SubResource("Curve2D_wvr62") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_2dy52") - -[node name="HeadPoint" parent="Tracks/TrackSwitch2/LeftTrack" index="2"] -rotation = 0.0587565 - -[node name="TailPoint" parent="Tracks/TrackSwitch2/LeftTrack" index="3"] -position = Vector2(96.1665, 5.65692) -rotation = 0.0587565 -progress = 96.3327 - -[node name="TrackLine" parent="Tracks/TrackSwitch2/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4.13215, 0.243071, 8.87474, 0.52205, 11.7919, 0.693649, 15.026, 0.883894, 18.5419, 1.09071, 22.3042, 1.31203, 26.2779, 1.54578, 30.4277, 1.78988, 34.7183, 2.04228, 39.1146, 2.30089, 43.5813, 2.56364, 48.0832, 2.82846, 52.5852, 3.09328, 57.0519, 3.35603, 61.4482, 3.61464, 65.7388, 3.86704, 69.8886, 4.11114, 73.8623, 4.34489, 77.6246, 4.56621, 81.1405, 4.77303, 84.3746, 4.96327, 87.2918, 5.13487, 92.0343, 5.41385, 96.1665, 5.65692) - -[node name="Pointer" parent="Tracks/TrackSwitch2/LeftTrack" index="5"] -position = Vector2(66.6506, 3.92067) -rotation = 0.0587565 - -[node name="RightTrack" parent="Tracks/TrackSwitch2" index="1"] -curve = SubResource("Curve2D_q6d23") - -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_yocj8") - -[node name="HeadPoint" parent="Tracks/TrackSwitch2/RightTrack" index="2"] -rotation = 0.266253 - -[node name="TailPoint" parent="Tracks/TrackSwitch2/RightTrack" index="3"] -position = Vector2(96.1665, 50.9117) -rotation = 0.785398 -progress = 113.894 - -[node name="TrackLine" parent="Tracks/TrackSwitch2/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 1.93266, -0.00942437, 4.19414, 0.0229257, 7.18185, 0.119211, 10.7929, 0.308852, 14.9244, 0.621269, 19.4734, 1.08588, 24.337, 1.73211, 26.8547, 2.13253, 29.4124, 2.58938, 31.9974, 3.10635, 34.5967, 3.6871, 37.1975, 4.33533, 39.7869, 5.05471, 42.352, 5.84891, 44.8801, 6.72161, 47.3582, 7.67649, 49.7734, 8.71723, 52.113, 9.8475, 54.364, 11.071, 56.5137, 12.3914, 58.549, 13.8123, 62.2254, 16.9706, 65.5842, 20.3195, 68.8714, 23.5994, 72.0671, 26.7901, 75.1513, 29.8712, 78.1039, 32.8225, 80.9048, 35.6237, 83.534, 38.2544, 85.9716, 40.6943, 88.1974, 42.9233, 90.1915, 44.9209, 93.4041, 48.1409, 96.1665, 50.9117) - -[node name="Pointer" parent="Tracks/TrackSwitch2/RightTrack" index="5"] -position = Vector2(62.8641, 17.5763) -rotation = 0.783806 - -[node name="Track2" parent="Tracks" instance=ExtResource("3_ud27o")] -position = Vector2(728, 496) -curve = SubResource("Curve2D_3oakt") +[node name="Track" parent="Tracks" instance=ExtResource("3_1radm")] +position = Vector2(105, 143) +rotation = -1.5708 +curve = SubResource("Curve2D_ljegh") [node name="Track3" parent="Tracks" instance=ExtResource("3_ud27o")] -position = Vector2(224, 392) -curve = SubResource("Curve2D_cr413") +position = Vector2(425, 106) +curve = SubResource("Curve2D_komhc") -[node name="Track4" parent="Tracks" instance=ExtResource("3_ud27o")] -position = Vector2(544, 400) -curve = SubResource("Curve2D_gr1gd") +[node name="Track4" parent="Tracks" instance=ExtResource("3_1radm")] +position = Vector2(1060, 459) +rotation = 1.5708 +curve = SubResource("Curve2D_av25h") -[node name="Track5" parent="Tracks" instance=ExtResource("3_ud27o")] -position = Vector2(432, 256) -curve = SubResource("Curve2D_ceqwe") -head_signal_enabled = true +[node name="Track5" parent="Tracks" instance=ExtResource("5_2sq2s")] +position = Vector2(788, 587) +rotation = -3.14159 +curve = SubResource("Curve2D_jdjub") +tail_signal_enabled = true [node name="MultiMeshInstance2D" parent="Tracks/Track5" index="1"] -multimesh = SubResource("MultiMesh_wannq") - -[node name="HeadPoint" parent="Tracks/Track5" index="2"] -position = Vector2(-64, -48) -rotation = 2.24554 +multimesh = SubResource("MultiMesh_8iosm") -[node name="SignalButton" parent="Tracks/Track5/HeadPoint" index="1"] +[node name="SignalButton" parent="Tracks/Track5/TailPoint" index="1"] visible = true -offset_left = -15.6174 -offset_top = 12.4941 -offset_right = 508.383 -offset_bottom = 532.494 -rotation = -3.14159 - -[node name="TailPoint" parent="Tracks/Track5" index="3"] -position = Vector2(280, 104) -rotation = 2.55852 -progress = 376.561 [node name="TrackLine" parent="Tracks/Track5" index="4"] -points = PackedVector2Array(-64, -48, -60.7862, -45.4272, -58.7843, -44.3351, -56.3363, -43.0758, -53.4588, -41.6555, -50.1685, -40.0804, -46.4819, -38.3566, -42.4157, -36.4905, -37.9866, -34.4882, -35.6411, -33.4379, -33.2111, -32.3558, -30.6986, -31.2429, -28.1058, -30.0997, -25.4347, -28.9271, -22.6874, -27.7259, -19.866, -26.4968, -16.9726, -25.2407, -14.0092, -23.9583, -10.9779, -22.6503, -7.88081, -21.3175, -4.71999, -19.9608, -1.49752, -18.5809, 1.78452, -17.1785, 5.12406, -15.7545, 8.51902, -14.3096, 11.9673, -12.8445, 15.4669, -11.3602, 19.0156, -9.85723, 22.6114, -8.33652, 26.2523, -6.79879, 29.9361, -5.24483, 33.6607, -3.6754, 37.4242, -2.09128, 41.2244, -0.493237, 45.0592, 1.11794, 48.9265, 2.74149, 52.8243, 4.37662, 56.7506, 6.02257, 60.7031, 7.67857, 64.6799, 9.34383, 68.6789, 11.0176, 72.6979, 12.6991, 76.7349, 14.3875, 80.7879, 16.0821, 84.8547, 17.7821, 88.9333, 19.4867, 93.0216, 21.1951, 97.1175, 22.9067, 101.219, 24.6205, 105.324, 26.3359, 109.43, 28.052, 113.536, 29.768, 117.638, 31.4833, 121.736, 33.197, 125.827, 34.9084, 129.909, 36.6166, 133.98, 38.3209, 138.038, 40.0206, 142.081, 41.7148, 146.106, 43.4028, 150.111, 45.0838, 154.096, 46.757, 158.057, 48.4217, 161.992, 50.0771, 165.899, 51.7223, 169.777, 53.3567, 173.622, 54.9795, 177.434, 56.5898, 181.21, 58.187, 184.947, 59.7702, 188.645, 61.3386, 192.3, 62.8915, 195.911, 64.4282, 199.475, 65.9477, 202.991, 67.4495, 206.456, 68.9326, 209.869, 70.3963, 213.227, 71.8399, 216.528, 73.2625, 219.77, 74.6635, 222.952, 76.0419, 226.07, 77.3971, 229.123, 78.7282, 232.109, 80.0345, 235.026, 81.3153, 237.871, 82.5697, 240.643, 83.797, 243.339, 84.9963, 245.958, 86.167, 248.497, 87.3082, 250.954, 88.4192, 253.327, 89.4992, 255.615, 90.5474, 259.924, 92.5453, 263.865, 94.4069, 267.42, 96.1258, 270.573, 97.696, 273.308, 99.1111, 277.457, 101.452, 280, 104) +points = PackedVector2Array(-136, 0, -132, 0, -128, 0, -126.627, 0.0137973, -122.864, 0.118734, -120.253, 0.235165, -117.244, 0.410126, -113.906, 0.655529, -110.303, 0.98329, -106.504, 1.40532, -102.574, 1.93354, -98.581, 2.57986, -94.5911, 3.3562, -90.6714, 4.27447, -86.8884, 5.34658, -83.309, 6.58445, -80, 8, -76.8707, 9.59523, -73.7991, 11.3409, -70.8052, 13.2021, -67.9089, 15.1438, -65.13, 17.1311, -62.4884, 19.129, -60.004, 21.1025, -57.6968, 23.0167, -55.5865, 24.8367, -53.693, 26.5274, -50.6363, 29.3813, -48, 32, -46.75, 33.25, -44, 36, -41.25, 38.75, -40, 40) [node name="Track6" parent="Tracks" instance=ExtResource("3_ud27o")] -position = Vector2(832, 168) -curve = SubResource("Curve2D_se16d") -tail_signal_enabled = true - -[node name="MultiMeshInstance2D" parent="Tracks/Track6" index="1"] -multimesh = SubResource("MultiMesh_rdbsw") +position = Vector2(556, 405) +curve = SubResource("Curve2D_kwp65") -[node name="HeadPoint" parent="Tracks/Track6" index="2"] -position = Vector2(-108, -72) -rotation = 2.26554 +[node name="Track7" parent="Tracks" instance=ExtResource("3_1radm")] +position = Vector2(932, 15) +curve = SubResource("Curve2D_rp5i0") -[node name="TailPoint" parent="Tracks/Track6" index="3"] -position = Vector2(-72, 24) -rotation = 2.1294 -progress = 169.049 +[node name="Track8" parent="Tracks" instance=ExtResource("6_e3k5x")] +position = Vector2(788, 15) +rotation = -3.14159 +curve = SubResource("Curve2D_75ew0") -[node name="SignalButton" parent="Tracks/Track6/TailPoint" index="1"] -visible = true +[node name="Track9" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(575, 152) +curve = SubResource("Curve2D_kliyo") -[node name="TrackLine" parent="Tracks/Track6" index="4"] -points = PackedVector2Array(-108, -72, -104.938, -72.0286, -101.333, -72.0756, -96.6273, -72.0491, -93.9291, -71.986, -91.036, -71.8778, -87.9747, -71.7154, -84.7717, -71.4901, -81.4537, -71.1928, -78.0475, -70.8147, -74.5795, -70.3467, -71.0765, -69.78, -67.565, -69.1057, -64.0719, -68.3148, -60.6235, -67.3984, -57.2467, -66.3475, -53.9681, -65.1532, -50.8142, -63.8067, -47.8117, -62.2989, -44.9874, -60.6209, -42.3677, -58.7639, -39.9794, -56.7188, -37.8491, -54.4768, -36.0035, -52.0289, -34.4691, -49.3662, -33.2726, -46.4798, -32.4407, -43.3607, -32, -40, -31.893, -36.5463, -32.034, -33.1562, -32.4067, -29.8327, -32.9953, -26.5788, -33.7836, -23.3976, -34.7557, -20.292, -35.8955, -17.2651, -37.1869, -14.3199, -38.614, -11.4594, -40.1608, -8.68668, -41.8111, -6.00471, -43.5489, -3.41654, -45.3583, -0.925169, -47.2231, 1.46637, -49.1274, 3.75506, -51.0551, 5.93789, -52.9901, 8.01182, -54.9166, 9.97384, -56.8183, 11.8209, -58.6793, 13.5501, -62.2151, 16.6424, -65.3956, 19.2267, -68.0927, 21.2788, -70.1779, 22.7745, -72, 24) +[node name="Track11" parent="Tracks" instance=ExtResource("3_1radm")] +position = Vector2(233, 587) +rotation = 3.14159 +curve = SubResource("Curve2D_qyjxh") -[node name="Track7" parent="Tracks" instance=ExtResource("3_ud27o")] -position = Vector2(512, 304) -curve = SubResource("Curve2D_wpc1j") +[node name="Track12" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(369, 468) +curve = SubResource("Curve2D_7nvmt") -[node name="TrackSwitch" parent="Tracks" instance=ExtResource("4_iman8")] -position = Vector2(768, 416) -rotation = -2.35619 +[node name="TrackSwitch" parent="Tracks" instance=ExtResource("7_rhne7")] +position = Vector2(257, 587) direction = 0 -[node name="LeftTrack" parent="Tracks/TrackSwitch" index="0"] -z_index = 1 -curve = SubResource("Curve2D_r25qh") +[node name="TrackSwitch2" parent="Tracks" instance=ExtResource("8_j2k0u")] +position = Vector2(257, 15) + +[node name="LeftTrack" parent="Tracks/TrackSwitch2" index="0"] +curve = SubResource("Curve2D_b5u6y") -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/LeftTrack" index="1"] -multimesh = SubResource("MultiMesh_bq364") +[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/LeftTrack" index="1"] +multimesh = SubResource("MultiMesh_1tu7u") -[node name="HeadPoint" parent="Tracks/TrackSwitch/LeftTrack" index="2"] -rotation = -0.367174 +[node name="TrackLine" parent="Tracks/TrackSwitch2/LeftTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40482, 0.0324149, 13.2451, 0.253994, 15.9031, 0.494002, 18.9595, 0.851238, 22.3442, 1.34902, 25.9869, 2.01065, 29.8175, 2.85945, 33.7659, 3.91873, 37.7619, 5.2118, 41.7353, 6.76198, 45.6159, 8.59258, 49.3337, 10.7269, 52.8185, 13.1883, 56, 16, 58.912, 18.9016, 61.635, 21.6168, 64.1692, 24.1457, 66.5147, 26.488, 68.6717, 28.6437, 70.6403, 30.6125, 74.0131, 33.9893, 76.6342, 36.6175, 78.5049, 38.496, 80, 40, 81.0312, 41.0312, 83.75, 43.75, 85.5664, 45.5664, 87.5938, 47.5938, 89.7617, 49.7617, 92, 52, 94.2383, 54.2383, 96.4062, 56.4062, 98.4336, 58.4336, 100.25, 60.25, 102.969, 62.9688, 104, 64) -[node name="TailPoint" parent="Tracks/TrackSwitch/LeftTrack" index="3"] -position = Vector2(90.5097, -45.2549) -rotation = -0.785398 -progress = 103.506 +[node name="Pointer" parent="Tracks/TrackSwitch2/LeftTrack" index="5"] +position = Vector2(81.3648, 41.3648) -[node name="TrackLine" parent="Tracks/TrackSwitch/LeftTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 2.48258, -0.535236, 5.37148, -1.18929, 9.16829, -2.08763, 13.7301, -3.22028, 16.2533, -3.87134, 18.9141, -4.57723, 21.6948, -5.33669, 24.5774, -6.14848, 27.5441, -7.01135, 30.577, -7.92405, 33.6584, -8.88533, 36.7702, -9.89393, 39.8947, -10.9486, 43.014, -12.0481, 46.1102, -13.1912, 49.1656, -14.3767, 52.1621, -15.6032, 55.082, -16.8695, 57.9074, -18.1744, 60.6205, -19.5167, 63.2033, -20.895, 65.6381, -22.3082, 67.9069, -23.755, 69.9919, -25.2341, 73.5391, -28.2843, 76.451, -31.2075, 79.0095, -33.7742, 81.2373, -36.0078, 83.1573, -37.9313, 86.1656, -40.9407, 88.2169, -42.9877, 90.5097, -45.2549) +[node name="RightTrack" parent="Tracks/TrackSwitch2" index="1"] +curve = SubResource("Curve2D_qar2q") -[node name="Pointer" parent="Tracks/TrackSwitch/LeftTrack" index="5"] -visible = true -position = Vector2(63.1927, -20.8891) -rotation = -0.507123 +[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch2/RightTrack" index="1"] +multimesh = SubResource("MultiMesh_1gawn") -[node name="RightTrack" parent="Tracks/TrackSwitch" index="1"] -z_index = 0 -curve = SubResource("Curve2D_ys6kh") +[node name="TrackLine" parent="Tracks/TrackSwitch2/RightTrack" index="4"] +points = PackedVector2Array(2.08165e-12, 2.08165e-12, 4, 1.04082e-12, 8, 0, 9.40643, 0.0316848, 13.2506, 0.251491, 15.911, 0.490416, 18.9699, 0.846545, 22.3569, 1.34327, 26.0017, 2.00397, 29.8339, 2.85206, 33.7832, 3.91091, 37.7793, 5.20392, 41.7519, 6.75447, 45.6305, 8.58597, 49.345, 10.7218, 52.8249, 13.1853, 56, 16, 58.8157, 19.0842, 61.28, 22.3095, 63.4163, 25.6289, 65.2481, 28.9955, 66.7988, 32.3625, 68.0918, 35.6828, 69.1505, 38.9097, 69.9984, 41.996, 70.6587, 44.895, 71.1551, 47.5597, 71.7494, 51.9985, 72, 56, 72, 60, 72, 64) -[node name="MultiMeshInstance2D" parent="Tracks/TrackSwitch/RightTrack" index="1"] -multimesh = SubResource("MultiMesh_nrtpx") +[node name="Pointer" parent="Tracks/TrackSwitch2/RightTrack" index="5"] +position = Vector2(68.3721, 36.4824) -[node name="HeadPoint" parent="Tracks/TrackSwitch/RightTrack" index="2"] -rotation = -3.85343e-07 +[node name="Button" parent="Tracks/TrackSwitch2" index="2"] +offset_top = 25.0 +offset_bottom = 73.0 -[node name="TailPoint" parent="Tracks/TrackSwitch/RightTrack" index="3"] -position = Vector2(79.196, -3.05176e-05) -rotation = -3.85343e-07 -progress = 79.196 +[node name="Track2" parent="Tracks" instance=ExtResource("3_ud27o")] +position = Vector2(262, 298) +curve = SubResource("Curve2D_3byt4") +head_signal_enabled = true -[node name="TrackLine" parent="Tracks/TrackSwitch/RightTrack" index="4"] -points = PackedVector2Array(2.08165e-12, 2.08165e-12, 3.40295, -1.3113e-06, 7.30861, -2.81632e-06, 9.71098, -3.74205e-06, 12.3744, -4.76837e-06, 15.2698, -5.8841e-06, 18.3682, -7.07805e-06, 21.6407, -8.33907e-06, 25.0581, -9.65596e-06, 28.5916, -1.10176e-05, 32.212, -1.24127e-05, 35.8905, -1.38301e-05, 39.598, -1.52588e-05, 43.3055, -1.66874e-05, 46.984, -1.81049e-05, 50.6044, -1.95e-05, 54.1379, -2.08616e-05, 57.5553, -2.21785e-05, 60.8278, -2.34395e-05, 63.9262, -2.46335e-05, 66.8216, -2.57492e-05, 69.485, -2.67755e-05, 71.8874, -2.77013e-05, 75.793, -2.92063e-05, 79.196, -3.05176e-05) +[node name="MultiMeshInstance2D" parent="Tracks/Track2" index="1"] +multimesh = SubResource("MultiMesh_loj4l") -[node name="Pointer" parent="Tracks/TrackSwitch/RightTrack" index="5"] -visible = false -position = Vector2(66.7695, -2.57291e-05) -rotation = -3.85343e-07 +[node name="HeadPoint" parent="Tracks/Track2" index="2"] +position = Vector2(67, -191) +rotation = 1.5708 -[node name="Button" parent="Tracks/TrackSwitch" index="2"] -offset_left = -39.5979 -offset_top = 28.2843 -offset_right = 36.4021 -offset_bottom = 76.2843 -rotation = -1.5708 -button_pressed = false +[node name="SignalButton" parent="Tracks/Track2/HeadPoint" index="1"] +visible = true +offset_left = -13.0 +offset_top = 41.0 +offset_right = 511.0 +offset_bottom = 561.0 + +[node name="TailPoint" parent="Tracks/Track2" index="3"] +position = Vector2(67, 217) +rotation = 1.5708 +progress = 408.0 + +[node name="TrackLine" parent="Tracks/Track2" index="4"] +points = PackedVector2Array(67, -191, 67, -186.418, 67, -183.918, 67, -180.915, 67, -177.425, 67, -173.469, 67, -169.064, 67, -164.23, 67, -161.658, 67, -158.985, 67, -156.214, 67, -153.348, 67, -150.388, 67, -147.337, 67, -144.197, 67, -140.971, 67, -137.661, 67, -134.269, 67, -130.798, 67, -127.25, 67, -123.627, 67, -119.932, 67, -116.167, 67, -112.333, 67, -108.435, 67, -104.474, 67, -100.452, 67, -96.3711, 67, -92.2346, 67, -88.0444, 67, -83.8028, 67, -79.5122, 67, -75.1749, 67, -70.7933, 67, -66.3696, 67, -61.9062, 67, -57.4055, 67, -52.8698, 67, -48.3014, 67, -43.7026, 67, -39.0759, 67, -34.4234, 67, -29.7476, 67, -25.0508, 67, -20.3353, 67, -15.6034, 67, -10.8576, 67, -6.1001, 67, -1.33324, 67, 3.44061, 67, 8.21914, 67, 13, 67, 17.7809, 67, 22.5594, 67, 27.3332, 67, 32.1001, 67, 36.8576, 67, 41.6034, 67, 46.3353, 67, 51.0508, 67, 55.7476, 67, 60.4234, 67, 65.0759, 67, 69.7026, 67, 74.3014, 67, 78.8698, 67, 83.4055, 67, 87.9062, 67, 92.3696, 67, 96.7933, 67, 101.175, 67, 105.512, 67, 109.803, 67, 114.044, 67, 118.235, 67, 122.371, 67, 126.452, 67, 130.474, 67, 134.435, 67, 138.333, 67, 142.167, 67, 145.932, 67, 149.627, 67, 153.25, 67, 156.798, 67, 160.269, 67, 163.661, 67, 166.971, 67, 170.197, 67, 173.337, 67, 176.388, 67, 179.348, 67, 182.214, 67, 184.985, 67, 187.658, 67, 190.23, 67, 195.064, 67, 199.469, 67, 203.425, 67, 206.915, 67, 209.918, 67, 212.418, 67, 217) [node name="TrainStation" parent="." instance=ExtResource("5_jlsfp")] -position = Vector2(424, 96) +position = Vector2(1060, 151) +rotation = 1.5708 [node name="TrainStation2" parent="." instance=ExtResource("5_jlsfp")] -position = Vector2(424, 496) +position = Vector2(105, 151) +rotation = 1.5708 [node name="TrainRoute" parent="." node_paths=PackedStringArray("tracks_controller") instance=ExtResource("7_p34jf")] position = Vector2(354.396, 151.157) tracks_controller = NodePath("../Tracks") car_count = 2 -color = Color(1, 0.929412, 0.619608, 1) -route_name = "Icarus" +color = Color(1, 0.627451, 0.572549, 1) +route_name = "Beziani" [node name="TrainRouteStop" parent="TrainRoute" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] station = NodePath("../../TrainStation") @@ -343,10 +313,11 @@ station = NodePath("../../TrainStation") station = NodePath("../../TrainStation2") [node name="TrainRoute2" parent="." node_paths=PackedStringArray("tracks_controller") instance=ExtResource("7_p34jf")] +position = Vector2(947.649, 558.514) tracks_controller = NodePath("../Tracks") car_count = 2 -color = Color(0.203922, 0.203922, 0.203922, 1) -route_name = "Gargantua" +color = Color(0.509804, 0.470588, 0.211765, 1) +route_name = "Maple Leaf" [node name="TrainRouteStop" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] station = NodePath("../../TrainStation2") @@ -354,11 +325,12 @@ station = NodePath("../../TrainStation2") [node name="TrainRouteStop2" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("8_xs6w7")] station = NodePath("../../TrainStation") +[node name="Track" parent="." instance=ExtResource("3_ud27o")] +position = Vector2(226, 119) +curve = SubResource("Curve2D_7rple") + +[editable path="Tracks/Track5"] [editable path="Tracks/TrackSwitch2"] [editable path="Tracks/TrackSwitch2/LeftTrack"] [editable path="Tracks/TrackSwitch2/RightTrack"] -[editable path="Tracks/Track5"] -[editable path="Tracks/Track6"] -[editable path="Tracks/TrackSwitch"] -[editable path="Tracks/TrackSwitch/LeftTrack"] -[editable path="Tracks/TrackSwitch/RightTrack"] +[editable path="Tracks/Track2"] diff --git a/scenes/MainMenu.tscn b/scenes/MainMenu.tscn index 6ce97fa..2f52708 100644 --- a/scenes/MainMenu.tscn +++ b/scenes/MainMenu.tscn @@ -3,7 +3,7 @@ [ext_resource type="Theme" uid="uid://dsugnc7jkb7q5" path="res://themes/main.tres" id="1_05twq"] [ext_resource type="Script" path="res://scripts/MainMenu.gd" id="2_6abnn"] [ext_resource type="Texture2D" uid="uid://c2udkkfuwbis0" path="res://assets/warn.png" id="2_ca7mh"] -[ext_resource type="PackedScene" uid="uid://bhjkcskfwdbug" path="res://scenes/Level1.tscn" id="3_nclby"] +[ext_resource type="PackedScene" uid="uid://f00y8rjii1h1" path="res://scenes/Level1.tscn" id="3_nclby"] [node name="MainMenu" type="CenterContainer"] anchors_preset = 15 From a2af1ad047beec72f4615d82ce3b72d210354e5c Mon Sep 17 00:00:00 2001 From: mineiwik <29404520+mineiwik@users.noreply.github.com> Date: Mon, 2 Oct 2023 19:47:14 +0200 Subject: [PATCH 6/7] add camera to level 3 --- scenes/Level3.tscn | 88 ++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/scenes/Level3.tscn b/scenes/Level3.tscn index 768aa96..4160158 100644 --- a/scenes/Level3.tscn +++ b/scenes/Level3.tscn @@ -14,147 +14,147 @@ [ext_resource type="PackedScene" uid="uid://c7r1kx700h11u" path="res://prefabs/TrainRoute.tscn" id="11_j0e0o"] [ext_resource type="PackedScene" uid="uid://c4ncuqtx6xes" path="res://prefabs/TrainRouteStop.tscn" id="12_6ai6h"] -[sub_resource type="Curve2D" id="Curve2D_p4tka"] +[sub_resource type="Curve2D" id="Curve2D_3vmuy"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -354, 0, 0, 0, 0, 0, -78, 0) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_3qq01"] +[sub_resource type="Curve2D" id="Curve2D_lwx1y"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 101, 0) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_en8my"] +[sub_resource type="Curve2D" id="Curve2D_yji06"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 64, 0, -15.9835, -15.9593, 15.9835, 15.9593, 112, 16, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 212) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_ju6ir"] +[sub_resource type="Curve2D" id="Curve2D_55ex6"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 61, 140, 0, 0, 0, 0, 262, -62) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_u625j"] +[sub_resource type="Curve2D" id="Curve2D_3jiyh"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -78, 279, 0, 0, 0, 0, -7, 208) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_pksan"] +[sub_resource type="Curve2D" id="Curve2D_eae8n"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 22, -23, 0, 0, 0, 0, 22, 18) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_bptob"] +[sub_resource type="Curve2D" id="Curve2D_i6eg1"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 72) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_gso6i"] +[sub_resource type="Curve2D" id="Curve2D_1uajm"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -29, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 162) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_seh53"] +[sub_resource type="Curve2D" id="Curve2D_oahqr"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -136, 0, 0, 0, 0, 0, -128, 0, -16.8086, -8.04456, 16.8086, 8.04456, -80, 8, 0, 0, 0, 0, -48, 32, 0, 0, 0, 0, -40, 40) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_6vwi8"] +[sub_resource type="Curve2D" id="Curve2D_qbifc"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -33, -42, 0, 0, 0, 0, 12, -42) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_4k6lf"] +[sub_resource type="Curve2D" id="Curve2D_yxnfk"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 21, -45, 0, 0, 0, 0, 63, -45) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_gqx23"] +[sub_resource type="Curve2D" id="Curve2D_im6ce"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 17, -19, 0, 0, 0, 0, 57, -19) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_5oulk"] +[sub_resource type="Curve2D" id="Curve2D_lacy8"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 72) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_qf4pl"] +[sub_resource type="Curve2D" id="Curve2D_nj8hp"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_j3865"] +[sub_resource type="Curve2D" id="Curve2D_nywvt"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -222, 0, 0, 0, 0, 0, 256, 2.08165e-12) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_idg1o"] +[sub_resource type="Curve2D" id="Curve2D_8lb8a"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -40.059, -39.9231, 40.059, 39.9231, 88, 40, 0, 0, 0, 0, 128, 128, 0, 0, 0, 0, 128, 136) } point_count = 5 -[sub_resource type="Curve2D" id="Curve2D_dg2l1"] +[sub_resource type="Curve2D" id="Curve2D_fi5ru"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -5, -1, 0, 0, 0, 0, 133, -1) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_rwruj"] +[sub_resource type="Curve2D" id="Curve2D_etloc"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -10, -31, 0, 0, 0, 0, -10, 18) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_8uhmf"] +[sub_resource type="Curve2D" id="Curve2D_enmx7"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, -12, -41, 0, 0, 0, 0, -12, 27) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_2jm1u"] +[sub_resource type="Curve2D" id="Curve2D_qc53d"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 2.08165e-12, 2.08165e-12, 0, 0, 0, 0, 489, 0) } point_count = 2 -[sub_resource type="Curve2D" id="Curve2D_kqv2g"] +[sub_resource type="Curve2D" id="Curve2D_p3ei3"] resource_local_to_scene = true _data = { "points": PackedVector2Array(0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 64, 0, -19.5338, -20.3622, 19.5338, 20.3622, 108, 20, 0, 0, 0, 0, 128, 64, 0, 0, 0, 0, 128, 106) @@ -176,26 +176,26 @@ script = ExtResource("1_biqvw") [node name="Track" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(864, 89) -curve = SubResource("Curve2D_p4tka") +curve = SubResource("Curve2D_3vmuy") [node name="Track2" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(864, 89) -curve = SubResource("Curve2D_3qq01") +curve = SubResource("Curve2D_lwx1y") [node name="Track3" parent="Tracks" instance=ExtResource("3_0tpkn")] position = Vector2(908, 89) -curve = SubResource("Curve2D_en8my") +curve = SubResource("Curve2D_yji06") [node name="TrackSwitch" parent="Tracks" instance=ExtResource("4_6tlvt")] position = Vector2(786, 89) [node name="Track4" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(548, 311) -curve = SubResource("Curve2D_ju6ir") +curve = SubResource("Curve2D_55ex6") [node name="Track17" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(548, 311) -curve = SubResource("Curve2D_u625j") +curve = SubResource("Curve2D_3jiyh") [node name="TrackSwitch2" parent="Tracks" instance=ExtResource("6_so35w")] position = Vector2(858, 161) @@ -203,17 +203,17 @@ rotation = 1.5708 [node name="Track5" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(836, 280) -curve = SubResource("Curve2D_pksan") +curve = SubResource("Curve2D_eae8n") [node name="Track6" parent="Tracks" instance=ExtResource("3_0tpkn")] position = Vector2(858, 542) rotation = 1.5708 -curve = SubResource("Curve2D_bptob") +curve = SubResource("Curve2D_i6eg1") [node name="Track7" parent="Tracks" instance=ExtResource("7_4d6sr")] position = Vector2(1036, 630) rotation = 1.5708 -curve = SubResource("Curve2D_gso6i") +curve = SubResource("Curve2D_1uajm") [node name="TrackSwitch3" parent="Tracks" instance=ExtResource("6_so35w")] position = Vector2(690, 670) @@ -221,7 +221,7 @@ position = Vector2(690, 670) [node name="Track8" parent="Tracks" instance=ExtResource("5_ehsh7")] position = Vector2(738, 758) rotation = 3.14159 -curve = SubResource("Curve2D_seh53") +curve = SubResource("Curve2D_oahqr") [node name="TrackSwitch4" parent="Tracks" instance=ExtResource("8_vug4q")] position = Vector2(646, 670) @@ -229,32 +229,32 @@ rotation = 3.14159 [node name="Track9" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(678, 712) -curve = SubResource("Curve2D_6vwi8") +curve = SubResource("Curve2D_qbifc") [node name="Track10" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(319, 683) -curve = SubResource("Curve2D_4k6lf") +curve = SubResource("Curve2D_yxnfk") [node name="TrackSwitch5" parent="Tracks" instance=ExtResource("9_u1i1j")] position = Vector2(382, 638) [node name="Track11" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(461, 657) -curve = SubResource("Curve2D_gqx23") +curve = SubResource("Curve2D_im6ce") [node name="Track12" parent="Tracks" instance=ExtResource("3_0tpkn")] position = Vector2(96, 638) rotation = 3.14159 -curve = SubResource("Curve2D_5oulk") +curve = SubResource("Curve2D_lacy8") [node name="Track13" parent="Tracks" instance=ExtResource("7_4d6sr")] position = Vector2(32, 702) rotation = 3.14159 -curve = SubResource("Curve2D_qf4pl") +curve = SubResource("Curve2D_nj8hp") [node name="Track14" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(262, 702) -curve = SubResource("Curve2D_j3865") +curve = SubResource("Curve2D_nywvt") [node name="TrackSwitch6" parent="Tracks" instance=ExtResource("8_vug4q")] position = Vector2(-64, 438) @@ -263,11 +263,11 @@ rotation = 1.5708 [node name="Track15" parent="Tracks" instance=ExtResource("7_4d6sr")] position = Vector2(-64, 217) rotation = -1.5708 -curve = SubResource("Curve2D_idg1o") +curve = SubResource("Curve2D_8lb8a") [node name="Track16" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(77, 90) -curve = SubResource("Curve2D_dg2l1") +curve = SubResource("Curve2D_fi5ru") [node name="TrackSwitch7" parent="Tracks" instance=ExtResource("4_6tlvt")] position = Vector2(-64, 389) @@ -275,15 +275,15 @@ rotation = -1.5708 [node name="Track18" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(-54, 420) -curve = SubResource("Curve2D_rwruj") +curve = SubResource("Curve2D_etloc") [node name="Track19" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(-52, 266) -curve = SubResource("Curve2D_8uhmf") +curve = SubResource("Curve2D_enmx7") [node name="Track20" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(8, 317) -curve = SubResource("Curve2D_2jm1u") +curve = SubResource("Curve2D_qc53d") [node name="TrackSwitch8" parent="Tracks" instance=ExtResource("9_u1i1j")] position = Vector2(541, 519) @@ -291,7 +291,7 @@ rotation = -0.785398 [node name="Track21" parent="Tracks" instance=ExtResource("3_0tpkn")] position = Vector2(441, 317) -curve = SubResource("Curve2D_kqv2g") +curve = SubResource("Curve2D_p3ei3") [node name="TrainStation" parent="." instance=ExtResource("1_dtmcd")] position = Vector2(210, 89) @@ -327,3 +327,7 @@ station = NodePath("../../TrainStation3") [node name="TrainRouteStop2" parent="TrainRoute2" node_paths=PackedStringArray("station") instance=ExtResource("12_6ai6h")] station = NodePath("../../TrainStation4") + +[node name="Camera2D" type="Camera2D" parent="."] +offset = Vector2(500, 400) +zoom = Vector2(0.8, 0.8) From ffee287511c8acac25f2a9921a43fa471a0e96ef Mon Sep 17 00:00:00 2001 From: mineiwik <29404520+mineiwik@users.noreply.github.com> Date: Mon, 2 Oct 2023 19:50:17 +0200 Subject: [PATCH 7/7] add signal to level 3 --- scenes/Level3.tscn | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/scenes/Level3.tscn b/scenes/Level3.tscn index 4160158..d58250b 100644 --- a/scenes/Level3.tscn +++ b/scenes/Level3.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=35 format=3 uid="uid://bdxckbbvt81uj"] +[gd_scene load_steps=37 format=3 uid="uid://bdxckbbvt81uj"] [ext_resource type="Script" path="res://scripts/TracksController.gd" id="1_biqvw"] [ext_resource type="PackedScene" uid="uid://ctghq2lknpslx" path="res://prefabs/TrainStation.tscn" id="1_dtmcd"] @@ -112,6 +112,25 @@ _data = { } point_count = 5 +[sub_resource type="ArrayMesh" id="ArrayMesh_hmeh0"] +_surfaces = [{ +"2d": true, +"aabb": AABB(-1.5, -13.5, 0, 3.00001, 27, 0), +"attribute_data": PackedByteArray(0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 0), +"format": 33558545, +"index_count": 6, +"index_data": PackedByteArray(3, 0, 0, 0, 1, 0, 1, 0, 2, 0, 3, 0), +"primitive": 3, +"vertex_count": 4, +"vertex_data": PackedByteArray(0, 0, 192, 63, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 65, 0, 0, 192, 191, 0, 0, 88, 193, 0, 0, 192, 63, 0, 0, 88, 193) +}] + +[sub_resource type="MultiMesh" id="MultiMesh_no5fn"] +resource_local_to_scene = true +instance_count = 21 +mesh = SubResource("ArrayMesh_hmeh0") +buffer = PackedFloat32Array(0.999885, -0.0151968, 0, -3, 0.0151968, 0.999885, 0, 0, 0.991147, -0.132768, 0, 6.97848, 0.132768, 0.991147, 0, 0.514451, 0.97704, -0.213057, 0, 16.8568, 0.213057, 0.97704, 0, 2.04871, 0.9591, -0.283066, 0, 26.585, 0.283066, 0.9591, 0, 4.35361, 0.936153, -0.351594, 0, 36.1225, 0.351594, 0.936153, 0, 7.35176, 0.909868, -0.414897, 0, 45.4217, 0.414897, 0.909868, 0, 11.0232, 0.876674, -0.481086, 0, 54.4353, 0.481086, 0.876674, 0, 15.3479, 0.840183, -0.542304, 0, 63.113, 0.542304, 0.840183, 0, 20.312, 0.798809, -0.601584, 0, 71.4131, 0.601584, 0.798809, 0, 25.8841, 0.755105, -0.655604, 0, 79.2886, 0.655604, 0.755105, 0, 32.0419, 0.704947, -0.70926, 0, 86.7109, 0.70926, 0.704947, 0, 38.739, 0.649122, -0.760684, 0, 93.6308, 0.760684, 0.649122, 0, 45.9549, 0.595398, -0.803431, 0, 99.9968, 0.803431, 0.595398, 0, 53.6636, 0.53559, -0.844478, 0, 105.802, 0.844478, 0.53559, 0, 61.8023, 0.471631, -0.881796, 0, 111.004, 0.881796, 0.471631, 0, 70.3398, 0.406769, -0.913531, 0, 115.554, 0.913531, 0.406769, 0, 79.242, 0.340047, -0.940409, 0, 119.464, 0.940409, 0.340047, 0, 88.4434, 0.27268, -0.962105, 0, 122.695, 0.962105, 0.27268, 0, 97.9044, 0.199982, -0.9798, 0, 125.244, 0.9798, 0.199982, 0, 107.572, 0.120989, -0.992654, 0, 127.039, 0.992654, 0.120989, 0, 117.406, 0.00455207, -0.99999, 0, 127.977, 0.99999, 0.00455207, 0, 127.356) + [sub_resource type="Curve2D" id="Curve2D_nywvt"] resource_local_to_scene = true _data = { @@ -251,6 +270,20 @@ curve = SubResource("Curve2D_lacy8") position = Vector2(32, 702) rotation = 3.14159 curve = SubResource("Curve2D_nj8hp") +tail_signal_enabled = true + +[node name="MultiMeshInstance2D" parent="Tracks/Track13" index="1"] +multimesh = SubResource("MultiMesh_no5fn") + +[node name="SignalButton" parent="Tracks/Track13/TailPoint" index="1"] +visible = true +offset_left = 12.0004 +offset_top = -40.999 +offset_right = 536.0 +offset_bottom = 479.001 + +[node name="TrackLine" parent="Tracks/Track13" index="4"] +points = PackedVector2Array(-8, 0, -4, 0, 0, 0, 2.13821, 0.0812791, 4.6883, 0.270262, 8.1167, 0.635814, 12.3416, 1.23619, 14.7272, 1.64265, 17.2813, 2.12965, 19.9936, 2.70449, 22.854, 3.37445, 25.8521, 4.1468, 28.9779, 5.02884, 32.221, 6.02783, 35.5712, 7.15108, 39.0184, 8.40584, 42.5522, 9.79942, 46.1625, 11.3391, 49.8391, 13.0321, 53.5717, 14.8858, 57.3501, 16.9074, 61.1641, 19.1043, 65.0035, 21.4836, 68.858, 24.0528, 72.7174, 26.819, 76.5716, 29.7895, 80.4102, 32.9717, 82.3205, 34.6444, 84.2231, 36.3727, 86.1167, 38.1576, 88, 40, 89.8485, 41.8772, 91.6392, 43.765, 93.373, 45.6621, 95.0507, 47.5674, 98.2419, 51.397, 101.22, 55.2435, 103.993, 59.0966, 106.567, 62.9461, 108.95, 66.7814, 111.15, 70.5926, 113.173, 74.3691, 115.028, 78.1007, 116.721, 81.7771, 118.26, 85.3881, 119.653, 88.9233, 120.905, 92.3724, 122.026, 95.7251, 123.022, 98.9712, 123.901, 102.1, 124.669, 105.102, 125.335, 107.966, 125.906, 110.683, 126.389, 113.241, 126.791, 115.631, 127.383, 119.864, 127.741, 123.3, 127.924, 125.856, 128, 128, 128, 132, 128, 136) [node name="Track14" parent="Tracks" instance=ExtResource("2_xqhrk")] position = Vector2(262, 702) @@ -331,3 +364,5 @@ station = NodePath("../../TrainStation4") [node name="Camera2D" type="Camera2D" parent="."] offset = Vector2(500, 400) zoom = Vector2(0.8, 0.8) + +[editable path="Tracks/Track13"]