diff --git a/asset_dev/level/3x3quad.blend b/asset_dev/level/3x3quad.blend
new file mode 100644
index 0000000..23ca4d6
Binary files /dev/null and b/asset_dev/level/3x3quad.blend differ
diff --git a/asset_dev/level/airlock/airlock.blend b/asset_dev/level/airlock/airlock.blend
new file mode 100644
index 0000000..584746c
Binary files /dev/null and b/asset_dev/level/airlock/airlock.blend differ
diff --git a/asset_dev/level/corner/corner.blend b/asset_dev/level/corner/corner.blend
new file mode 100644
index 0000000..3ccc6a2
Binary files /dev/null and b/asset_dev/level/corner/corner.blend differ
diff --git a/asset_dev/level/corner/corner.blend1 b/asset_dev/level/corner/corner.blend1
new file mode 100644
index 0000000..bc3c7dc
Binary files /dev/null and b/asset_dev/level/corner/corner.blend1 differ
diff --git a/asset_dev/level/player_ship/player_ship.blend b/asset_dev/level/player_ship/player_ship.blend
new file mode 100644
index 0000000..92462cb
Binary files /dev/null and b/asset_dev/level/player_ship/player_ship.blend differ
diff --git a/asset_dev/level/player_ship/player_ship.blend1 b/asset_dev/level/player_ship/player_ship.blend1
new file mode 100644
index 0000000..02ddfcc
Binary files /dev/null and b/asset_dev/level/player_ship/player_ship.blend1 differ
diff --git a/asset_dev/level/player_ship/subset_gasket.mtl b/asset_dev/level/player_ship/subset_gasket.mtl
new file mode 100644
index 0000000..dbfda5b
--- /dev/null
+++ b/asset_dev/level/player_ship/subset_gasket.mtl
@@ -0,0 +1,42 @@
+# Blender 4.3.2 MTL File: 'player_ship.blend'
+# www.blender.org
+
+newmtl Gasket
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl Interior
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+
+newmtl Tank
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl TankFacade
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
diff --git a/asset_dev/level/player_ship/subset_gasket.obj b/asset_dev/level/player_ship/subset_gasket.obj
new file mode 100644
index 0000000..ce19d42
--- /dev/null
+++ b/asset_dev/level/player_ship/subset_gasket.obj
@@ -0,0 +1,50 @@
+# Blender 4.3.2
+# www.blender.org
+mtllib subset_gasket.mtl
+o Ship.Interior
+v -0.625000 -1.500000 -4.750000
+v 0.625000 -1.500000 -4.750000
+v -0.625000 1.000000 -4.750000
+v 0.625000 1.000000 -4.750000
+v -1.250000 -1.500000 -4.750000
+v 1.250000 -1.500000 -4.750000
+v -1.250000 1.000000 -4.750000
+v 1.250000 1.000000 -4.750000
+v -1.250000 1.500000 -4.750000
+v 1.250000 1.500000 -4.750000
+v -1.250000 -1.500000 -6.750000
+v 1.250000 -1.500000 -6.750000
+v -1.250000 1.500000 -6.750000
+v 1.250000 1.500000 -6.750000
+vn -0.0000 -0.0000 -1.0000
+vn 1.0000 -0.0000 -0.0000
+vn -0.0000 -1.0000 -0.0000
+vn -0.0000 1.0000 -0.0000
+vn -1.0000 -0.0000 -0.0000
+vt 0.320312 0.718750
+vt 0.320312 0.640625
+vt 0.406250 0.640625
+vt 0.593750 0.640625
+vt 0.679688 0.640625
+vt 0.679688 0.718750
+vt 0.406250 0.281250
+vt 0.320312 0.281250
+vt 0.593750 0.281250
+vt 0.679688 0.281250
+vt 0.960938 0.281250
+vt 0.960938 0.718750
+vt 0.679688 1.000000
+vt 0.320312 1.000000
+vt 0.320312 -0.000000
+vt 0.679688 -0.000000
+vt 0.039062 0.718750
+vt 0.039062 0.281250
+s 0
+usemtl Gasket
+f 10/1/1 8/2/1 4/3/1 3/4/1 7/5/1 9/6/1
+f 2/7/1 4/3/1 8/2/1 6/8/1
+f 3/4/1 1/9/1 5/10/1 7/5/1
+f 9/6/2 7/5/2 5/10/2 11/11/2 13/12/2
+f 10/1/3 9/6/3 13/13/3 14/14/3
+f 2/7/4 6/8/4 12/15/4 11/16/4 5/10/4 1/9/4
+f 6/8/5 8/2/5 10/1/5 14/17/5 12/18/5
diff --git a/asset_dev/level/player_ship/subset_interior.mtl b/asset_dev/level/player_ship/subset_interior.mtl
new file mode 100644
index 0000000..dbfda5b
--- /dev/null
+++ b/asset_dev/level/player_ship/subset_interior.mtl
@@ -0,0 +1,42 @@
+# Blender 4.3.2 MTL File: 'player_ship.blend'
+# www.blender.org
+
+newmtl Gasket
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl Interior
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+
+newmtl Tank
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl TankFacade
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
diff --git a/asset_dev/level/player_ship/subset_interior.obj b/asset_dev/level/player_ship/subset_interior.obj
new file mode 100644
index 0000000..da55045
--- /dev/null
+++ b/asset_dev/level/player_ship/subset_interior.obj
@@ -0,0 +1,100 @@
+# Blender 4.3.2
+# www.blender.org
+mtllib subset_interior.mtl
+o Ship.Interior
+v -2.500000 -0.500000 5.500000
+v -1.500000 -1.500000 4.500000
+v -1.500000 1.500000 4.500000
+v -2.500000 0.500000 5.500000
+v -1.500000 -1.500000 -4.500000
+v -2.500000 -0.500000 -4.500000
+v -2.500000 0.500000 -4.500000
+v -1.500000 1.500000 -4.500000
+v 1.500000 -1.500000 4.500000
+v 2.500000 -0.500000 5.500000
+v 2.500000 0.500000 5.500000
+v 1.500000 1.500000 4.500000
+v 2.500000 -0.500000 -4.500000
+v 1.500000 -1.500000 -4.500000
+v 1.500000 1.500000 -4.500000
+v 2.500000 0.500000 -4.500000
+v -0.625000 -1.500000 -4.500000
+v 0.625000 -1.500000 -4.500000
+v 0.625000 1.500000 -4.500000
+v -0.625000 1.500000 -4.500000
+v -0.625000 1.000000 -4.500000
+v 0.625000 1.000000 -4.500000
+v -0.625000 -1.500000 -4.750000
+v 0.625000 -1.500000 -4.750000
+v -0.625000 1.000000 -4.750000
+v 0.625000 1.000000 -4.750000
+vn -1.0000 -0.0000 -0.0000
+vn -0.0000 -1.0000 -0.0000
+vn 1.0000 -0.0000 -0.0000
+vn -0.0000 -0.0000 1.0000
+vn 0.7071 0.7071 -0.0000
+vn 0.7071 -0.7071 -0.0000
+vn -0.7071 0.7071 -0.0000
+vn -0.7071 -0.7071 -0.0000
+vn -0.0000 1.0000 -0.0000
+vt 0.734375 0.179688
+vt 0.000000 0.179688
+vt 0.000000 0.101562
+vt 0.734375 0.101562
+vt 0.734375 1.000000
+vt 0.070312 1.000000
+vt 0.070312 0.781250
+vt 0.734375 0.781250
+vt 0.734375 0.843750
+vt 0.734375 0.937500
+vt 0.000000 0.601562
+vt 0.734375 0.601562
+vt 0.734375 0.679688
+vt 0.000000 0.679688
+vt 0.734375 0.625000
+vt 0.804688 0.546875
+vt 0.875000 0.546875
+vt 0.953125 0.625000
+vt 0.734375 0.500000
+vt 0.070312 0.500000
+vt 0.070312 0.281250
+vt 0.734375 0.281250
+vt 0.734375 0.000000
+vt 0.070312 0.000000
+vt 0.734375 0.343750
+vt 0.734375 0.437500
+vt 0.804688 0.914062
+vt 0.953125 0.843750
+vt 0.875000 0.914062
+vt 0.914062 0.781250
+vt 0.914062 0.687500
+vt 0.953125 0.687500
+vt 0.953125 0.781250
+vt 0.734375 0.687500
+vt 0.734375 0.273438
+vt 0.750000 0.179688
+vt 0.750000 0.273438
+vt 0.734375 0.546875
+vt 0.734375 0.460938
+vt 0.750000 0.460938
+vt 0.750000 0.546875
+vt 0.750000 0.000000
+s 0
+usemtl Interior
+f 13/1/1 10/2/1 11/3/1 16/4/1
+f 15/5/2 12/6/2 3/7/2 8/8/2 20/9/2 19/10/2
+f 1/11/3 6/12/3 7/13/3 4/14/3
+f 14/15/4 13/16/4 16/17/4 15/18/4
+f 5/19/5 6/12/5 1/11/5 2/20/5
+f 3/7/6 4/14/6 7/13/6 8/8/6
+f 9/21/7 10/2/7 13/1/7 14/22/7
+f 15/23/8 16/4/8 11/3/8 12/24/8
+f 5/19/9 2/20/9 9/21/9 14/22/9 18/25/9 17/26/9
+f 6/27/4 5/9/4 8/28/4 7/29/4
+f 21/30/4 22/31/4 19/32/4 20/33/4
+f 21/30/4 20/33/4 8/28/4 5/9/4 17/8/4
+f 15/18/4 19/32/4 22/31/4 18/34/4 14/15/4
+f 17/35/9 18/1/9 24/36/9 23/37/9
+f 22/38/2 21/39/2 25/40/2 26/41/2
+f 21/39/3 17/35/3 23/37/3 25/40/3
+f 18/1/1 22/23/1 26/42/1 24/36/1
diff --git a/asset_dev/level/player_ship/subset_tank.mtl b/asset_dev/level/player_ship/subset_tank.mtl
new file mode 100644
index 0000000..dbfda5b
--- /dev/null
+++ b/asset_dev/level/player_ship/subset_tank.mtl
@@ -0,0 +1,42 @@
+# Blender 4.3.2 MTL File: 'player_ship.blend'
+# www.blender.org
+
+newmtl Gasket
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl Interior
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+
+newmtl Tank
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl TankFacade
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
diff --git a/asset_dev/level/player_ship/subset_tank.obj b/asset_dev/level/player_ship/subset_tank.obj
new file mode 100644
index 0000000..a138b62
--- /dev/null
+++ b/asset_dev/level/player_ship/subset_tank.obj
@@ -0,0 +1,65 @@
+# Blender 4.3.2
+# www.blender.org
+mtllib subset_tank.mtl
+o Ship.Interior
+v -2.500000 -0.500000 5.500000
+v -1.500000 -1.500000 4.500000
+v -1.500000 1.500000 4.500000
+v -2.500000 0.500000 5.500000
+v 1.500000 -1.500000 4.500000
+v 2.500000 -0.500000 5.500000
+v 2.500000 0.500000 5.500000
+v 1.500000 1.500000 4.500000
+v -1.500000 -1.500000 7.500000
+v -2.500000 -0.500000 7.500000
+v -2.500000 0.500000 7.500000
+v -1.500000 1.500000 7.500000
+v 2.500000 -0.500000 7.500000
+v 1.500000 -1.500000 7.500000
+v 1.500000 1.500000 7.500000
+v 2.500000 0.500000 7.500000
+vn 0.7071 -0.7071 -0.0000
+vn -0.0000 -0.0000 -1.0000
+vn 0.7071 0.7071 -0.0000
+vn -1.0000 -0.0000 -0.0000
+vn 1.0000 -0.0000 -0.0000
+vn -0.7071 -0.7071 -0.0000
+vn -0.0000 -1.0000 -0.0000
+vn -0.7071 0.7071 -0.0000
+vn -0.0000 1.0000 -0.0000
+vt 0.218750 0.265625
+vt 0.335938 0.421875
+vt 0.000000 0.421875
+vt 0.000000 0.265625
+vt 0.664062 0.445312
+vt 0.664062 0.109375
+vt 0.781250 0.000000
+vt 0.890625 0.000000
+vt 1.000000 0.109375
+vt 1.000000 0.445312
+vt 0.890625 0.554688
+vt 0.781250 0.554688
+vt 0.335938 0.000000
+vt 0.218750 0.156250
+vt 0.000000 0.156250
+vt 0.000000 0.000000
+vt 0.554688 0.156250
+vt 0.554688 0.265625
+vt 0.335938 0.265625
+vt 0.335938 0.156250
+vt 0.664062 0.000000
+vt 0.335938 0.757812
+vt 0.000000 0.757812
+vt 0.664062 0.421875
+vt 0.664062 0.757812
+s 0
+usemtl Tank
+f 4/1/1 3/2/1 12/3/1 11/4/1
+f 14/5/2 9/6/2 10/7/2 11/8/2 12/9/2 15/10/2 16/11/2 13/12/2
+f 2/13/3 1/14/3 10/15/3 9/16/3
+f 7/17/4 6/18/4 13/19/4 16/20/4
+f 1/14/5 4/1/5 11/4/5 10/15/5
+f 8/21/6 7/17/6 16/20/6 15/13/6
+f 3/2/7 8/22/7 15/23/7 12/3/7
+f 6/18/8 5/24/8 14/2/8 13/19/8
+f 5/24/9 2/25/9 9/22/9 14/2/9
diff --git a/asset_dev/level/player_ship/subset_tank_facade.mtl b/asset_dev/level/player_ship/subset_tank_facade.mtl
new file mode 100644
index 0000000..dbfda5b
--- /dev/null
+++ b/asset_dev/level/player_ship/subset_tank_facade.mtl
@@ -0,0 +1,42 @@
+# Blender 4.3.2 MTL File: 'player_ship.blend'
+# www.blender.org
+
+newmtl Gasket
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl Interior
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+
+newmtl Tank
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl TankFacade
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
diff --git a/asset_dev/level/player_ship/subset_tank_facade.obj b/asset_dev/level/player_ship/subset_tank_facade.obj
new file mode 100644
index 0000000..d9a3121
--- /dev/null
+++ b/asset_dev/level/player_ship/subset_tank_facade.obj
@@ -0,0 +1,28 @@
+# Blender 4.3.2
+# www.blender.org
+mtllib subset_tank_facade.mtl
+o Ship.Interior
+v -2.500000 -0.500000 5.500000
+v -1.500000 -1.500000 4.500000
+v -1.500000 1.500000 4.500000
+v -2.500000 0.500000 5.500000
+v 1.500000 -1.500000 4.500000
+v 2.500000 -0.500000 5.500000
+v 2.500000 0.500000 5.500000
+v 1.500000 1.500000 4.500000
+vn 0.7071 -0.0000 -0.7071
+vn -0.7071 -0.0000 -0.7071
+vn -0.0000 -0.0000 -1.0000
+vt 0.515625 0.242188
+vt 0.000000 0.242188
+vt 0.171875 0.000000
+vt 0.343750 0.000000
+vt 0.515625 0.757812
+vt 0.343750 1.000000
+vt 0.171875 1.000000
+vt 0.000000 0.757812
+s 0
+usemtl TankFacade
+f 5/1/1 8/2/1 7/3/1 6/4/1
+f 2/5/2 1/6/2 4/7/2 3/8/2
+f 5/1/3 2/5/3 3/8/3 8/2/3
diff --git a/asset_dev/level/t-junction/t_junction.blend b/asset_dev/level/t-junction/t_junction.blend
new file mode 100644
index 0000000..ab0c317
Binary files /dev/null and b/asset_dev/level/t-junction/t_junction.blend differ
diff --git a/assets/level/3x3quad.mtl b/assets/level/3x3quad.mtl
new file mode 100644
index 0000000..3388c58
--- /dev/null
+++ b/assets/level/3x3quad.mtl
@@ -0,0 +1,2 @@
+# Blender 4.3.2 MTL File: '3x3quad.blend'
+# www.blender.org
diff --git a/assets/level/3x3quad.obj b/assets/level/3x3quad.obj
new file mode 100644
index 0000000..efc9fc7
--- /dev/null
+++ b/assets/level/3x3quad.obj
@@ -0,0 +1,15 @@
+# Blender 4.3.2
+# www.blender.org
+mtllib 3x3quad.mtl
+o Plane
+v -1.500000 0.000000 1.500000
+v 1.500000 0.000000 1.500000
+v -1.500000 0.000000 -1.500000
+v 1.500000 0.000000 -1.500000
+vn -0.0000 1.0000 -0.0000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+s 0
+f 1/1/1 2/2/1 4/3/1 3/4/1
diff --git a/assets/level/3x3quad.obj.import b/assets/level/3x3quad.obj.import
new file mode 100644
index 0000000..d79dd1a
--- /dev/null
+++ b/assets/level/3x3quad.obj.import
@@ -0,0 +1,25 @@
+[remap]
+
+importer="wavefront_obj"
+importer_version=1
+type="Mesh"
+uid="uid://ddgsfmbeodki3"
+path="res://.godot/imported/3x3quad.obj-ab0ef8bd2944f5950536fac2df02de96.mesh"
+
+[deps]
+
+files=["res://.godot/imported/3x3quad.obj-ab0ef8bd2944f5950536fac2df02de96.mesh"]
+
+source_file="res://assets/level/3x3quad.obj"
+dest_files=["res://.godot/imported/3x3quad.obj-ab0ef8bd2944f5950536fac2df02de96.mesh", "res://.godot/imported/3x3quad.obj-ab0ef8bd2944f5950536fac2df02de96.mesh"]
+
+[params]
+
+generate_tangents=true
+generate_lods=true
+generate_shadow_mesh=true
+generate_lightmap_uv2=false
+generate_lightmap_uv2_texel_size=0.2
+scale_mesh=Vector3(1, 1, 1)
+offset_mesh=Vector3(0, 0, 0)
+force_disable_mesh_compression=false
diff --git a/assets/level/9x9quad.mtl b/assets/level/9x9quad.mtl
new file mode 100644
index 0000000..3388c58
--- /dev/null
+++ b/assets/level/9x9quad.mtl
@@ -0,0 +1,2 @@
+# Blender 4.3.2 MTL File: '3x3quad.blend'
+# www.blender.org
diff --git a/assets/level/9x9quad.obj b/assets/level/9x9quad.obj
new file mode 100644
index 0000000..90dcf61
--- /dev/null
+++ b/assets/level/9x9quad.obj
@@ -0,0 +1,15 @@
+# Blender 4.3.2
+# www.blender.org
+mtllib 9x9quad.mtl
+o Plane
+v -4.500000 0.000000 4.500000
+v 4.500000 0.000000 4.500000
+v -4.500000 0.000000 -4.500000
+v 4.500000 0.000000 -4.500000
+vn -0.0000 1.0000 -0.0000
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+s 0
+f 1/1/1 2/2/1 4/3/1 3/4/1
diff --git a/assets/level/9x9quad.obj.import b/assets/level/9x9quad.obj.import
new file mode 100644
index 0000000..129e149
--- /dev/null
+++ b/assets/level/9x9quad.obj.import
@@ -0,0 +1,25 @@
+[remap]
+
+importer="wavefront_obj"
+importer_version=1
+type="Mesh"
+uid="uid://bk0yp8n2cfn5n"
+path="res://.godot/imported/9x9quad.obj-6075a3b2f7806760fa4e6b2fc928f4e0.mesh"
+
+[deps]
+
+files=["res://.godot/imported/9x9quad.obj-6075a3b2f7806760fa4e6b2fc928f4e0.mesh"]
+
+source_file="res://assets/level/9x9quad.obj"
+dest_files=["res://.godot/imported/9x9quad.obj-6075a3b2f7806760fa4e6b2fc928f4e0.mesh", "res://.godot/imported/9x9quad.obj-6075a3b2f7806760fa4e6b2fc928f4e0.mesh"]
+
+[params]
+
+generate_tangents=true
+generate_lods=true
+generate_shadow_mesh=true
+generate_lightmap_uv2=false
+generate_lightmap_uv2_texel_size=0.2
+scale_mesh=Vector3(1, 1, 1)
+offset_mesh=Vector3(0, 0, 0)
+force_disable_mesh_compression=false
diff --git a/assets/level/ceiling/ceiling_1.mesh b/assets/level/ceiling/ceiling_1.mesh
index 2c1292e..ba51533 100644
Binary files a/assets/level/ceiling/ceiling_1.mesh and b/assets/level/ceiling/ceiling_1.mesh differ
diff --git a/assets/level/ceiling/ceiling_2.mesh b/assets/level/ceiling/ceiling_2.mesh
index 18815ea..e4a6e06 100644
Binary files a/assets/level/ceiling/ceiling_2.mesh and b/assets/level/ceiling/ceiling_2.mesh differ
diff --git a/assets/level/corner/corner.mtl b/assets/level/corner/corner.mtl
new file mode 100644
index 0000000..8d38122
--- /dev/null
+++ b/assets/level/corner/corner.mtl
@@ -0,0 +1,2 @@
+# Blender 4.3.2 MTL File: 'corner.blend'
+# www.blender.org
diff --git a/assets/level/corner/corner.obj b/assets/level/corner/corner.obj
new file mode 100644
index 0000000..4d47d6a
--- /dev/null
+++ b/assets/level/corner/corner.obj
@@ -0,0 +1,31 @@
+# Blender 4.3.2
+# www.blender.org
+mtllib corner.mtl
+o Cube
+v -1.500000 0.000000 1.500000
+v -1.500000 3.000000 1.500000
+v -1.500000 0.000000 -1.500000
+v -1.500000 3.000000 -1.500000
+v 1.500000 0.000000 1.500000
+v 1.500000 3.000000 1.500000
+v 1.500000 0.000000 -1.500000
+v 1.500000 3.000000 -1.500000
+vn 1.0000 -0.0000 -0.0000
+vn -0.0000 -0.0000 -1.0000
+vn -0.0000 1.0000 -0.0000
+vn -0.0000 -1.0000 -0.0000
+vt 0.333333 0.666667
+vt -0.000000 0.666667
+vt 0.000000 0.333333
+vt 0.333333 0.333333
+vt 0.666667 0.333333
+vt 0.666667 0.666667
+vt 0.333333 1.000000
+vt 0.000000 1.000000
+vt 0.666667 -0.000000
+vt 0.333333 0.000000
+s 1
+f 1/1/1 3/2/1 4/3/1 2/4/1
+f 2/4/2 6/5/2 5/6/2 1/1/2
+f 3/2/3 1/1/3 5/7/3 7/8/3
+f 8/9/4 6/5/4 2/4/4 4/10/4
diff --git a/assets/level/corner/corner.obj.import b/assets/level/corner/corner.obj.import
new file mode 100644
index 0000000..8934321
--- /dev/null
+++ b/assets/level/corner/corner.obj.import
@@ -0,0 +1,25 @@
+[remap]
+
+importer="wavefront_obj"
+importer_version=1
+type="Mesh"
+uid="uid://bc6g748mjhv4"
+path="res://.godot/imported/corner.obj-6421563a9146ca7aa2032c1b8cb47108.mesh"
+
+[deps]
+
+files=["res://.godot/imported/corner.obj-6421563a9146ca7aa2032c1b8cb47108.mesh"]
+
+source_file="res://assets/level/corner/corner.obj"
+dest_files=["res://.godot/imported/corner.obj-6421563a9146ca7aa2032c1b8cb47108.mesh", "res://.godot/imported/corner.obj-6421563a9146ca7aa2032c1b8cb47108.mesh"]
+
+[params]
+
+generate_tangents=true
+generate_lods=true
+generate_shadow_mesh=true
+generate_lightmap_uv2=false
+generate_lightmap_uv2_texel_size=0.2
+scale_mesh=Vector3(1, 1, 1)
+offset_mesh=Vector3(0, 0, 0)
+force_disable_mesh_compression=false
diff --git a/assets/level/floor/floor_1.mesh b/assets/level/floor/floor_1.mesh
index 09f2687..55eb32d 100644
Binary files a/assets/level/floor/floor_1.mesh and b/assets/level/floor/floor_1.mesh differ
diff --git a/assets/level/floor/floor_2.mesh b/assets/level/floor/floor_2.mesh
index fd0f857..294f174 100644
Binary files a/assets/level/floor/floor_2.mesh and b/assets/level/floor/floor_2.mesh differ
diff --git a/assets/level/hallway/hallway_1.mesh b/assets/level/hallway/hallway_1.mesh
index e525e72..b46a7c6 100644
Binary files a/assets/level/hallway/hallway_1.mesh and b/assets/level/hallway/hallway_1.mesh differ
diff --git a/assets/level/hallway/hallway_2.mesh b/assets/level/hallway/hallway_2.mesh
index af41e3e..3a7fd0c 100644
Binary files a/assets/level/hallway/hallway_2.mesh and b/assets/level/hallway/hallway_2.mesh differ
diff --git a/assets/level/player_ship/player_ship.mtl b/assets/level/player_ship/player_ship.mtl
new file mode 100644
index 0000000..dbfda5b
--- /dev/null
+++ b/assets/level/player_ship/player_ship.mtl
@@ -0,0 +1,42 @@
+# Blender 4.3.2 MTL File: 'player_ship.blend'
+# www.blender.org
+
+newmtl Gasket
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl Interior
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+
+newmtl Tank
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
+
+newmtl TankFacade
+Ns 250.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.500000
+d 1.000000
+illum 2
diff --git a/assets/level/player_ship/player_ship.obj b/assets/level/player_ship/player_ship.obj
new file mode 100644
index 0000000..f63c954
--- /dev/null
+++ b/assets/level/player_ship/player_ship.obj
@@ -0,0 +1,193 @@
+# Blender 4.3.2
+# www.blender.org
+mtllib player_ship.mtl
+o Ship.Interior
+v -2.500000 1.000000 5.500000
+v -1.500000 0.000000 4.500000
+v -1.500000 3.000000 4.500000
+v -2.500000 2.000000 5.500000
+v -1.500000 0.000000 -4.500000
+v -2.500000 1.000000 -4.500000
+v -2.500000 2.000000 -4.500000
+v -1.500000 3.000000 -4.500000
+v 1.500000 0.000000 4.500000
+v 2.500000 1.000000 5.500000
+v 2.500000 2.000000 5.500000
+v 1.500000 3.000000 4.500000
+v 2.500000 1.000000 -4.500000
+v 1.500000 0.000000 -4.500000
+v 1.500000 3.000000 -4.500000
+v 2.500000 2.000000 -4.500000
+v -1.500000 0.000000 7.500000
+v -2.500000 1.000000 7.500000
+v -2.500000 2.000000 7.500000
+v -1.500000 3.000000 7.500000
+v 2.500000 1.000000 7.500000
+v 1.500000 0.000000 7.500000
+v 1.500000 3.000000 7.500000
+v 2.500000 2.000000 7.500000
+v -0.625000 0.000000 -4.500000
+v 0.625000 0.000000 -4.500000
+v 0.625000 3.000000 -4.500000
+v -0.625000 3.000000 -4.500000
+v -0.625000 2.500000 -4.500000
+v 0.625000 2.500000 -4.500000
+v -0.625000 0.000000 -4.750000
+v 0.625000 0.000000 -4.750000
+v -0.625000 2.500000 -4.750000
+v 0.625000 2.500000 -4.750000
+v -1.250000 0.000000 -4.750000
+v 1.250000 0.000000 -4.750000
+v -1.250000 2.500000 -4.750000
+v 1.250000 2.500000 -4.750000
+v -1.250000 3.000000 -4.750000
+v 1.250000 3.000000 -4.750000
+v -1.250000 0.000000 -6.750000
+v 1.250000 0.000000 -6.750000
+v -1.250000 3.000000 -6.750000
+v 1.250000 3.000000 -6.750000
+vn 0.7071 -0.7071 -0.0000
+vn -1.0000 -0.0000 -0.0000
+vn -0.0000 -1.0000 -0.0000
+vn 1.0000 -0.0000 -0.0000
+vn -0.0000 -0.0000 1.0000
+vn 0.7071 0.7071 -0.0000
+vn -0.7071 0.7071 -0.0000
+vn -0.7071 -0.7071 -0.0000
+vn -0.0000 1.0000 -0.0000
+vn -0.0000 -0.0000 -1.0000
+vn 0.7071 -0.0000 -0.7071
+vn -0.7071 -0.0000 -0.7071
+vt 0.218750 0.265625
+vt 0.335938 0.421875
+vt 0.000000 0.421875
+vt 0.000000 0.265625
+vt 0.734375 0.179688
+vt 0.000000 0.179688
+vt 0.000000 0.101562
+vt 0.734375 0.101562
+vt 0.734375 1.000000
+vt 0.070312 1.000000
+vt 0.070312 0.781250
+vt 0.734375 0.781250
+vt 0.734375 0.843750
+vt 0.734375 0.937500
+vt 0.000000 0.601562
+vt 0.734375 0.601562
+vt 0.734375 0.679688
+vt 0.000000 0.679688
+vt 0.734375 0.625000
+vt 0.804688 0.546875
+vt 0.875000 0.546875
+vt 0.953125 0.625000
+vt 0.734375 0.500000
+vt 0.070312 0.500000
+vt 0.070312 0.281250
+vt 0.734375 0.281250
+vt 0.734375 0.000000
+vt 0.070312 0.000000
+vt 0.734375 0.343750
+vt 0.734375 0.437500
+vt 0.664062 0.445312
+vt 0.664062 0.109375
+vt 0.781250 0.000000
+vt 0.890625 0.000000
+vt 1.000000 0.109375
+vt 1.000000 0.445312
+vt 0.890625 0.554688
+vt 0.781250 0.554688
+vt 0.335938 0.000000
+vt 0.218750 0.156250
+vt 0.000000 0.156250
+vt 0.000000 0.000000
+vt 0.554688 0.156250
+vt 0.554688 0.265625
+vt 0.335938 0.265625
+vt 0.335938 0.156250
+vt 0.664062 0.000000
+vt 0.335938 0.757812
+vt 0.000000 0.757812
+vt 0.664062 0.421875
+vt 0.664062 0.757812
+vt 0.515625 0.242188
+vt 0.000000 0.242188
+vt 0.171875 0.000000
+vt 0.343750 0.000000
+vt 0.804688 0.914062
+vt 0.953125 0.843750
+vt 0.875000 0.914062
+vt 0.914062 0.781250
+vt 0.914062 0.687500
+vt 0.953125 0.687500
+vt 0.953125 0.781250
+vt 0.515625 0.757812
+vt 0.343750 1.000000
+vt 0.171875 1.000000
+vt 0.734375 0.687500
+vt 0.734375 0.273438
+vt 0.750000 0.179688
+vt 0.750000 0.273438
+vt 0.734375 0.546875
+vt 0.734375 0.460938
+vt 0.750000 0.460938
+vt 0.750000 0.546875
+vt 0.750000 0.000000
+vt 0.320312 0.718750
+vt 0.320312 0.640625
+vt 0.406250 0.640625
+vt 0.593750 0.640625
+vt 0.679688 0.640625
+vt 0.679688 0.718750
+vt 0.406250 0.281250
+vt 0.320312 0.281250
+vt 0.593750 0.281250
+vt 0.679688 0.281250
+vt 0.960938 0.281250
+vt 0.960938 0.718750
+vt 0.679688 1.000000
+vt 0.320312 1.000000
+vt 0.320312 -0.000000
+vt 0.679688 -0.000000
+vt 0.039062 0.718750
+vt 0.039062 0.281250
+s 0
+usemtl Interior
+f 13/5/2 10/6/2 11/7/2 16/8/2
+f 15/9/3 12/10/3 3/11/3 8/12/3 28/13/3 27/14/3
+f 1/15/4 6/16/4 7/17/4 4/18/4
+f 14/19/5 13/20/5 16/21/5 15/22/5
+f 5/23/6 6/16/6 1/15/6 2/24/6
+f 3/11/1 4/18/1 7/17/1 8/12/1
+f 9/25/7 10/6/7 13/5/7 14/26/7
+f 15/27/8 16/8/8 11/7/8 12/28/8
+f 5/23/9 2/24/9 9/25/9 14/26/9 26/29/9 25/30/9
+f 6/56/5 5/13/5 8/57/5 7/58/5
+f 29/59/5 30/60/5 27/61/5 28/62/5
+f 29/59/5 28/62/5 8/57/5 5/13/5 25/12/5
+f 15/22/5 27/61/5 30/60/5 26/66/5 14/19/5
+f 25/67/9 26/5/9 32/68/9 31/69/9
+f 30/70/3 29/71/3 33/72/3 34/73/3
+f 29/71/4 25/67/4 31/69/4 33/72/4
+f 26/5/2 30/27/2 34/74/2 32/68/2
+usemtl Tank
+f 4/1/1 3/2/1 20/3/1 19/4/1
+f 22/31/10 17/32/10 18/33/10 19/34/10 20/35/10 23/36/10 24/37/10 21/38/10
+f 2/39/6 1/40/6 18/41/6 17/42/6
+f 11/43/2 10/44/2 21/45/2 24/46/2
+f 1/40/4 4/1/4 19/4/4 18/41/4
+f 12/47/8 11/43/8 24/46/8 23/39/8
+f 3/2/3 12/48/3 23/49/3 20/3/3
+f 10/44/7 9/50/7 22/2/7 21/45/7
+f 9/50/9 2/51/9 17/48/9 22/2/9
+usemtl TankFacade
+f 9/52/11 12/53/11 11/54/11 10/55/11
+f 2/63/12 1/64/12 4/65/12 3/49/12
+f 9/52/10 2/63/10 3/49/10 12/53/10
+usemtl Gasket
+f 40/75/10 38/76/10 34/77/10 33/78/10 37/79/10 39/80/10
+f 32/81/10 34/77/10 38/76/10 36/82/10
+f 33/78/10 31/83/10 35/84/10 37/79/10
+f 39/80/4 37/79/4 35/84/4 41/85/4 43/86/4
+f 40/75/3 39/80/3 43/87/3 44/88/3
+f 32/81/9 36/82/9 42/89/9 41/90/9 35/84/9 31/83/9
+f 36/82/2 38/76/2 40/75/2 44/91/2 42/92/2
diff --git a/assets/level/player_ship/player_ship.obj.import b/assets/level/player_ship/player_ship.obj.import
new file mode 100644
index 0000000..8a1410f
--- /dev/null
+++ b/assets/level/player_ship/player_ship.obj.import
@@ -0,0 +1,25 @@
+[remap]
+
+importer="wavefront_obj"
+importer_version=1
+type="Mesh"
+uid="uid://dq4aj5ph31rce"
+path="res://.godot/imported/player_ship.obj-f40d0058f689f3be197a3c905ebf92c3.mesh"
+
+[deps]
+
+files=["res://.godot/imported/player_ship.obj-f40d0058f689f3be197a3c905ebf92c3.mesh"]
+
+source_file="res://assets/level/player_ship/player_ship.obj"
+dest_files=["res://.godot/imported/player_ship.obj-f40d0058f689f3be197a3c905ebf92c3.mesh", "res://.godot/imported/player_ship.obj-f40d0058f689f3be197a3c905ebf92c3.mesh"]
+
+[params]
+
+generate_tangents=true
+generate_lods=true
+generate_shadow_mesh=true
+generate_lightmap_uv2=false
+generate_lightmap_uv2_texel_size=0.2
+scale_mesh=Vector3(1, 1, 1)
+offset_mesh=Vector3(0, 0, 0)
+force_disable_mesh_compression=false
diff --git a/assets/level/wall/wall_1.mesh b/assets/level/wall/wall_1.mesh
index c4f19ec..2586bc4 100644
Binary files a/assets/level/wall/wall_1.mesh and b/assets/level/wall/wall_1.mesh differ
diff --git a/assets/level/wall/wall_2.mesh b/assets/level/wall/wall_2.mesh
index 0f42dac..cb90d44 100644
Binary files a/assets/level/wall/wall_2.mesh and b/assets/level/wall/wall_2.mesh differ
diff --git a/assets/level/wall/wall_3.mesh b/assets/level/wall/wall_3.mesh
index 4f31eeb..16bf0db 100644
Binary files a/assets/level/wall/wall_3.mesh and b/assets/level/wall/wall_3.mesh differ
diff --git a/assets/materials/level/ceiling_1.material b/assets/materials/level/ceiling_1.material
new file mode 100644
index 0000000..7f1758e
Binary files /dev/null and b/assets/materials/level/ceiling_1.material differ
diff --git a/assets/materials/level/ceiling_2.material b/assets/materials/level/ceiling_2.material
new file mode 100644
index 0000000..21d1962
Binary files /dev/null and b/assets/materials/level/ceiling_2.material differ
diff --git a/assets/materials/level/floor_1.material b/assets/materials/level/floor_1.material
new file mode 100644
index 0000000..2c87d1d
Binary files /dev/null and b/assets/materials/level/floor_1.material differ
diff --git a/assets/materials/level/floor_2.material b/assets/materials/level/floor_2.material
new file mode 100644
index 0000000..97d14e1
Binary files /dev/null and b/assets/materials/level/floor_2.material differ
diff --git a/assets/materials/level/wall_1.material b/assets/materials/level/wall_1.material
new file mode 100644
index 0000000..8710a37
Binary files /dev/null and b/assets/materials/level/wall_1.material differ
diff --git a/assets/materials/level/wall_2.material b/assets/materials/level/wall_2.material
new file mode 100644
index 0000000..754dde7
Binary files /dev/null and b/assets/materials/level/wall_2.material differ
diff --git a/assets/materials/level/wall_3.material b/assets/materials/level/wall_3.material
new file mode 100644
index 0000000..ffa9d6c
Binary files /dev/null and b/assets/materials/level/wall_3.material differ
diff --git a/levels/ghost_ship/ghost_ship.tscn b/levels/ghost_ship/ghost_ship.tscn
new file mode 100644
index 0000000..d9286ff
--- /dev/null
+++ b/levels/ghost_ship/ghost_ship.tscn
@@ -0,0 +1,54 @@
+[gd_scene load_steps=6 format=3 uid="uid://bov4ok76woyc"]
+
+[ext_resource type="PackedScene" uid="uid://crydi5cjgfwe5" path="res://levels/ghost_ship/ghost_ship_level.tscn" id="1_aj2m7"]
+[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="2_0ef5p"]
+
+[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_aj2m7"]
+
+[sub_resource type="Sky" id="Sky_6fwow"]
+sky_material = SubResource("ProceduralSkyMaterial_aj2m7")
+
+[sub_resource type="Environment" id="Environment_0ef5p"]
+background_mode = 1
+sky = SubResource("Sky_6fwow")
+ambient_light_source = 2
+ambient_light_color = Color(1, 1, 1, 1)
+ambient_light_energy = 0.06
+tonemap_mode = 3
+glow_enabled = true
+glow_bloom = 0.1
+fog_enabled = true
+fog_light_color = Color(0, 0, 0, 1)
+fog_density = 0.2
+
+[node name="GhostShip" type="Node3D"]
+
+[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
+environment = SubResource("Environment_0ef5p")
+
+[node name="GhostShipLevel" parent="." instance=ExtResource("1_aj2m7")]
+
+[node name="OmniLight3D" type="OmniLight3D" parent="GhostShipLevel"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.9, 1)
+light_energy = 8.0
+omni_range = 10.0
+
+[node name="OmniLight3D2" type="OmniLight3D" parent="GhostShipLevel"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.9, -3)
+light_energy = 8.0
+omni_range = 10.0
+
+[node name="OmniLight3D4" type="OmniLight3D" parent="GhostShipLevel"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0.1, -7.6)
+light_energy = 8.0
+shadow_enabled = true
+omni_range = 10.0
+
+[node name="OmniLight3D3" type="OmniLight3D" parent="GhostShipLevel"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0.1, -7.6)
+light_energy = 8.0
+shadow_enabled = true
+omni_range = 10.0
+
+[node name="Player" parent="." instance=ExtResource("2_0ef5p")]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, 0)
diff --git a/levels/ghost_ship/ghost_ship_level.tscn b/levels/ghost_ship/ghost_ship_level.tscn
new file mode 100644
index 0000000..480a558
--- /dev/null
+++ b/levels/ghost_ship/ghost_ship_level.tscn
@@ -0,0 +1,405 @@
+[gd_scene load_steps=47 format=3 uid="uid://crydi5cjgfwe5"]
+
+[ext_resource type="PackedScene" uid="uid://oowut88kr2ox" path="res://levels/ghost_ship/player_ship/player_ship.tscn" id="1_2pyr1"]
+[ext_resource type="PackedScene" uid="uid://c2omlx4ptrc01" path="res://src/world/gunk_body/gunk_body.tscn" id="2_2egij"]
+[ext_resource type="Texture2D" uid="uid://c0a6flcoixsr2" path="res://assets/level/floor/floor_1_C.png" id="3_1chi6"]
+[ext_resource type="Texture2D" uid="uid://dxuxhlycaamcy" path="res://assets/level/floor/floor_1_M.png" id="4_3ryvr"]
+[ext_resource type="Shader" uid="uid://ckxc0ngd37rtk" path="res://src/shaders/gunk.gdshader" id="5_1njh5"]
+[ext_resource type="FastNoiseLite" uid="uid://cnlvdtx68giv6" path="res://assets/materials/gunk_noise.tres" id="6_3kphg"]
+[ext_resource type="Texture2D" uid="uid://bgc8oqsnimb8i" path="res://assets/level/floor/floor_1_N.png" id="7_726th"]
+[ext_resource type="Texture2D" uid="uid://23uupxc78b8n" path="res://assets/level/floor/floor_1_R.png" id="8_r8dlq"]
+[ext_resource type="Texture2D" uid="uid://ddjth5slpjrcd" path="res://assets/level/ceiling/ceiling_1_C.png" id="9_p11ap"]
+[ext_resource type="Texture2D" uid="uid://bs1fx1h0tddde" path="res://assets/level/ceiling/ceiling_1_M.png" id="10_d1yty"]
+[ext_resource type="Texture2D" uid="uid://bmwmajwul60ti" path="res://assets/level/ceiling/ceiling_1_N.png" id="11_ruwlj"]
+[ext_resource type="Texture2D" uid="uid://8hav47a84uk" path="res://assets/level/ceiling/ceiling_1_R.png" id="12_0idgf"]
+[ext_resource type="Texture2D" uid="uid://m2qxenym1otw" path="res://assets/level/wall/wall_2_C.png" id="13_fll4m"]
+[ext_resource type="Texture2D" uid="uid://begn6qloo0m1q" path="res://assets/level/wall/wall_2_M.png" id="14_dly4i"]
+[ext_resource type="Texture2D" uid="uid://cpdrvdu3qt62t" path="res://assets/level/wall/wall_2_N.png" id="15_rp2qp"]
+[ext_resource type="Texture2D" uid="uid://ba5vvrx730go8" path="res://assets/level/wall/wall_2_R.png" id="16_if0c2"]
+
+[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_hrvvi"]
+load_path = "res://.godot/imported/debug_mask.png-fd2bc783338ed9439fe81a4eef9d86da.s3tc.ctex"
+
+[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_2roq2"]
+width = 256
+height = 256
+depth = 32
+seamless = true
+seamless_blend_skirt = 0.5
+noise = ExtResource("6_3kphg")
+
+[sub_resource type="NoiseTexture3D" id="NoiseTexture3D_fk1xc"]
+width = 256
+height = 256
+depth = 32
+seamless = true
+seamless_blend_skirt = 0.5
+noise = ExtResource("6_3kphg")
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_p11ap"]
+resource_local_to_scene = true
+render_priority = 0
+shader = ExtResource("5_1njh5")
+shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
+shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
+shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
+shader_parameter/pixellation = 128.0
+shader_parameter/time_pixellation = 30.0
+shader_parameter/roughness = 0.15
+shader_parameter/specular_contribution = 0.8
+shader_parameter/emission_strength = 0.02
+shader_parameter/uv_scale = Vector2(8, 8)
+shader_parameter/time_scale = 0.2
+shader_parameter/edge_bleed = 0.25
+shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
+shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
+shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d1yty"]
+resource_local_to_scene = true
+next_pass = SubResource("ShaderMaterial_p11ap")
+albedo_texture = ExtResource("3_1chi6")
+metallic = 1.0
+metallic_texture = ExtResource("4_3ryvr")
+roughness_texture = ExtResource("8_r8dlq")
+normal_enabled = true
+normal_texture = ExtResource("7_726th")
+uv1_scale = Vector3(3, 3, 3)
+texture_filter = 4
+
+[sub_resource type="ArrayMesh" id="ArrayMesh_7kdnt"]
+_surfaces = [{
+"aabb": AABB(-4.5, 0, -4.5, 9, 1e-05, 9),
+"format": 34896613377,
+"index_count": 6,
+"index_data": PackedByteArray(0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 3, 0),
+"name": "Plane",
+"primitive": 3,
+"uv_scale": Vector4(0, 0, 0, 0),
+"vertex_count": 4,
+"vertex_data": PackedByteArray(255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+}]
+blend_shape_mode = 0
+
+[sub_resource type="ArrayMesh" id="ArrayMesh_ruwlj"]
+_surfaces = [{
+"aabb": AABB(-4.5, 0, -4.5, 9, 1e-05, 9),
+"attribute_data": PackedByteArray(255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0),
+"format": 34896613399,
+"index_count": 6,
+"index_data": PackedByteArray(0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 3, 0),
+"material": SubResource("StandardMaterial3D_d1yty"),
+"name": "Plane",
+"primitive": 3,
+"uv_scale": Vector4(0, 0, 0, 0),
+"vertex_count": 4,
+"vertex_data": PackedByteArray(255, 255, 0, 0, 255, 255, 255, 191, 0, 0, 0, 0, 255, 255, 255, 191, 255, 255, 0, 0, 0, 0, 255, 191, 0, 0, 0, 0, 0, 0, 255, 191, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127)
+}]
+blend_shape_mode = 0
+shadow_mesh = SubResource("ArrayMesh_7kdnt")
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_yvipw"]
+data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5)
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_2pd8h"]
+resource_local_to_scene = true
+render_priority = 0
+shader = ExtResource("5_1njh5")
+shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
+shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
+shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
+shader_parameter/pixellation = 128.0
+shader_parameter/time_pixellation = 30.0
+shader_parameter/roughness = 0.15
+shader_parameter/specular_contribution = 0.8
+shader_parameter/emission_strength = 0.02
+shader_parameter/uv_scale = Vector2(8, 8)
+shader_parameter/time_scale = 0.2
+shader_parameter/edge_bleed = 0.25
+shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
+shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
+shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qu6vm"]
+resource_local_to_scene = true
+next_pass = SubResource("ShaderMaterial_2pd8h")
+albedo_texture = ExtResource("9_p11ap")
+metallic = 1.0
+metallic_texture = ExtResource("10_d1yty")
+roughness_texture = ExtResource("12_0idgf")
+normal_enabled = true
+normal_texture = ExtResource("11_ruwlj")
+uv1_scale = Vector3(3, 3, 3)
+texture_filter = 4
+
+[sub_resource type="ArrayMesh" id="ArrayMesh_0idgf"]
+_surfaces = [{
+"aabb": AABB(-4.5, 0, -4.5, 9, 1e-05, 9),
+"attribute_data": PackedByteArray(255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0),
+"format": 34896613399,
+"index_count": 6,
+"index_data": PackedByteArray(0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 3, 0),
+"material": SubResource("StandardMaterial3D_qu6vm"),
+"name": "Plane",
+"primitive": 3,
+"uv_scale": Vector4(0, 0, 0, 0),
+"vertex_count": 4,
+"vertex_data": PackedByteArray(255, 255, 0, 0, 255, 255, 255, 191, 0, 0, 0, 0, 255, 255, 255, 191, 255, 255, 0, 0, 0, 0, 255, 191, 0, 0, 0, 0, 0, 0, 255, 191, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127)
+}]
+blend_shape_mode = 0
+shadow_mesh = SubResource("ArrayMesh_7kdnt")
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_d1yty"]
+data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5)
+
+[sub_resource type="QuadMesh" id="QuadMesh_7y0xw"]
+size = Vector2(9, 3)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2egij"]
+data = PackedVector3Array(4.5, -1.5, 0, -4.5, -1.5, 0, 4.5, 1.5, 0, -4.5, -1.5, 0, -4.5, 1.5, 0, 4.5, 1.5, 0)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ajjdt"]
+data = PackedVector3Array(4.5, -1.5, 0, -4.5, -1.5, 0, 4.5, 1.5, 0, -4.5, -1.5, 0, -4.5, 1.5, 0, 4.5, 1.5, 0)
+
+[sub_resource type="QuadMesh" id="QuadMesh_kcek3"]
+size = Vector2(3.75, 3)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_7y0xw"]
+data = PackedVector3Array(1.875, -1.5, 0, -1.875, -1.5, 0, 1.875, 1.5, 0, -1.875, -1.5, 0, -1.875, 1.5, 0, 1.875, 1.5, 0)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_kcek3"]
+data = PackedVector3Array(1.875, -1.5, 0, -1.875, -1.5, 0, 1.875, 1.5, 0, -1.875, -1.5, 0, -1.875, 1.5, 0, 1.875, 1.5, 0)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_1chi6"]
+data = PackedVector3Array(1.875, -1.5, 0, -1.875, -1.5, 0, 1.875, 1.5, 0, -1.875, -1.5, 0, -1.875, 1.5, 0, 1.875, 1.5, 0)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_3ryvr"]
+data = PackedVector3Array(1.875, -1.5, 0, -1.875, -1.5, 0, 1.875, 1.5, 0, -1.875, -1.5, 0, -1.875, 1.5, 0, 1.875, 1.5, 0)
+
+[sub_resource type="QuadMesh" id="QuadMesh_1njh5"]
+size = Vector2(1.5, 0.5)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_3kphg"]
+data = PackedVector3Array(0.75, -0.25, 0, -0.75, -0.25, 0, 0.75, 0.25, 0, -0.75, -0.25, 0, -0.75, 0.25, 0, 0.75, 0.25, 0)
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_v8y1j"]
+resource_local_to_scene = true
+render_priority = 0
+shader = ExtResource("5_1njh5")
+shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
+shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
+shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
+shader_parameter/pixellation = 128.0
+shader_parameter/time_pixellation = 30.0
+shader_parameter/roughness = 0.15
+shader_parameter/specular_contribution = 0.8
+shader_parameter/emission_strength = 0.02
+shader_parameter/uv_scale = Vector2(8, 8)
+shader_parameter/time_scale = 0.2
+shader_parameter/edge_bleed = 0.25
+shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
+shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
+shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_54or8"]
+resource_local_to_scene = true
+next_pass = SubResource("ShaderMaterial_v8y1j")
+albedo_texture = ExtResource("13_fll4m")
+metallic = 1.0
+metallic_texture = ExtResource("14_dly4i")
+roughness_texture = ExtResource("16_if0c2")
+normal_enabled = true
+normal_texture = ExtResource("15_rp2qp")
+texture_filter = 4
+
+[sub_resource type="ArrayMesh" id="ArrayMesh_d8x4t"]
+_surfaces = [{
+"aabb": AABB(-1.5, 0, -1.5, 3, 1e-05, 3),
+"format": 34896613377,
+"index_count": 6,
+"index_data": PackedByteArray(0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 3, 0),
+"name": "Plane",
+"primitive": 3,
+"uv_scale": Vector4(0, 0, 0, 0),
+"vertex_count": 4,
+"vertex_data": PackedByteArray(255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+}]
+blend_shape_mode = 0
+
+[sub_resource type="ArrayMesh" id="ArrayMesh_1njh5"]
+_surfaces = [{
+"aabb": AABB(-1.5, 0, -1.5, 3, 1e-05, 3),
+"attribute_data": PackedByteArray(255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0),
+"format": 34896613399,
+"index_count": 6,
+"index_data": PackedByteArray(0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 3, 0),
+"material": SubResource("StandardMaterial3D_54or8"),
+"name": "Plane",
+"primitive": 3,
+"uv_scale": Vector4(0, 0, 0, 0),
+"vertex_count": 4,
+"vertex_data": PackedByteArray(255, 255, 0, 0, 255, 255, 255, 191, 0, 0, 0, 0, 255, 255, 255, 191, 255, 255, 0, 0, 0, 0, 255, 191, 0, 0, 0, 0, 0, 0, 255, 191, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127)
+}]
+blend_shape_mode = 0
+shadow_mesh = SubResource("ArrayMesh_d8x4t")
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_p11ap"]
+data = PackedVector3Array(1.5, 0, 1.5, -1.5, 0, 1.5, 1.5, 0, -1.5, 1.5, 0, -1.5, -1.5, 0, 1.5, -1.5, 0, -1.5)
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_d1yty"]
+resource_local_to_scene = true
+render_priority = 0
+shader = ExtResource("5_1njh5")
+shader_parameter/color_1 = Color(0, 0.03, 0.1, 1)
+shader_parameter/color_2 = Color(0, 0.1, 0.3, 1)
+shader_parameter/emission_color = Color(0.25, 0.88, 1, 1)
+shader_parameter/pixellation = 128.0
+shader_parameter/time_pixellation = 30.0
+shader_parameter/roughness = 0.15
+shader_parameter/specular_contribution = 0.8
+shader_parameter/emission_strength = 0.02
+shader_parameter/uv_scale = Vector2(8, 8)
+shader_parameter/time_scale = 0.2
+shader_parameter/edge_bleed = 0.25
+shader_parameter/gunk_mask = SubResource("CompressedTexture2D_hrvvi")
+shader_parameter/gunk_noise = SubResource("NoiseTexture3D_2roq2")
+shader_parameter/gunk_normal_map = SubResource("NoiseTexture3D_fk1xc")
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ruwlj"]
+resource_local_to_scene = true
+next_pass = SubResource("ShaderMaterial_d1yty")
+albedo_texture = ExtResource("13_fll4m")
+metallic = 1.0
+metallic_texture = ExtResource("14_dly4i")
+roughness_texture = ExtResource("16_if0c2")
+normal_enabled = true
+normal_texture = ExtResource("15_rp2qp")
+texture_filter = 4
+
+[sub_resource type="ArrayMesh" id="ArrayMesh_fll4m"]
+_surfaces = [{
+"aabb": AABB(-1.5, 0, -1.5, 3, 1e-05, 3),
+"attribute_data": PackedByteArray(255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0),
+"format": 34896613399,
+"index_count": 6,
+"index_data": PackedByteArray(0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 3, 0),
+"material": SubResource("StandardMaterial3D_ruwlj"),
+"name": "Plane",
+"primitive": 3,
+"uv_scale": Vector4(0, 0, 0, 0),
+"vertex_count": 4,
+"vertex_data": PackedByteArray(255, 255, 0, 0, 255, 255, 255, 191, 0, 0, 0, 0, 255, 255, 255, 191, 255, 255, 0, 0, 0, 0, 255, 191, 0, 0, 0, 0, 0, 0, 255, 191, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127, 255, 255, 255, 127)
+}]
+blend_shape_mode = 0
+shadow_mesh = SubResource("ArrayMesh_d8x4t")
+
+[node name="GhostShipLevel" type="Node3D"]
+
+[node name="PlayerShip" parent="." instance=ExtResource("1_2pyr1")]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.75)
+
+[node name="Airlock" type="Node3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -12)
+
+[node name="Floor" parent="Airlock" instance=ExtResource("2_2egij")]
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Floor"]
+mesh = SubResource("ArrayMesh_ruwlj")
+skeleton = NodePath("../..")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Airlock/Floor"]
+shape = SubResource("ConcavePolygonShape3D_yvipw")
+
+[node name="Ceiling" parent="Airlock" instance=ExtResource("2_2egij")]
+transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 3, 0)
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Ceiling"]
+mesh = SubResource("ArrayMesh_0idgf")
+skeleton = NodePath("../..")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Airlock/Ceiling"]
+shape = SubResource("ConcavePolygonShape3D_d1yty")
+
+[node name="SimpleWalls" type="StaticBody3D" parent="Airlock"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4.5, 0, 0)
+mesh = SubResource("QuadMesh_7y0xw")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4.5, 0, 0)
+shape = SubResource("ConcavePolygonShape3D_2egij")
+
+[node name="MeshInstance3D2" type="MeshInstance3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.5, 0, 0)
+mesh = SubResource("QuadMesh_7y0xw")
+
+[node name="CollisionShape3D2" type="CollisionShape3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.5, 0, 0)
+shape = SubResource("ConcavePolygonShape3D_ajjdt")
+
+[node name="MeshInstance3D3" type="MeshInstance3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.875, 0, 4.5)
+visible = false
+mesh = SubResource("QuadMesh_kcek3")
+
+[node name="CollisionShape3D3" type="CollisionShape3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.875, 0, 4.5)
+shape = SubResource("ConcavePolygonShape3D_7y0xw")
+
+[node name="MeshInstance3D4" type="MeshInstance3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.875, 0, 4.5)
+visible = false
+mesh = SubResource("QuadMesh_kcek3")
+
+[node name="CollisionShape3D4" type="CollisionShape3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.875, 0, 4.5)
+shape = SubResource("ConcavePolygonShape3D_kcek3")
+
+[node name="MeshInstance3D5" type="MeshInstance3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.625, 0, 4.5)
+mesh = SubResource("QuadMesh_kcek3")
+
+[node name="CollisionShape3D5" type="CollisionShape3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 2.625, 0, 4.5)
+shape = SubResource("ConcavePolygonShape3D_1chi6")
+
+[node name="MeshInstance3D6" type="MeshInstance3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.625, 0, 4.5)
+mesh = SubResource("QuadMesh_kcek3")
+
+[node name="CollisionShape3D6" type="CollisionShape3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -2.625, 0, 4.5)
+shape = SubResource("ConcavePolygonShape3D_3ryvr")
+
+[node name="MeshInstance3D7" type="MeshInstance3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.25, 4.5)
+mesh = SubResource("QuadMesh_1njh5")
+
+[node name="CollisionShape3D7" type="CollisionShape3D" parent="Airlock/SimpleWalls"]
+transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.25, 4.5)
+shape = SubResource("ConcavePolygonShape3D_3kphg")
+
+[node name="FarWall" type="Node3D" parent="Airlock"]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -4.5)
+
+[node name="LeftWall" parent="Airlock/FarWall" instance=ExtResource("2_2egij")]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -3, 1.5, 0)
+mask_dim = 64
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/FarWall/LeftWall"]
+mesh = SubResource("ArrayMesh_1njh5")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Airlock/FarWall/LeftWall"]
+shape = SubResource("ConcavePolygonShape3D_p11ap")
+
+[node name="RightWall" parent="Airlock/FarWall" instance=ExtResource("2_2egij")]
+transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 3, 1.5, 0)
+mask_dim = 64
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/FarWall/RightWall"]
+mesh = SubResource("ArrayMesh_fll4m")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="Airlock/FarWall/RightWall"]
+shape = SubResource("ConcavePolygonShape3D_p11ap")
diff --git a/levels/ghost_ship/player_ship/player_ship.tscn b/levels/ghost_ship/player_ship/player_ship.tscn
new file mode 100644
index 0000000..4dc606e
--- /dev/null
+++ b/levels/ghost_ship/player_ship/player_ship.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=7 format=3 uid="uid://oowut88kr2ox"]
+
+[ext_resource type="ArrayMesh" uid="uid://dq4aj5ph31rce" path="res://assets/level/player_ship/player_ship.obj" id="1_nafoa"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nafoa"]
+albedo_color = Color(0.129412, 0.184314, 0.207843, 1)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8m8oy"]
+albedo_color = Color(0.439216, 0.647059, 0.756863, 1)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xpsdy"]
+transparency = 1
+albedo_color = Color(0.223529, 0.627451, 0.929412, 0.470588)
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nbws3"]
+albedo_color = Color(0.243137, 0.231373, 0.219608, 1)
+
+[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_nafoa"]
+data = PackedVector3Array(2.5, 1, 5.5, 2.5, 1, -4.5001, 2.5, 2, 5.5, 2.5, 2, 5.5, 2.5, 1, -4.5001, 2.5, 2, -4.5001, 1.5, 3, 4.4999, 1.5, 3, -4.5001, -1.5, 3, 4.4999, -1.5, 3, 4.4999, 1.5, 3, -4.5001, -1.5, 3, -4.5001, -1.5, 3, -4.5001, 1.5, 3, -4.5001, -0.625, 3, -4.5001, -0.625, 3, -4.5001, 1.5, 3, -4.5001, 0.625, 3, -4.5001, -2.5, 1, -4.5001, -2.5, 1, 5.5, -2.5, 2, -4.5001, -2.5, 2, -4.5001, -2.5, 1, 5.5, -2.5, 2, 5.5, 2.5, 1, -4.5001, 1.5, 0, -4.5001, 2.5, 2, -4.5001, 2.5, 2, -4.5001, 1.5, 0, -4.5001, 1.5, 3, -4.5001, 0.625, 0, -4.5001, 1.5, 3, -4.5001, 1.5, 0, -4.5001, 0.625, 2.5, -4.5001, 1.5, 3, -4.5001, 0.625, 0, -4.5001, 0.625, 3, -4.5001, 1.5, 3, -4.5001, 0.625, 2.5, -4.5001, 0.625, 2.5, -4.5001, -0.625, 2.5, -4.5001, 0.625, 3, -4.5001, 0.625, 3, -4.5001, -0.625, 2.5, -4.5001, -0.625, 3, -4.5001, -0.625, 3, -4.5001, -0.625, 2.5, -4.5001, -1.5, 3, -4.5001, -1.5, 3, -4.5001, -0.625, 2.5, -4.5001, -1.5, 0, -4.5001, -1.5, 0, -4.5001, -0.625, 2.5, -4.5001, -0.625, 0, -4.5001, -1.5, 0, -4.5001, -2.5, 1, -4.5001, -1.5, 3, -4.5001, -1.5, 3, -4.5001, -2.5, 1, -4.5001, -2.5, 2, -4.5001, -2.5, 1, -4.5001, -1.5, 0, -4.5001, -2.5, 1, 5.5, -2.5, 1, 5.5, -1.5, 0, -4.5001, -1.5, 0, 4.4999, -2.5, 2, 5.5, -1.5, 3, 4.4999, -2.5, 2, -4.5001, -2.5, 2, -4.5001, -1.5, 3, 4.4999, -1.5, 3, -4.5001, 2.5, 1, 5.5, 1.5, 0, 4.4999, 2.5, 1, -4.5001, 2.5, 1, -4.5001, 1.5, 0, 4.4999, 1.5, 0, -4.5001, 2.5, 2, -4.5001, 1.5, 3, -4.5001, 2.5, 2, 5.5, 2.5, 2, 5.5, 1.5, 3, -4.5001, 1.5, 3, 4.4999, -1.5, 0, 4.4999, -1.5, 0, -4.5001, 1.5, 0, 4.4999, 1.5, 0, 4.4999, -1.5, 0, -4.5001, 1.5, 0, -4.5001, 1.5, 0, -4.5001, -1.5, 0, -4.5001, 0.625, 0, -4.5001, 0.625, 0, -4.5001, -1.5, 0, -4.5001, -0.625, 0, -4.5001, 0.625, 0, -4.5001, -0.625, 0, -4.5001, 0.625, 0, -4.75, 0.625, 0, -4.75, -0.625, 0, -4.5001, -0.625, 0, -4.75, -0.625, 2.5, -4.5001, 0.625, 2.5, -4.5001, -0.625, 2.5, -4.75, -0.625, 2.5, -4.75, 0.625, 2.5, -4.5001, 0.625, 2.5, -4.75, -0.625, 0, -4.5001, -0.625, 2.5, -4.5001, -0.625, 0, -4.75, -0.625, 0, -4.75, -0.625, 2.5, -4.5001, -0.625, 2.5, -4.75, 0.625, 2.5, -4.5001, 0.625, 0, -4.5001, 0.625, 2.5, -4.75, 0.625, 2.5, -4.75, 0.625, 0, -4.5001, 0.625, 0, -4.75, -1.5, 3, 4.5, -2.5, 2, 5.5, -1.5, 3, 7.5, -1.5, 3, 7.5, -2.5, 2, 5.5, -2.5, 2, 7.5, -1.5, 0, 7.5, 1.5, 0, 7.5, -2.5, 1, 7.5, -2.5, 1, 7.5, 1.5, 0, 7.5, -2.5, 2, 7.5, -2.5, 2, 7.5, 1.5, 0, 7.5, -1.5, 3, 7.5, -1.5, 3, 7.5, 1.5, 0, 7.5, 1.5, 3, 7.5, 1.5, 3, 7.5, 1.5, 0, 7.5, 2.5, 2, 7.5, 2.5, 2, 7.5, 1.5, 0, 7.5, 2.5, 1, 7.5, -2.5, 1, 5.5, -1.5, 0, 4.5, -2.5, 1, 7.5, -2.5, 1, 7.5, -1.5, 0, 4.5, -1.5, 0, 7.5, 2.5, 1, 5.5, 2.5, 2, 5.5, 2.5, 1, 7.5, 2.5, 1, 7.5, 2.5, 2, 5.5, 2.5, 2, 7.5, -2.5, 2, 5.5, -2.5, 1, 5.5, -2.5, 2, 7.5, -2.5, 2, 7.5, -2.5, 1, 5.5, -2.5, 1, 7.5, 2.5, 2, 5.5, 1.5, 3, 4.5, 2.5, 2, 7.5, 2.5, 2, 7.5, 1.5, 3, 4.5, 1.5, 3, 7.5, 1.5, 3, 4.5, -1.5, 3, 4.5, 1.5, 3, 7.5, 1.5, 3, 7.5, -1.5, 3, 4.5, -1.5, 3, 7.5, 1.5, 0, 4.5, 2.5, 1, 5.5, 1.5, 0, 7.5, 1.5, 0, 7.5, 2.5, 1, 5.5, 2.5, 1, 7.5, -1.5, 0, 4.5, 1.5, 0, 4.5, -1.5, 0, 7.5, -1.5, 0, 7.5, 1.5, 0, 4.5, 1.5, 0, 7.5, 1.5, 3, 4.5, 1.5, 0, 4.5, 2.5, 2, 5.5, 2.5, 2, 5.5, 1.5, 0, 4.5, 2.5, 1, 5.5, -2.5, 1, 5.5, -1.5, 0, 4.5, -2.5, 2, 5.5, -2.5, 2, 5.5, -1.5, 0, 4.5, -1.5, 3, 4.5, -1.5, 0, 4.5, 1.5, 0, 4.5, -1.5, 3, 4.5, -1.5, 3, 4.5, 1.5, 0, 4.5, 1.5, 3, 4.5, 1.25, 2.5, -4.75, 1.25, 3, -4.75, 0.625, 2.5, -4.75, 0.625, 2.5, -4.75, 0.625, 0, -4.75, 1.25, 2.5, -4.75, 1.25, 2.5, -4.75, 0.625, 0, -4.75, 1.25, 0, -4.75, 0.625, 2.5, -4.75, 1.25, 3, -4.75, -0.625, 2.5, -4.75, -0.625, 2.5, -4.75, 1.25, 3, -4.75, -1.25, 2.5, -4.75, -1.25, 2.5, -4.75, 1.25, 3, -4.75, -1.25, 3, -4.75, -1.25, 0, -4.75, -0.625, 2.5, -4.75, -1.25, 2.5, -4.75, -0.625, 0, -4.75, -0.625, 2.5, -4.75, -1.25, 0, -4.75, -1.25, 2.5, -4.75, -1.25, 3, -4.75, -1.25, 0, -4.75, -1.25, 0, -4.75, -1.25, 3, -4.75, -1.25, 0, -6.75, -1.25, 0, -6.75, -1.25, 3, -4.75, -1.25, 3, -6.75, -1.25, 3, -4.75, 1.25, 3, -4.75, -1.25, 3, -6.75, -1.25, 3, -6.75, 1.25, 3, -4.75, 1.25, 3, -6.75, 1.25, 0, -4.75, 0.625, 0, -4.75, 1.25, 0, -6.75, 1.25, 0, -6.75, 0.625, 0, -4.75, -1.25, 0, -6.75, -1.25, 0, -6.75, 0.625, 0, -4.75, -1.25, 0, -4.75, -1.25, 0, -4.75, 0.625, 0, -4.75, -0.625, 0, -4.75, 1.25, 2.5, -4.75, 1.25, 0, -4.75, 1.25, 3, -4.75, 1.25, 3, -4.75, 1.25, 0, -4.75, 1.25, 3, -6.75, 1.25, 3, -6.75, 1.25, 0, -4.75, 1.25, 0, -6.75)
+
+[node name="PlayerShip" type="Node3D"]
+
+[node name="StaticBody3D" type="StaticBody3D" parent="."]
+
+[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"]
+mesh = ExtResource("1_nafoa")
+surface_material_override/0 = SubResource("StandardMaterial3D_nafoa")
+surface_material_override/1 = SubResource("StandardMaterial3D_8m8oy")
+surface_material_override/2 = SubResource("StandardMaterial3D_xpsdy")
+surface_material_override/3 = SubResource("StandardMaterial3D_nbws3")
+
+[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
+visible = false
+shape = SubResource("ConcavePolygonShape3D_nafoa")
diff --git a/levels/sandbox/sandbox.tscn b/levels/sandbox/sandbox.tscn
index f7064c5..918ad0b 100644
--- a/levels/sandbox/sandbox.tscn
+++ b/levels/sandbox/sandbox.tscn
@@ -12,12 +12,12 @@
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_cj8bk"]
-[sub_resource type="Sky" id="Sky_6fwow"]
+[sub_resource type="Sky" id="Sky_hrvvi"]
sky_material = SubResource("ProceduralSkyMaterial_cj8bk")
[sub_resource type="Environment" id="Environment_cc548"]
background_mode = 1
-sky = SubResource("Sky_6fwow")
+sky = SubResource("Sky_hrvvi")
ambient_light_source = 2
ambient_light_color = Color(1, 1, 1, 1)
ambient_light_energy = 0.06
diff --git a/src/world/gunk_body/gunk_body.gd b/src/world/gunk_body/gunk_body.gd
index f93ef7f..c7ea0a2 100644
--- a/src/world/gunk_body/gunk_body.gd
+++ b/src/world/gunk_body/gunk_body.gd
@@ -37,6 +37,8 @@ var _exit_thread := false
@onready var mask_control: DrawController = %MaskControl
@onready var mask_texture: TextureRect = %MaskTexture
+@onready var debug_draw: DebugDraw = $DebugDraw
+
func _ready() -> void:
# If no mesh_instance was provided, use the first direct child.
@@ -167,6 +169,8 @@ func _get_uv(point: Vector3, normal: Vector3) -> Vector2:
##
## Returns Vector2.INF if the given point+normal does not lie on this mesh within tolerance.
func _get_px(point: Vector3, normal: Vector3) -> Vector2:
+ debug_draw.draw_vector(normal, point)
+
return _get_uv(point * global_transform, normal * global_basis) * mask_control.size
diff --git a/src/world/gunk_body/gunk_body.tscn b/src/world/gunk_body/gunk_body.tscn
index db989b5..622666f 100644
--- a/src/world/gunk_body/gunk_body.tscn
+++ b/src/world/gunk_body/gunk_body.tscn
@@ -1,7 +1,8 @@
-[gd_scene load_steps=3 format=3 uid="uid://c2omlx4ptrc01"]
+[gd_scene load_steps=4 format=3 uid="uid://c2omlx4ptrc01"]
[ext_resource type="Script" uid="uid://hbl5u20wlwr5" path="res://src/world/gunk_body/gunk_body.gd" id="1_qqbpr"]
[ext_resource type="Script" uid="uid://bom5qysgfvap1" path="res://src/world/gunk_body/draw_controller.gd" id="2_kkcjw"]
+[ext_resource type="Script" uid="uid://ba7480ara8eo" path="res://levels/sandbox/debug_draw.gd" id="3_m8wx4"]
[node name="GunkBody" type="StaticBody3D"]
script = ExtResource("1_qqbpr")
@@ -40,4 +41,14 @@ grow_horizontal = 2
grow_vertical = 2
script = ExtResource("2_kkcjw")
+[node name="DebugDraw" type="Control" parent="."]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+mouse_filter = 2
+script = ExtResource("3_m8wx4")
+
[connection signal="painted" from="MaskViewport/MaskControl" to="." method="_on_mask_painted"]
diff --git a/vault/assets/color_palette.md b/vault/assets/color_palette.md
index 1a50b39..d3418eb 100644
--- a/vault/assets/color_palette.md
+++ b/vault/assets/color_palette.md
@@ -1,27 +1,35 @@
## Player
-- \#00ff4d Laser Green SAMPLE
+- `#00ff4d` Laser Green SAMPLE
+
+## Player Ship
+(Color sampled from Metal Gear Solid)
+- `#050b10` Gunmetal Shadow SAMPLE
+- `#182124` Gunmetal Midtone 1 SAMPLE
+- `#212f35` Gunmetal Midtone 2 SAMPLE
+- `#70a5c1` Gunmetal Highlight SAMPLE
+- `#6586ab` Tech Emission Blue SAMPLE
## Grunk
-- \#001a4d Grunk Blue SAMPLE
-- \#00081a Grunk Dark Blue SAMPLE
-- \#40e0ff Grunk Emission Cyan SAMPLE
+- `#001a4d` Grunk Blue SAMPLE
+- `#00081a` Grunk Dark Blue SAMPLE
+- `#40e0ff` Grunk Emission Cyan SAMPLE
## World
(using [PAPER 8 PALETTE](https://lospec.com/palette-list/paper-8))
-- \#1f244b Tech Shadow SAMPLE
-- \#654053 Tech Midtone 1 SAMPLE
-- \#a8605d Tech Midtone 2 SAMPLE
-- \#d1a67e Tech Highlight 1 SAMPLE
-- \#f6e79c Tech Highlight 2 SAMPLE
-- \#3c6b64 Tech Emissive Shadow SAMPLE
-- \#60ae7b Tech Emissive Midtone SAMPLE
-- \#b6cf8e Tech Emissive Highlight SAMPLE
+- `#1f244b` Tech Shadow SAMPLE
+- `#654053` Tech Midtone 1 SAMPLE
+- `#a8605d` Tech Midtone 2 SAMPLE
+- `#d1a67e` Tech Highlight 1 SAMPLE
+- `#f6e79c` Tech Highlight 2 SAMPLE
+- `#3c6b64` Tech Emissive Shadow SAMPLE
+- `#60ae7b` Tech Emissive Midtone SAMPLE
+- `#b6cf8e` Tech Emissive Highlight SAMPLE
## Props
-- \#e8e1d1 Control White SAMPLE
-- \#b4ac9e Control Dark White SAMPLE
-- \#4d4a46 Control Gray SAMPLE
-- \#3e3b38 Control Gray Shadow SAMPLE
-- \#716e6b Control Gray Highlight SAMPLE
-- \#ff4a1c Emissive Blood Orange SAMPLE
-- \#dd1c1a DANGER Red SAMPLE
-- \#23fb59 SUCCESS Green SAMPLE
-- \#39a0ed HI-TECH Blue SAMPLE
\ No newline at end of file
+- `#e8e1d1` Control White SAMPLE
+- `#b4ac9e` Control Dark White SAMPLE
+- `#4d4a46` Control Gray SAMPLE
+- `#3e3b38` Control Gray Shadow SAMPLE
+- `#716e6b` Control Gray Highlight SAMPLE
+- `#ff4a1c` Emissive Blood Orange SAMPLE
+- `#dd1c1a` DANGER Red SAMPLE
+- `#23fb59` SUCCESS Green SAMPLE
+- `#39a0ed` HI-TECH Blue SAMPLE
\ No newline at end of file