diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 3cf246ba6..5a2b115e5 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -329,6 +329,11 @@ tile.crate_metal.name=Maschinenkiste tile.crate_red.name=Rote Kiste tile.marker_structure.name=Multiblock-Strukturvorlage +tile.struct_launcher.name=Startrampe-Komponentenblock +tile.struct_scaffold.name=Startrampe-Gerüstblock +tile.struct_launcher_core.name=Kompaktrampe-Kernkomponente +tile.struct_launcher_core_large.name=Startrampe-Kernkomponente + tile.machine_difurnace_off.name=Hochofen tile.machine_difurnace_on.name=Hochofen container.diFurnace=Hochofen @@ -1671,6 +1676,7 @@ item.mp_warhead_15_incendiary.name=Größe 15 Brandsprengkopf item.mp_warhead_15_nuclear.name=Größe 15 Atomsprengkopf "Tantchen Bertha" item.mp_warhead_15_nuclear_shark.name=Größe 15 Atomsprengkopf "Billigsdorfer Kugelwilli" item.mp_warhead_15_boxcar.name=Größe 15 Güterwagon? +item.mp_warhead_15_n2.name=Größe 15 N²-Mine item.mp_fuselage_10_kerosene.name=Größe 10 Kerosintank item.mp_fuselage_10_kerosene_camo.name=Größe 10 Kerosintank (Camouflage) @@ -1710,11 +1716,13 @@ item.mp_fuselage_15_kerosene_insulation.name=Größe 15 Kerosintank (Oranger Iso item.mp_fuselage_15_kerosene_metal.name=Größe 15 Kerosintank (Metall) item.mp_fuselage_15_kerosene_decorated.name=Größe 15 Kerosintank (Dekoriertes Metall) item.mp_fuselage_15_kerosene_steampunk.name=Größe 15 Kerosintank (Steampunk) +item.mp_fuselage_15_kerosene_polite.name=Größe 15 Kerosintank (Höflich) item.mp_fuselage_15_kerosene_blackjack.name=Größe 15 Kerosintank (Queen Whiskey) item.mp_fuselage_15_solid.name=Größe 15 Festbrennstofftank item.mp_fuselage_15_solid_insulation.name=Größe 15 Festbrennstofftank (Oranger Isolator) item.mp_fuselage_15_solid_soviet_glory.name=Größe 15 Festbrennstofftank (Sowjetischer Ruhm) item.mp_fuselage_15_solid_soviet_stank.name=Größe 15 Festbrennstofftank (Sowjetischer Mief) +item.mp_fuselage_15_solid_desh.name=Größe 15 Festbrennstofftank (Deshverkleidung) item.mp_fuselage_15_hydrogen.name=Größe 15 Wasserstofftank item.mp_fuselage_15_balefire.name=Größe 15 BF-Kraftstofftank @@ -1758,6 +1766,7 @@ item.sat_laser.name=Orbitaler Todesstrahl item.sat_foeq.name=PEAF - Mk.I FOEQ Dunasonde mit experimenter nuklearer Schubdüse item.sat_resonator.name=Xenium-Resonator-Satellit item.sat_miner.name=Asteroiden-Förderschiff +item.sat_gerald.name=Gerald der Konstruktionsandroid item.sat_chip.name=Satelliten-ID-Chip item.sat_interface.name=Satelliten-Kontrollinterface tile.sat_mapper.name=Oberflächen-Abtastungssatellit (Dekoblock) diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 161eb1f80..8af1c0342 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -329,6 +329,11 @@ tile.crate_metal.name=Machine Crate tile.crate_red.name=Red Crate tile.marker_structure.name=Multiblock Structure Marker +tile.struct_launcher.name=Launch Pad Component Block +tile.struct_scaffold.name=Launch Pad Scaffold Block +tile.struct_launcher_core.name=Compact Launcher Core Component +tile.struct_launcher_core_large.name=Launch Table Core Component + tile.machine_difurnace_off.name=Blast Furnace tile.machine_difurnace_on.name=Blast Furnace container.diFurnace=Blast Furnace @@ -1671,6 +1676,7 @@ item.mp_warhead_10_nuclear_large.name=Size 10 Nuclear Warhead "Chernobyl Boris" item.mp_warhead_15_nuclear.name=Size 15 Nuclear Warhead "Auntie Bertha" item.mp_warhead_15_nuclear_shark.name=Size 15 Nuclear Warhead "Discount Bullet Bill" item.mp_warhead_15_boxcar.name=Size 15 Boxcar? +item.mp_warhead_15_n2.name=Size 15 N² Mine item.mp_fuselage_10_kerosene.name=Size 10 Kerosene Fuselage item.mp_fuselage_10_kerosene_camo.name=Size 10 Kerosene Fuselage (Camo) @@ -1710,11 +1716,13 @@ item.mp_fuselage_15_kerosene_insulation.name=Size 15 Kerosene Fuselage (Orange I item.mp_fuselage_15_kerosene_metal.name=Size 15 Kerosene Fuselage (Metal) item.mp_fuselage_15_kerosene_decorated.name=Size 15 Kerosene Fuselage (Decorated Metal) item.mp_fuselage_15_kerosene_steampunk.name=Size 15 Kerosene Fuselage (Steampunk) +item.mp_fuselage_15_kerosene_polite.name=Size 15 Kerosene Fuselage (Polite) item.mp_fuselage_15_kerosene_blackjack.name=Size 15 Kerosene Fuselage (Queen Whiskey) item.mp_fuselage_15_solid.name=Size 15 Solid Fuel Fuselage item.mp_fuselage_15_solid_insulation.name=Size 15 Solid Fuel Fuselage (Orange Insulation) item.mp_fuselage_15_solid_soviet_glory.name=Size 15 Solid Fuel Fuselage (Soviet Glory) item.mp_fuselage_15_solid_soviet_stank.name=Size 15 Solid Fuel Fuselage (Soviet Stank) +item.mp_fuselage_15_solid_desh.name=Size 15 Solid Fuel Fuselage (Desh Plating) item.mp_fuselage_15_hydrogen.name=Size 15 Hydrogen Fuselage item.mp_fuselage_15_balefire.name=Size 15 BF Fuselage @@ -1758,6 +1766,7 @@ item.sat_laser.name=Orbital Death Ray item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion item.sat_resonator.name=Xenium Resonator Satellite item.sat_miner.name=Asteroid Mining Ship +item.sat_gerald.name=Gerald The Construction Android item.sat_chip.name=Satellite ID-Chip item.sat_interface.name=Satellite Control Interface tile.sat_mapper.name=Surface Mapping Satellite (Deco Block) diff --git a/assets/hbm/models/launch_table/launch_table_base.obj b/assets/hbm/models/launch_table/launch_table_base.obj new file mode 100644 index 000000000..ba8ad2ce0 --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_base.obj @@ -0,0 +1,128 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_base.blend' +# www.blender.org +o Cube_Cube.001 +v -4.500000 0.000000 4.500000 +v -4.500000 1.000000 4.500000 +v -4.500000 0.000000 0.500000 +v -4.500000 1.000000 0.500000 +v 4.500000 0.000000 4.500000 +v 4.500000 1.000000 4.500000 +v 4.500000 0.000000 0.500000 +v 4.500000 1.000000 0.500000 +v -4.500000 0.000000 -0.500000 +v -4.500000 1.000000 -0.500000 +v -4.500000 0.000000 -4.500000 +v -4.500000 1.000000 -4.500000 +v 4.500000 0.000000 -0.500000 +v 4.500000 1.000000 -0.500000 +v 4.500000 0.000000 -4.500000 +v 4.500000 1.000000 -4.500000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v 0.000000 0.500000 0.500000 +v 0.000000 0.500000 -0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v 4.500000 1.000000 0.500000 +v 4.500000 1.000000 -0.500000 +v -4.500000 1.000000 0.500000 +v -4.500000 1.000000 -0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v 4.500000 1.000000 0.500000 +v 4.500000 1.000000 -0.500000 +v -4.500000 1.000000 0.500000 +v -4.500000 1.000000 -0.500000 +vt 0.722222 0.333333 +vt 0.722222 0.277778 +vt 0.944444 0.277778 +vt 0.500000 0.222222 +vt 0.500000 0.166667 +vt 1.000000 0.166667 +vt 0.500000 0.277778 +vt 0.722222 0.222222 +vt 0.500000 0.111111 +vt 0.500000 0.055556 +vt 1.000000 0.055556 +vt 0.222222 1.000000 +vt 0.222222 0.500000 +vt 0.444444 0.500000 +vt 0.222222 0.000000 +vt 0.000000 0.500000 +vt 0.500000 0.333333 +vt 0.500000 -0.000000 +vt 1.000000 -0.000000 +vt 0.944444 0.222222 +vt 1.000000 0.111111 +vt -0.000000 1.000000 +vt 0.500000 0.500000 +vt 0.277778 0.500000 +vt 0.555556 0.361111 +vt 0.611111 0.361111 +vt 0.611111 0.388889 +vt 0.555556 0.333333 +vt 0.277778 0.277778 +vt 0.222222 0.222222 +vt 0.277778 0.000000 +vt 0.555556 0.388889 +vt 0.944444 0.333333 +vt 1.000000 0.222222 +vt 0.444444 1.000000 +vt 0.000000 0.000000 +vt 0.611111 0.333333 +vt 0.222222 0.277778 +vt 0.277778 0.222222 +vt 0.500000 0.388889 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.707100 0.707100 0.000000 +vn 0.707100 0.707100 0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/6/2 +f 6/7/3 5/4/3 7/8/3 +f 2/9/4 1/10/4 5/11/4 +f 3/12/5 7/13/5 5/14/5 +f 8/15/6 4/13/6 2/16/6 +f 12/17/1 11/7/1 9/2/1 +f 16/10/2 15/18/2 11/19/2 +f 14/2/3 13/8/3 15/20/3 +f 10/5/4 9/9/4 13/21/4 +f 11/22/5 15/16/5 13/13/5 +f 16/18/6 12/23/6 10/24/6 +f 21/25/7 22/26/7 19/27/7 +f 22/26/8 21/25/8 18/28/8 +f 25/29/6 30/24/6 29/13/6 +f 24/30/6 27/15/6 28/31/6 +f 20/17/5 18/28/5 17/32/5 +f 37/13/5 38/24/5 33/29/5 +f 36/31/5 35/15/5 32/30/5 +f 2/33/1 4/1/1 1/3/1 +f 4/34/2 8/4/2 3/6/2 +f 8/2/3 6/7/3 7/8/3 +f 6/21/4 2/9/4 5/11/4 +f 1/35/5 3/12/5 5/14/5 +f 6/36/6 8/15/6 2/16/6 +f 10/1/1 12/17/1 9/2/1 +f 12/11/2 16/10/2 11/19/2 +f 16/3/3 14/2/3 15/20/3 +f 14/6/4 10/5/4 13/21/4 +f 9/12/5 11/22/5 13/13/5 +f 14/31/6 16/18/6 10/24/6 +f 17/32/7 21/25/7 19/27/7 +f 20/37/8 22/26/8 18/28/8 +f 23/38/6 25/29/6 29/13/6 +f 26/39/6 24/30/6 28/31/6 +f 19/40/5 20/17/5 17/32/5 +f 31/38/5 37/13/5 33/29/5 +f 34/39/5 36/31/5 32/30/5 diff --git a/assets/hbm/models/launch_table/launch_table_large_pad.obj b/assets/hbm/models/launch_table/launch_table_large_pad.obj new file mode 100644 index 000000000..799d11ea8 --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_large_pad.obj @@ -0,0 +1,138 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_large_pad.blend' +# www.blender.org +o Cube.002_Cube.003 +v 3.000000 1.000000 0.500001 +v 2.500000 2.000000 0.500001 +v 3.000000 1.000000 2.500001 +v 2.500000 2.000000 2.500001 +v -3.000000 1.000000 0.500000 +v -2.500000 2.000000 0.500000 +v -3.000000 1.000000 2.500000 +v -2.500000 2.000000 2.500000 +v 3.000000 1.000000 -2.999999 +v 2.500000 2.000000 -2.499999 +v 3.000000 1.000000 -0.499999 +v 2.500000 2.000000 -0.500000 +v -3.000000 1.000000 -3.000000 +v -2.500000 2.000000 -2.500000 +v -3.000000 1.000000 -0.500000 +v -2.500000 2.000000 -0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 2.000000 0.500000 +v 0.500000 2.000000 -0.500000 +v -0.500000 2.000000 0.500000 +v -0.500000 2.000000 -0.500000 +v 0.500000 2.000000 0.500000 +v 0.500000 2.000000 -0.500000 +v -0.500000 2.000000 0.500000 +v -0.500000 2.000000 -0.500000 +vt 0.000000 0.545455 +vt 0.000000 0.454545 +vt 0.181818 0.454545 +vt 0.045455 0.090909 +vt 0.000041 0.000041 +vt 0.545455 0.000000 +vt 0.318182 0.454545 +vt 0.318182 0.363636 +vt 0.500000 0.363636 +vt 0.318182 0.181818 +vt 0.318182 0.272727 +vt 0.227273 0.272727 +vt 0.454545 0.545455 +vt 0.272727 0.545455 +vt 0.272727 0.454545 +vt 0.727273 0.181818 +vt 0.545455 0.454545 +vt 0.045455 0.454545 +vt 0.000000 0.363636 +vt 0.227273 0.363636 +vt 0.045455 0.181818 +vt -0.000000 0.090909 +vt 0.545455 0.090909 +vt 1.000000 -0.000000 +vt 1.000000 0.454545 +vt 0.818182 0.272727 +vt 0.636364 0.454545 +vt 0.636364 0.545455 +vt 0.727273 0.454545 +vt 0.181818 0.545455 +vt 0.727273 -0.000000 +vt 0.818182 -0.000000 +vt 0.818182 0.454545 +vt 0.227273 0.454545 +vt 0.818182 0.181818 +vt 0.727273 0.272727 +vt 0.500000 0.090909 +vt 0.500000 0.454545 +vt 0.045455 0.272727 +vt 0.227273 0.181818 +vt -0.000000 0.181818 +vt 0.545455 0.181818 +vt 0.500000 0.272727 +vt 0.500000 0.181818 +vt 0.045455 0.363636 +vt 0.000000 0.272727 +vt 0.545455 0.272727 +vt 0.545455 0.545455 +vt 0.727273 0.545455 +vn 0.894400 0.447200 0.000000 +vn -0.000000 0.000000 1.000000 +vn -0.894400 0.447200 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.447200 -0.894400 +vn -1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/6/2 +f 6/7/3 5/8/3 7/9/3 +f 19/10/4 23/11/4 21/12/4 +f 10/13/1 12/14/1 11/15/1 +f 21/16/5 8/17/5 4/6/5 +f 14/18/3 13/19/3 15/20/3 +f 10/21/6 9/22/6 13/23/6 +f 12/9/2 22/8/2 18/11/2 +f 10/24/5 14/25/5 24/26/5 +f 18/17/7 17/27/7 21/28/7 +f 23/28/8 19/27/8 20/29/8 +f 2/30/1 1/3/1 11/15/1 +f 21/16/5 2/31/5 12/32/5 +f 24/26/5 16/33/5 6/29/5 +f 16/34/3 15/20/3 5/8/3 +f 22/35/5 24/26/5 23/36/5 +f 27/36/9 28/26/9 26/35/9 +f 2/30/1 4/1/1 1/3/1 +f 4/37/2 8/4/2 3/6/2 +f 8/38/3 6/7/3 7/9/3 +f 21/12/4 2/39/4 17/40/4 +f 1/41/4 17/40/4 2/39/4 +f 19/10/4 5/42/4 6/43/4 +f 6/43/4 23/11/4 19/10/4 +f 21/12/4 17/40/4 19/10/4 +f 9/38/1 10/13/1 11/15/1 +f 4/6/5 2/31/5 21/16/5 +f 21/16/5 23/36/5 8/17/5 +f 6/29/5 8/17/5 23/36/5 +f 16/34/3 14/18/3 15/20/3 +f 14/44/6 10/21/6 13/23/6 +f 16/45/2 15/46/2 20/12/2 +f 20/12/2 18/11/2 22/8/2 +f 11/47/2 12/9/2 18/11/2 +f 22/8/2 24/20/2 20/12/2 +f 16/45/2 20/12/2 24/20/2 +f 24/26/5 22/35/5 10/24/5 +f 12/32/5 10/24/5 22/35/5 +f 14/25/5 16/33/5 24/26/5 +f 22/48/7 18/17/7 21/28/7 +f 24/49/8 23/28/8 20/29/8 +f 12/14/1 2/30/1 11/15/1 +f 22/35/5 21/16/5 12/32/5 +f 23/36/5 24/26/5 6/29/5 +f 6/7/3 16/34/3 5/8/3 +f 21/16/5 22/35/5 23/36/5 +f 25/16/9 27/36/9 26/35/9 diff --git a/assets/hbm/models/launch_table/launch_table_large_scaffold_base.obj b/assets/hbm/models/launch_table/launch_table_large_scaffold_base.obj new file mode 100644 index 000000000..531852d63 --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_large_scaffold_base.obj @@ -0,0 +1,311 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_large_scaffold_base.blend' +# www.blender.org +o Cube.003_Cube.004 +v 1.000000 0.000000 0.749996 +v 1.000000 1.000000 0.749996 +v 1.000000 0.000000 0.999996 +v 1.000000 1.000000 0.999996 +v 0.750000 0.000000 0.749996 +v 0.750000 1.000000 0.749996 +v 0.750000 0.000000 0.999996 +v 0.750000 1.000000 0.999996 +v -0.750000 0.000000 0.749996 +v -0.750000 1.000000 0.749996 +v -0.750000 0.000000 0.999996 +v -0.750000 1.000000 0.999996 +v -1.000000 0.000000 0.749996 +v -1.000000 1.000000 0.749996 +v -1.000000 0.000000 0.999996 +v -1.000000 1.000000 0.999996 +v -0.750000 0.000000 -1.000004 +v -0.750000 1.000000 -1.000004 +v -0.750000 0.000000 -0.750004 +v -0.750000 1.000000 -0.750004 +v -1.000000 0.000000 -1.000004 +v -1.000000 1.000000 -1.000004 +v -1.000000 0.000000 -0.750004 +v -1.000000 1.000000 -0.750004 +v 1.000000 0.000000 -1.000004 +v 1.000000 1.000000 -1.000004 +v 1.000000 0.000000 -0.750004 +v 1.000000 1.000000 -0.750004 +v 0.750000 0.000000 -1.000004 +v 0.750000 1.000000 -1.000004 +v 0.750000 0.000000 -0.750004 +v 0.750000 1.000000 -0.750004 +v 0.750000 0.000000 0.874996 +v 0.750000 1.000000 0.874996 +v -0.750000 0.000000 0.874996 +v -0.750000 1.000000 0.874996 +v 0.750000 0.000000 -0.875004 +v 0.750000 1.000000 -0.875004 +v -0.750000 0.000000 -0.875004 +v -0.750000 1.000000 -0.875004 +v 0.875000 0.000000 -0.750004 +v 0.875000 1.000000 -0.750004 +v 0.875000 0.000000 0.749996 +v 0.875000 1.000000 0.749996 +v -0.875000 0.000000 -0.750004 +v -0.875000 1.000000 -0.750004 +v -0.875000 0.000000 0.749996 +v -0.875000 1.000000 0.749996 +v 0.500000 1.000000 -0.250004 +v 0.500000 0.000000 -0.250004 +v -0.500000 0.000000 -0.250004 +v -0.500000 1.000000 -0.250004 +v -0.676777 0.000000 -0.323227 +v -0.676777 1.000000 -0.323227 +v -0.750000 0.000000 -0.500004 +v -0.750000 1.000000 -0.500004 +v -0.676777 0.000000 -0.676780 +v -0.676777 1.000000 -0.676780 +v -0.500000 0.000000 -0.750004 +v -0.500000 1.000000 -0.750004 +v -0.323223 0.000000 -0.676780 +v -0.323223 1.000000 -0.676780 +v -0.250000 0.000000 -0.500004 +v -0.250000 1.000000 -0.500004 +v -0.323223 0.000000 -0.323227 +v -0.323223 1.000000 -0.323227 +v 0.323223 0.000000 -0.323227 +v 0.323223 1.000000 -0.323227 +v 0.250000 0.000000 -0.500004 +v 0.250000 1.000000 -0.500004 +v 0.323223 0.000000 -0.676780 +v 0.323223 1.000000 -0.676780 +v 0.500000 0.000000 -0.750004 +v 0.500000 1.000000 -0.750004 +v 0.676777 0.000000 -0.676780 +v 0.676777 1.000000 -0.676780 +v 0.750000 0.000000 -0.500004 +v 0.750000 1.000000 -0.500004 +v 0.676777 0.000000 -0.323227 +v 0.676777 1.000000 -0.323227 +v 0.156250 0.000000 -0.156254 +v 0.156250 1.000000 -0.156254 +v 0.156250 0.000000 0.156246 +v 0.156250 1.000000 0.156246 +v -0.156250 0.000000 -0.156254 +v -0.156250 1.000000 -0.156254 +v -0.156250 0.000000 0.156246 +v -0.156250 1.000000 0.156246 +v 0.750000 0.000000 0.874996 +v 0.750000 1.000000 0.874996 +v -0.750000 0.000000 0.874996 +v -0.750000 1.000000 0.874996 +v 0.750000 0.000000 -0.875004 +v 0.750000 1.000000 -0.875004 +v -0.750000 0.000000 -0.875004 +v -0.750000 1.000000 -0.875004 +v 0.875000 0.000000 -0.750004 +v 0.875000 1.000000 -0.750004 +v 0.875000 0.000000 0.749996 +v 0.875000 1.000000 0.749996 +v -0.875000 0.000000 -0.750004 +v -0.875000 1.000000 -0.750004 +v -0.875000 0.000000 0.749996 +v -0.875000 1.000000 0.749996 +vt 0.176471 0.235294 +vt 0.176471 -0.000000 +vt 0.235294 -0.000000 +vt 0.117647 0.235294 +vt 0.117647 0.000000 +vt 0.058824 0.235294 +vt 0.058824 0.000000 +vt 0.000000 0.235294 +vt 0.000000 -0.000000 +vt 0.779412 0.544118 +vt 0.705882 0.544118 +vt 0.705882 0.470588 +vt 0.058824 0.294118 +vt 0.000000 0.294118 +vt 0.852941 0.470588 +vt 0.852941 0.235294 +vt 0.926471 0.235294 +vt 0.926471 0.470588 +vt 1.000000 0.235294 +vt 0.705882 0.588235 +vt 0.352941 0.588235 +vt 0.352941 0.352941 +vt -0.000000 0.588235 +vt 0.705882 0.823529 +vt 0.352941 0.823529 +vt 0.000000 0.823529 +vt 0.720588 0.235294 +vt 0.676471 0.235294 +vt 0.676471 0.000000 +vt 0.588235 0.235294 +vt 0.544118 0.235294 +vt 0.544118 -0.000000 +vt 0.764706 0.235294 +vt 0.720588 0.000000 +vt 0.500000 0.235294 +vt 0.500000 -0.000000 +vt 0.808824 0.235294 +vt 0.764706 0.000000 +vt 0.455882 0.235294 +vt 0.455882 -0.000000 +vt 0.705882 0.235294 +vt 0.779412 0.235294 +vt 0.808824 0.000000 +vt 0.411765 0.235294 +vt 0.411765 -0.000000 +vt 0.632353 0.235294 +vt 0.632353 0.000000 +vt 0.897059 0.235294 +vt 0.852941 0.000000 +vt 0.367647 0.235294 +vt 0.367647 -0.000000 +vt 0.588235 0.000000 +vt 0.941176 0.235294 +vt 0.897059 0.000000 +vt 0.323529 0.235294 +vt 0.323529 -0.000000 +vt 0.235294 0.294118 +vt 0.338235 0.250000 +vt 0.352941 0.294118 +vt 0.279412 0.235294 +vt 0.235294 0.235294 +vt 0.279412 -0.000000 +vt 0.588235 0.294118 +vt 0.647059 0.235294 +vt 0.647059 0.352941 +vt 0.779412 0.470588 +vt 1.000000 0.470588 +vt 0.705882 0.352941 +vt 0.000000 0.352941 +vt 0.941176 0.000000 +vt 0.338235 0.338235 +vt 0.294118 0.352941 +vt 0.250000 0.338235 +vt 0.250000 0.250000 +vt 0.294118 0.235294 +vt 0.705882 0.294118 +vt 0.691176 0.338235 +vt 0.602941 0.338235 +vt 0.602941 0.250000 +vt 0.691176 0.250000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 -0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.923900 0.000000 -0.382700 +vn -0.382700 0.000000 0.923900 +vn 0.382700 0.000000 -0.923900 +vn -0.923900 0.000000 0.382700 +vn -0.382700 0.000000 -0.923900 +vn -0.923900 0.000000 -0.382700 +vn 0.923900 0.000000 0.382700 +vn 0.382700 0.000000 0.923900 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/2/2 +f 6/6/3 5/7/3 7/5/3 +f 2/8/4 1/9/4 5/7/4 +f 88/10/5 84/11/5 82/12/5 +f 6/6/5 8/13/5 4/14/5 +f 12/1/1 11/2/1 9/3/1 +f 16/4/2 15/5/2 11/2/2 +f 14/6/3 13/7/3 15/5/3 +f 10/8/4 9/9/4 13/7/4 +f 14/6/5 16/13/5 12/14/5 +f 20/1/1 19/2/1 17/3/1 +f 24/4/2 23/5/2 19/2/2 +f 22/6/3 21/7/3 23/5/3 +f 18/8/4 17/9/4 21/7/4 +f 82/15/4 81/16/4 85/17/4 +f 24/13/5 20/14/5 18/8/5 +f 28/1/1 27/2/1 25/3/1 +f 32/4/2 31/5/2 27/2/2 +f 30/6/3 29/7/3 31/5/3 +f 26/8/4 25/9/4 29/7/4 +f 86/18/3 85/17/3 87/19/3 +f 32/13/5 28/14/5 26/8/5 +f 34/20/2 36/21/2 35/22/2 +f 39/22/4 40/21/4 38/23/4 +f 42/24/1 44/25/1 43/21/1 +f 47/21/3 48/25/3 46/26/3 +f 76/27/6 78/28/6 77/29/6 +f 52/30/7 54/31/7 53/32/7 +f 74/33/8 76/27/8 75/34/8 +f 54/31/9 56/35/9 55/36/9 +f 72/37/10 74/33/10 73/38/10 +f 56/35/11 58/39/11 57/40/11 +f 88/12/2 87/41/2 83/42/2 +f 70/16/11 72/37/11 71/43/11 +f 58/39/10 60/44/10 59/45/10 +f 78/28/12 80/46/12 79/47/12 +f 68/48/9 70/16/9 69/49/9 +f 60/44/8 62/50/8 61/51/8 +f 80/46/13 49/30/13 50/52/13 +f 49/53/7 68/48/7 67/54/7 +f 62/50/6 64/55/6 63/56/6 +f 64/57/5 58/58/5 56/59/5 +f 66/60/13 52/61/13 51/3/13 +f 64/55/12 66/60/12 65/62/12 +f 78/63/5 74/64/5 49/65/5 +f 84/66/1 83/42/1 81/16/1 +f 91/22/4 92/21/4 90/20/4 +f 94/23/2 96/21/2 95/22/2 +f 99/21/3 100/25/3 98/24/3 +f 102/26/1 104/25/1 103/21/1 +f 2/61/1 4/1/1 1/3/1 +f 4/1/2 8/4/2 3/2/2 +f 8/4/3 6/6/3 7/5/3 +f 6/6/4 2/8/4 5/7/4 +f 86/66/5 88/10/5 82/12/5 +f 2/8/5 6/6/5 4/14/5 +f 10/61/1 12/1/1 9/3/1 +f 12/1/2 16/4/2 11/2/2 +f 16/4/3 14/6/3 15/5/3 +f 14/6/4 10/8/4 13/7/4 +f 10/8/5 14/6/5 12/14/5 +f 18/61/1 20/1/1 17/3/1 +f 20/1/2 24/4/2 19/2/2 +f 24/4/3 22/6/3 23/5/3 +f 22/6/4 18/8/4 21/7/4 +f 86/18/4 82/15/4 85/17/4 +f 22/6/5 24/13/5 18/8/5 +f 26/61/1 28/1/1 25/3/1 +f 28/1/2 32/4/2 27/2/2 +f 32/4/3 30/6/3 31/5/3 +f 30/6/4 26/8/4 29/7/4 +f 88/67/3 86/18/3 87/19/3 +f 30/6/5 32/13/5 26/8/5 +f 33/68/2 34/20/2 35/22/2 +f 37/69/4 39/22/4 38/23/4 +f 41/20/1 42/24/1 43/21/1 +f 45/23/3 47/21/3 46/26/3 +f 75/34/6 76/27/6 77/29/6 +f 51/52/7 52/30/7 53/32/7 +f 73/38/8 74/33/8 75/34/8 +f 53/32/9 54/31/9 55/36/9 +f 71/43/10 72/37/10 73/38/10 +f 55/36/11 56/35/11 57/40/11 +f 84/66/2 88/12/2 83/42/2 +f 69/49/11 70/16/11 71/43/11 +f 57/40/10 58/39/10 59/45/10 +f 77/29/12 78/28/12 79/47/12 +f 67/54/9 68/48/9 69/49/9 +f 59/45/8 60/44/8 61/51/8 +f 79/47/13 80/46/13 50/52/13 +f 50/70/7 49/53/7 67/54/7 +f 61/51/6 62/50/6 63/56/6 +f 56/59/5 54/71/5 52/72/5 +f 52/72/5 66/73/5 56/59/5 +f 64/57/5 62/74/5 60/75/5 +f 60/75/5 58/58/5 64/57/5 +f 56/59/5 66/73/5 64/57/5 +f 65/62/13 66/60/13 51/3/13 +f 63/56/12 64/55/12 65/62/12 +f 70/76/5 68/77/5 49/65/5 +f 49/65/5 80/78/5 78/63/5 +f 78/63/5 76/79/5 74/64/5 +f 74/64/5 72/80/5 70/76/5 +f 70/76/5 49/65/5 74/64/5 +f 82/15/1 84/66/1 81/16/1 +f 89/68/4 91/22/4 90/20/4 +f 93/69/2 94/23/2 95/22/2 +f 97/20/3 99/21/3 98/24/3 +f 101/23/1 102/26/1 103/21/1 diff --git a/assets/hbm/models/launch_table/launch_table_large_scaffold_connector.obj b/assets/hbm/models/launch_table/launch_table_large_scaffold_connector.obj new file mode 100644 index 000000000..cf39ea655 --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_large_scaffold_connector.obj @@ -0,0 +1,491 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_large_scaffold_connector.blend' +# www.blender.org +o Cube.004_Cube.005 +v 1.000000 0.000000 0.750000 +v 1.000000 1.000000 0.750000 +v 1.000000 0.000000 1.000000 +v 1.000000 1.000000 1.000000 +v 0.750000 0.000000 0.750000 +v 0.750000 1.000000 0.750000 +v 0.750000 0.000000 1.000000 +v 0.750000 1.000000 1.000000 +v -0.750000 0.000000 0.750000 +v -0.750000 1.000000 0.750000 +v -0.750000 0.000000 1.000000 +v -0.750000 1.000000 1.000000 +v -1.000000 0.000000 0.750000 +v -1.000000 1.000000 0.750000 +v -1.000000 0.000000 1.000000 +v -1.000000 1.000000 1.000000 +v -0.750000 0.000000 -1.000000 +v -0.750000 1.000000 -1.000000 +v -0.750000 0.000000 -0.750000 +v -0.750000 1.000000 -0.750000 +v -1.000000 0.000000 -1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 0.000000 -0.750000 +v -1.000000 1.000000 -0.750000 +v 1.000000 0.000000 -1.000000 +v 1.000000 1.000000 -1.000000 +v 1.000000 0.000000 -0.750000 +v 1.000000 1.000000 -0.750000 +v 0.750000 0.000000 -1.000000 +v 0.750000 1.000000 -1.000000 +v 0.750000 0.000000 -0.750000 +v 0.750000 1.000000 -0.750000 +v 0.750000 0.000000 0.875000 +v 0.750000 1.000000 0.875000 +v -0.750000 0.000000 0.875000 +v -0.750000 1.000000 0.875000 +v 0.750000 0.000000 -0.875000 +v 0.750000 1.000000 -0.875000 +v -0.750000 0.000000 -0.875000 +v -0.750000 1.000000 -0.875000 +v 0.875000 0.000000 -0.750000 +v 0.875000 1.000000 -0.750000 +v 0.875000 0.000000 0.750000 +v 0.875000 1.000000 0.750000 +v -0.875000 0.000000 -0.750000 +v -0.875000 1.000000 -0.750000 +v -0.875000 0.000000 0.750000 +v -0.875000 1.000000 0.750000 +v 0.500000 0.000000 -0.250000 +v 0.676777 0.250000 -0.323223 +v -0.676777 0.250000 -0.676777 +v -0.500000 0.000000 -0.250000 +v -0.750000 0.250000 -0.500000 +v -0.676777 0.000000 -0.323223 +v 0.323223 0.250000 -0.323223 +v -0.750000 0.000000 -0.500000 +v 0.250000 0.250000 -0.500000 +v -0.676777 0.000000 -0.676777 +v -0.500000 0.250000 -0.250000 +v -0.500000 0.000000 -0.750000 +v -0.676777 0.250000 -0.323223 +v -0.323223 0.000000 -0.676777 +v -0.250000 0.000000 -0.500000 +v 0.676777 0.250000 -0.676777 +v -0.323223 0.000000 -0.323223 +v 0.750000 0.250000 -0.500000 +v 0.323223 0.000000 -0.323223 +v -0.323223 0.250000 -0.323223 +v 0.250000 0.000000 -0.500000 +v -0.250000 0.250000 -0.500000 +v 0.323223 0.000000 -0.676777 +v 0.500000 0.250000 -0.250000 +v 0.500000 0.000000 -0.750000 +v -0.323223 0.250000 -0.676777 +v 0.676777 0.000000 -0.676777 +v 0.750000 0.000000 -0.500000 +v 0.323223 0.250000 -0.676777 +v 0.676777 0.000000 -0.323223 +v 0.156250 0.000000 -0.156250 +v 0.156250 0.000000 0.156250 +v -0.156250 0.000000 -0.156250 +v -0.156250 0.000000 0.156250 +v 0.500001 0.750000 -3.500000 +v -0.499999 0.750000 -3.500000 +v -0.676776 0.676777 -3.500000 +v -0.749999 0.500000 -3.500000 +v -0.676776 0.323223 -3.500000 +v -0.499999 0.250000 -3.500000 +v -0.323223 0.323223 -3.500000 +v -0.249999 0.500000 -3.500000 +v -0.323223 0.676777 -3.500000 +v 0.323224 0.676777 -3.500000 +v 0.250001 0.500000 -3.500000 +v 0.323224 0.323223 -3.500000 +v 0.500001 0.250000 -3.500000 +v 0.676777 0.323223 -3.500000 +v 0.750001 0.500000 -3.500000 +v 0.676777 0.676777 -3.500000 +v 0.676777 0.323223 -0.750000 +v 0.500000 0.250000 -0.750000 +v -0.676777 0.676777 -0.750000 +v -0.500000 0.750000 -0.750000 +v 0.250000 0.500000 -0.750000 +v 0.323223 0.676777 -0.750000 +v -0.750000 0.500000 -0.750000 +v -0.676777 0.323223 -0.750000 +v 0.323223 0.323223 -0.750000 +v -0.500000 0.250000 -0.750000 +v -0.323223 0.323223 -0.750000 +v 0.500000 0.750000 -0.750000 +v -0.250000 0.500000 -0.750000 +v -0.323223 0.676777 -0.750000 +v 0.750000 0.500000 -0.750000 +v 0.676777 0.676777 -0.750000 +v 0.156250 0.343750 -0.156250 +v 0.156250 0.656250 -0.156250 +v 0.156250 0.343750 0.156250 +v 0.156250 0.656250 0.156250 +v -0.156250 0.343750 -0.156250 +v -0.156250 0.656250 -0.156250 +v -0.156250 0.343750 0.156250 +v -0.156250 0.656250 0.156250 +v 0.156251 0.343750 -3.500000 +v 0.156251 0.656250 -3.500000 +v -0.156249 0.656250 -3.500000 +v -0.156249 0.343750 -3.500000 +v 0.750000 0.000000 0.875000 +v 0.750000 1.000000 0.875000 +v -0.750000 0.000000 0.875000 +v -0.750000 1.000000 0.875000 +v 0.750000 0.000000 -0.875000 +v 0.750000 1.000000 -0.875000 +v -0.750000 0.000000 -0.875000 +v -0.750000 1.000000 -0.875000 +v 0.875000 0.000000 -0.750000 +v 0.875000 1.000000 -0.750000 +v 0.875000 0.000000 0.750000 +v 0.875000 1.000000 0.750000 +v -0.875000 0.000000 -0.750000 +v -0.875000 1.000000 -0.750000 +v -0.875000 0.000000 0.750000 +v -0.875000 1.000000 0.750000 +vt 0.107143 0.142857 +vt 0.107143 0.000000 +vt 0.142857 0.000000 +vt 0.071429 0.142857 +vt 0.071429 -0.000000 +vt 0.035714 0.142857 +vt 0.035714 -0.000000 +vt -0.000000 0.142857 +vt -0.000000 0.000000 +vt 0.133929 0.375000 +vt 0.133929 0.330357 +vt 0.178571 0.330357 +vt 0.035714 0.178571 +vt 0.000000 0.178571 +vt 0.571429 0.142857 +vt 0.357143 0.142857 +vt 0.357143 -0.000000 +vt 0.142857 0.142857 +vt 0.571429 0.285714 +vt 0.357143 0.285714 +vt 0.142857 0.285714 +vt 0.732143 -0.000000 +vt 0.732143 0.035714 +vt 0.705357 0.035714 +vt 0.758929 -0.000000 +vt 0.758929 0.035714 +vt 0.946429 -0.000000 +vt 0.946429 0.035714 +vt 0.919643 0.035714 +vt 1.000000 -0.000000 +vt 1.000000 0.035714 +vt 0.973214 0.035714 +vt 0.839286 -0.000000 +vt 0.839286 0.035714 +vt 0.812500 0.035714 +vt 0.973214 -0.000000 +vt 0.812500 -0.000000 +vt 0.785714 0.035714 +vt 0.625000 -0.000000 +vt 0.625000 0.035714 +vt 0.598214 0.035714 +vt 0.598214 -0.000000 +vt 0.571429 0.035714 +vt 0.651786 -0.000000 +vt 0.651786 0.035714 +vt 0.866071 -0.000000 +vt 0.866071 0.035714 +vt 0.785714 -0.000000 +vt 0.964286 0.089286 +vt 0.571429 0.089286 +vt 0.571429 0.062500 +vt 0.964286 0.464286 +vt 0.571429 0.464286 +vt 0.571429 0.437500 +vt 0.964286 0.116071 +vt 0.571429 0.116071 +vt 0.964286 0.276786 +vt 0.571429 0.276786 +vt 0.571429 0.250000 +vt 0.964286 0.062500 +vt 0.964286 0.142857 +vt 0.964286 0.169643 +vt 0.571429 0.169643 +vt 0.964286 0.383929 +vt 0.571429 0.383929 +vt 0.571429 0.357143 +vt 0.964286 0.303571 +vt 0.571429 0.303571 +vt 0.964286 0.196429 +vt 0.571429 0.196429 +vt 0.964286 0.223214 +vt 0.571429 0.223214 +vt 0.964286 0.410714 +vt 0.571429 0.410714 +vt 0.964286 0.330357 +vt 0.571429 0.330357 +vt 0.964286 0.437500 +vt 0.964286 0.357143 +vt 0.964286 0.250000 +vt 0.705357 -0.000000 +vt 0.678571 0.035714 +vt 0.678571 -0.000000 +vt 0.892857 0.035714 +vt 0.892857 -0.000000 +vt 0.919643 -0.000000 +vt 0.482143 0.517857 +vt 0.508929 0.508929 +vt 0.508929 0.526786 +vt 0.696429 0.517857 +vt 0.669643 0.526786 +vt 0.669643 0.508929 +vt 0.642857 0.535714 +vt 0.642857 0.491071 +vt 0.616071 0.562500 +vt 0.535714 0.535714 +vt 0.562500 0.473214 +vt 0.562500 0.562500 +vt 0.589286 0.562500 +vt 0.589286 0.464286 +vt 0.723214 0.508929 +vt 0.723214 0.526786 +vt 0.910714 0.517857 +vt 0.883929 0.526786 +vt 0.883929 0.508929 +vt 0.857143 0.535714 +vt 0.857143 0.491071 +vt 0.750000 0.535714 +vt 0.776786 0.473214 +vt 0.776786 0.562500 +vt 0.830357 0.562500 +vt 0.803571 0.562500 +vt 0.803571 0.464286 +vt 0.089286 0.375000 +vt 0.089286 0.330357 +vt 0.044643 0.375000 +vt 0.044643 0.330357 +vt -0.000000 0.508929 +vt 0.482143 0.508929 +vt 0.482143 0.553571 +vt 0.089286 0.285714 +vt -0.000000 0.375000 +vt -0.000000 0.330357 +vt 0.133929 0.285714 +vt -0.000000 0.285714 +vt 0.044643 0.285714 +vt 0.178571 0.375000 +vt 0.223214 0.330357 +vt -0.000000 0.464286 +vt 0.482143 0.464286 +vt 0.482143 0.375000 +vt 0.482143 0.419643 +vt 0.000000 0.419643 +vt 0.571429 0.000000 +vt 0.964286 0.035714 +vt 0.616071 0.473214 +vt 0.535714 0.491071 +vt 0.750000 0.491071 +vt 0.830357 0.473214 +vt -0.000000 0.553571 +vt 0.178571 0.285714 +vt 0.223214 0.375000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 -0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn -0.923900 0.000000 -0.382700 +vn -0.923900 0.000000 0.382700 +vn -0.382700 0.000000 0.923900 +vn 0.923900 0.000000 0.382700 +vn 0.382700 0.000000 0.923900 +vn 0.923900 0.000000 -0.382700 +vn 0.923900 -0.382700 0.000000 +vn -0.382700 -0.923900 -0.000000 +vn 0.923900 0.382700 0.000000 +vn 0.382700 -0.923900 0.000000 +vn 0.382700 0.923900 0.000000 +vn -0.382700 0.923900 -0.000000 +vn -0.923900 0.382700 -0.000000 +vn -0.923900 -0.382700 -0.000000 +vn -0.382700 0.000000 -0.923900 +vn 0.382700 0.000000 -0.923900 +vn -0.281100 -0.678600 -0.678600 +vn 0.281100 -0.678600 -0.678600 +vn 0.862900 -0.357400 -0.357400 +vn 0.862900 0.357400 0.357400 +vn -0.862900 -0.357400 -0.357400 +vn -0.862900 0.357400 0.357400 +vn -0.281100 0.678600 0.678600 +vn 0.281100 0.678600 0.678600 +vn 0.000000 -1.000000 -0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/2/2 +f 6/6/3 5/7/3 7/5/3 +f 2/8/4 1/9/4 5/7/4 +f 118/10/1 117/11/1 115/12/1 +f 6/6/5 8/13/5 4/14/5 +f 12/1/1 11/2/1 9/3/1 +f 16/4/2 15/5/2 11/2/2 +f 14/6/3 13/7/3 15/5/3 +f 10/8/4 9/9/4 13/7/4 +f 16/13/5 12/14/5 10/8/5 +f 20/1/1 19/2/1 17/3/1 +f 24/4/2 23/5/2 19/2/2 +f 22/6/3 21/7/3 23/5/3 +f 18/8/4 17/9/4 21/7/4 +f 22/6/5 24/13/5 20/14/5 +f 28/1/1 27/2/1 25/3/1 +f 32/4/2 31/5/2 27/2/2 +f 30/6/3 29/7/3 31/5/3 +f 26/8/4 25/9/4 29/7/4 +f 32/13/5 28/14/5 26/8/5 +f 34/15/2 36/16/2 35/17/2 +f 39/17/4 40/16/4 38/18/4 +f 42/19/1 44/20/1 43/16/1 +f 47/16/3 48/20/3 46/21/3 +f 56/22/6 53/23/6 51/24/6 +f 54/25/7 61/26/7 53/23/7 +f 69/27/6 57/28/6 77/29/6 +f 49/30/8 72/31/8 55/32/8 +f 76/33/9 66/34/9 50/35/9 +f 67/36/7 55/32/7 57/28/7 +f 78/37/10 50/35/10 72/38/10 +f 63/39/9 70/40/9 68/41/9 +f 65/42/10 68/41/10 59/43/10 +f 62/44/11 74/45/11 70/40/11 +f 75/46/11 64/47/11 66/34/11 +f 52/48/8 59/38/8 61/26/8 +f 97/49/12 113/50/12 99/51/12 +f 88/52/13 108/53/13 106/54/13 +f 98/55/14 114/56/14 113/50/14 +f 89/57/15 109/58/15 108/59/15 +f 96/60/15 99/51/15 100/43/15 +f 83/61/16 110/15/16 114/56/16 +f 92/62/17 104/63/17 110/15/17 +f 85/64/17 101/65/17 102/66/17 +f 90/67/12 111/68/12 109/58/12 +f 93/69/18 103/70/18 104/63/18 +f 94/71/19 107/72/19 103/70/19 +f 86/73/18 105/74/18 101/65/18 +f 91/75/14 112/76/14 111/68/14 +f 87/77/19 106/54/19 105/74/19 +f 84/78/16 102/66/16 112/76/16 +f 95/79/13 100/59/13 107/72/13 +f 58/80/20 51/24/20 108/81/20 +f 62/44/21 60/82/21 108/81/21 +f 100/83/21 64/47/21 75/46/21 +f 100/83/20 73/84/20 71/85/20 +f 108/86/22 51/87/22 106/88/22 +f 108/89/23 109/90/23 74/91/23 +f 109/90/24 111/92/24 70/93/24 +f 70/93/25 111/92/25 112/94/25 +f 105/95/26 106/88/26 51/87/26 +f 61/96/27 101/97/27 105/95/27 +f 102/98/28 101/97/28 61/96/28 +f 112/94/29 102/98/29 59/99/29 +f 100/89/22 77/100/22 107/101/22 +f 100/102/23 99/103/23 64/104/23 +f 99/103/24 113/105/24 66/106/24 +f 103/107/26 107/101/26 77/100/26 +f 55/108/27 104/109/27 103/107/27 +f 66/106/25 113/105/25 114/110/25 +f 114/110/29 110/111/29 72/112/29 +f 110/111/28 104/109/28 55/108/28 +f 122/113/2 121/114/2 117/11/2 +f 120/115/3 119/116/3 121/114/3 +f 115/117/1 123/118/1 124/119/1 +f 117/11/2 121/114/2 82/120/2 +f 122/115/5 118/121/5 116/122/5 +f 115/12/1 117/11/1 80/123/1 +f 119/116/4 115/122/4 79/124/4 +f 121/114/3 119/116/3 81/125/3 +f 124/126/4 123/12/4 126/127/4 +f 119/128/30 126/129/30 123/118/30 +f 116/121/5 124/130/5 125/131/5 +f 120/132/3 125/131/3 126/129/3 +f 129/17/4 130/16/4 128/15/4 +f 132/18/2 134/16/2 133/17/2 +f 137/16/3 138/20/3 136/19/3 +f 140/21/1 142/20/1 141/16/1 +f 2/18/1 4/1/1 1/3/1 +f 4/1/2 8/4/2 3/2/2 +f 8/4/3 6/6/3 7/5/3 +f 6/6/4 2/8/4 5/7/4 +f 116/126/1 118/10/1 115/12/1 +f 2/8/5 6/6/5 4/14/5 +f 10/18/1 12/1/1 9/3/1 +f 12/1/2 16/4/2 11/2/2 +f 16/4/3 14/6/3 15/5/3 +f 14/6/4 10/8/4 13/7/4 +f 14/6/5 16/13/5 10/8/5 +f 18/18/1 20/1/1 17/3/1 +f 20/1/2 24/4/2 19/2/2 +f 24/4/3 22/6/3 23/5/3 +f 22/6/4 18/8/4 21/7/4 +f 18/8/5 22/6/5 20/14/5 +f 26/18/1 28/1/1 25/3/1 +f 28/1/2 32/4/2 27/2/2 +f 32/4/3 30/6/3 31/5/3 +f 30/6/4 26/8/4 29/7/4 +f 30/6/5 32/13/5 26/8/5 +f 33/133/2 34/15/2 35/17/2 +f 37/3/4 39/17/4 38/18/4 +f 41/15/1 42/19/1 43/16/1 +f 45/18/3 47/16/3 46/21/3 +f 58/80/6 56/22/6 51/24/6 +f 56/22/7 54/25/7 53/23/7 +f 71/85/6 69/27/6 77/29/6 +f 67/36/8 49/30/8 55/32/8 +f 78/37/9 76/33/9 50/35/9 +f 69/27/7 67/36/7 57/28/7 +f 49/48/10 78/37/10 72/38/10 +f 65/42/9 63/39/9 68/41/9 +f 52/133/10 65/42/10 59/43/10 +f 63/39/11 62/44/11 70/40/11 +f 76/33/11 75/46/11 66/34/11 +f 54/25/8 52/48/8 61/26/8 +f 96/60/12 97/49/12 99/51/12 +f 87/77/13 88/52/13 106/54/13 +f 97/49/14 98/55/14 113/50/14 +f 88/79/15 89/57/15 108/59/15 +f 95/134/15 96/60/15 100/43/15 +f 98/55/16 83/61/16 114/56/16 +f 83/61/17 92/62/17 110/15/17 +f 84/78/17 85/64/17 102/66/17 +f 89/57/12 90/67/12 109/58/12 +f 92/62/18 93/69/18 104/63/18 +f 93/69/19 94/71/19 103/70/19 +f 85/64/18 86/73/18 101/65/18 +f 90/67/14 91/75/14 111/68/14 +f 86/73/19 87/77/19 105/74/19 +f 91/75/16 84/78/16 112/76/16 +f 94/71/13 95/79/13 107/72/13 +f 60/82/20 58/80/20 108/81/20 +f 74/45/21 62/44/21 108/81/21 +f 73/84/21 100/83/21 75/46/21 +f 77/29/20 100/83/20 71/85/20 +f 74/91/24 109/90/24 70/93/24 +f 68/135/25 70/93/25 112/94/25 +f 53/136/26 105/95/26 51/87/26 +f 53/136/27 61/96/27 105/95/27 +f 59/99/28 102/98/28 61/96/28 +f 68/135/29 112/94/29 59/99/29 +f 64/104/24 99/103/24 66/106/24 +f 57/137/26 103/107/26 77/100/26 +f 57/137/27 55/108/27 103/107/27 +f 50/138/25 66/106/25 114/110/25 +f 50/138/29 114/110/29 72/112/29 +f 72/112/28 110/111/28 55/108/28 +f 118/10/2 122/113/2 117/11/2 +f 122/113/3 120/115/3 121/114/3 +f 116/139/1 115/117/1 124/119/1 +f 80/123/2 117/11/2 82/120/2 +f 120/116/5 122/115/5 116/122/5 +f 79/140/1 115/12/1 80/123/1 +f 81/125/4 119/116/4 79/124/4 +f 82/120/3 121/114/3 81/125/3 +f 125/141/4 124/126/4 126/127/4 +f 115/117/30 119/128/30 123/118/30 +f 120/132/5 116/121/5 125/131/5 +f 119/128/3 120/132/3 126/129/3 +f 127/133/4 129/17/4 128/15/4 +f 131/3/2 132/18/2 133/17/2 +f 135/15/3 137/16/3 136/19/3 +f 139/18/1 140/21/1 141/16/1 diff --git a/assets/hbm/models/launch_table/launch_table_large_scaffold_empty.obj b/assets/hbm/models/launch_table/launch_table_large_scaffold_empty.obj new file mode 100644 index 000000000..e94372ff0 --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_large_scaffold_empty.obj @@ -0,0 +1,150 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_large_scaffold_empty.blend' +# www.blender.org +o Cube.005_Cube.006 +v -1.000000 0.000000 -0.750000 +v -1.000000 1.000000 -0.750000 +v -1.000000 0.000000 -1.000000 +v -1.000000 1.000000 -1.000000 +v -0.750000 0.000000 -0.750000 +v -0.750000 1.000000 -0.750000 +v -0.750000 0.000000 -1.000000 +v -0.750000 1.000000 -1.000000 +v 0.750000 0.000000 -0.750000 +v 0.750000 1.000000 -0.750000 +v 0.750000 0.000000 -1.000000 +v 0.750000 1.000000 -1.000000 +v 1.000000 0.000000 -0.750000 +v 1.000000 1.000000 -0.750000 +v 1.000000 0.000000 -1.000000 +v 1.000000 1.000000 -1.000000 +v 0.750000 0.000000 1.000000 +v 0.750000 1.000000 1.000000 +v 0.750000 0.000000 0.750000 +v 0.750000 1.000000 0.750000 +v 1.000000 0.000000 1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 0.000000 0.750000 +v 1.000000 1.000000 0.750000 +v -1.000000 0.000000 1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 0.000000 0.750000 +v -1.000000 1.000000 0.750000 +v -0.750000 0.000000 1.000000 +v -0.750000 1.000000 1.000000 +v -0.750000 0.000000 0.750000 +v -0.750000 1.000000 0.750000 +v -0.750000 0.000000 -0.875000 +v -0.750000 1.000000 -0.875000 +v 0.750000 0.000000 -0.875000 +v 0.750000 1.000000 -0.875000 +v -0.750000 0.000000 0.875000 +v -0.750000 1.000000 0.875000 +v 0.750000 0.000000 0.875000 +v 0.750000 1.000000 0.875000 +v -0.875000 0.000000 0.750000 +v -0.875000 1.000000 0.750000 +v -0.875000 0.000000 -0.750000 +v -0.875000 1.000000 -0.750000 +v 0.875000 0.000000 0.750000 +v 0.875000 1.000000 0.750000 +v 0.875000 0.000000 -0.750000 +v 0.875000 1.000000 -0.750000 +v -0.750000 0.000000 -0.875000 +v -0.750000 1.000000 -0.875000 +v 0.750000 0.000000 -0.875000 +v 0.750000 1.000000 -0.875000 +v -0.750000 0.000000 0.875000 +v -0.750000 1.000000 0.875000 +v 0.750000 0.000000 0.875000 +v 0.750000 1.000000 0.875000 +v -0.875000 0.000000 0.750000 +v -0.875000 1.000000 0.750000 +v -0.875000 0.000000 -0.750000 +v -0.875000 1.000000 -0.750000 +v 0.875000 0.000000 0.750000 +v 0.875000 1.000000 0.750000 +v 0.875000 0.000000 -0.750000 +v 0.875000 1.000000 -0.750000 +vt 0.058824 0.235294 +vt 0.058824 -0.000000 +vt 0.117647 0.000000 +vt -0.000000 0.235294 +vt -0.000000 -0.000000 +vt 0.176471 0.235294 +vt 0.176471 -0.000000 +vt 0.235294 0.000000 +vt 0.117647 0.235294 +vt 0.058824 0.294118 +vt 0.352941 0.588235 +vt 0.000000 0.588235 +vt 0.000000 0.352941 +vt 0.705882 0.352941 +vt 0.705882 0.588235 +vt 0.352941 0.823529 +vt 0.000000 0.823529 +vt 0.705882 0.823529 +vt 0.235294 0.235294 +vt -0.000000 0.294118 +vt 0.352941 0.352941 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/2/2 +f 6/6/3 5/7/3 7/8/3 +f 2/9/4 1/3/4 5/7/4 +f 8/4/5 4/1/5 2/10/5 +f 12/1/1 11/2/1 9/3/1 +f 16/4/2 15/5/2 11/2/2 +f 14/6/3 13/7/3 15/8/3 +f 10/9/4 9/3/4 13/7/4 +f 16/4/5 12/1/5 10/10/5 +f 20/1/1 19/2/1 17/3/1 +f 24/4/2 23/5/2 19/2/2 +f 22/6/3 21/7/3 23/8/3 +f 18/9/4 17/3/4 21/7/4 +f 24/4/5 20/1/5 18/10/5 +f 28/1/1 27/2/1 25/3/1 +f 32/4/2 31/5/2 27/2/2 +f 30/6/3 29/7/3 31/8/3 +f 26/9/4 25/3/4 29/7/4 +f 32/4/5 28/1/5 26/10/5 +f 34/11/2 36/12/2 35/13/2 +f 39/14/4 40/15/4 38/11/4 +f 42/16/1 44/17/1 43/12/1 +f 47/15/3 48/18/3 46/16/3 +f 51/13/4 52/12/4 50/11/4 +f 54/11/2 56/15/2 55/14/2 +f 59/12/3 60/17/3 58/16/3 +f 62/16/1 64/18/1 63/15/1 +f 2/9/1 4/1/1 1/3/1 +f 4/1/2 8/4/2 3/2/2 +f 8/19/3 6/6/3 7/8/3 +f 6/6/4 2/9/4 5/7/4 +f 6/20/5 8/4/5 2/10/5 +f 10/9/1 12/1/1 9/3/1 +f 12/1/2 16/4/2 11/2/2 +f 16/19/3 14/6/3 15/8/3 +f 14/6/4 10/9/4 13/7/4 +f 14/20/5 16/4/5 10/10/5 +f 18/9/1 20/1/1 17/3/1 +f 20/1/2 24/4/2 19/2/2 +f 24/19/3 22/6/3 23/8/3 +f 22/6/4 18/9/4 21/7/4 +f 22/20/5 24/4/5 18/10/5 +f 26/9/1 28/1/1 25/3/1 +f 28/1/2 32/4/2 27/2/2 +f 32/19/3 30/6/3 31/8/3 +f 30/6/4 26/9/4 29/7/4 +f 30/20/5 32/4/5 26/10/5 +f 33/21/2 34/11/2 35/13/2 +f 37/21/4 39/14/4 38/11/4 +f 41/11/1 42/16/1 43/12/1 +f 45/11/3 47/15/3 46/16/3 +f 49/21/4 51/13/4 50/11/4 +f 53/21/2 54/11/2 55/14/2 +f 57/11/3 59/12/3 58/16/3 +f 61/11/1 62/16/1 63/15/1 diff --git a/assets/hbm/models/launch_table/launch_table_small_pad.obj b/assets/hbm/models/launch_table/launch_table_small_pad.obj new file mode 100644 index 000000000..e5646475f --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_small_pad.obj @@ -0,0 +1,136 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_small_pad.blend' +# www.blender.org +o Cube.001_Cube.002 +v -2.000000 1.000000 -0.500000 +v -1.500000 2.000000 -0.500000 +v -2.000000 1.000000 -2.000000 +v -1.500000 2.000000 -1.500000 +v 2.000000 1.000000 -0.500000 +v 1.500000 2.000000 -0.500000 +v 2.000000 1.000000 -2.000000 +v 1.500000 2.000000 -1.500000 +v -2.000000 1.000000 2.000000 +v -1.500000 2.000000 1.500000 +v -2.000000 1.000000 0.500000 +v -1.500000 2.000000 0.500000 +v 2.000000 1.000000 2.000000 +v 1.500000 2.000000 1.500000 +v 2.000000 1.000000 0.500000 +v 1.500000 2.000000 0.500000 +v 0.500000 2.000000 -0.500000 +v -0.500000 2.000000 -0.500000 +v -0.500000 2.000000 0.500000 +v 0.500000 2.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 2.000000 -0.500000 +v -0.500000 2.000000 -0.500000 +v -0.500000 2.000000 0.500000 +v 0.500000 2.000000 0.500000 +vt 0.071429 0.571429 +vt 0.000000 0.428571 +vt 0.214286 0.428571 +vt 0.071429 0.142857 +vt 0.000000 0.000000 +vt 0.571429 -0.000000 +vt 0.500000 0.428571 +vt 0.357143 0.428571 +vt 0.357143 0.285714 +vt 0.071429 0.714286 +vt 0.214286 0.571429 +vt 0.214286 0.714286 +vt 1.000000 0.428571 +vt 0.857143 0.285714 +vt 0.857143 0.142857 +vt 0.500000 0.571429 +vt 0.357143 0.571429 +vt 0.071429 0.857143 +vt 0.214286 0.857143 +vt 0.071429 0.428571 +vt 0.000000 0.285714 +vt 0.214286 0.285714 +vt 0.071429 0.285714 +vt 0.000000 0.142857 +vt 0.571429 0.142857 +vt 0.714286 0.142857 +vt 0.714286 0.285714 +vt 0.857143 0.428571 +vt 0.714286 0.428571 +vt 0.714286 0.000000 +vt 0.857143 0.000000 +vt 0.571429 0.571429 +vt 0.571429 0.428571 +vt 0.857143 0.571429 +vt 0.500000 0.142857 +vt 0.571429 0.285714 +vt 0.500000 0.714286 +vt 0.357143 0.714286 +vt 0.000000 0.571429 +vt 1.000000 0.000000 +vt 0.571429 0.714286 +vt 0.500000 0.857143 +vt 0.357143 0.857143 +vt 0.000000 0.714286 +vt 0.500000 0.285714 +vt 0.714286 0.571429 +vn -0.894400 0.447200 0.000000 +vn 0.000000 0.447200 -0.894400 +vn 0.894400 0.447200 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.447200 0.894400 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/6/2 +f 8/7/3 6/8/3 5/9/3 +f 2/10/4 21/11/4 18/12/4 +f 4/13/5 18/14/5 17/15/5 +f 10/16/1 12/17/1 11/8/1 +f 16/18/6 23/12/6 20/19/6 +f 14/20/3 13/21/3 15/22/3 +f 10/23/7 9/24/7 13/25/7 +f 20/26/5 19/27/5 14/6/5 +f 18/14/5 2/28/5 12/29/5 +f 16/30/5 6/31/5 17/15/5 +f 16/3/3 15/22/3 5/9/3 +f 17/32/8 22/33/8 23/29/8 +f 24/29/9 21/28/9 18/34/9 +f 1/3/1 11/8/1 12/17/1 +f 17/15/5 18/14/5 19/27/5 +f 27/27/10 26/14/10 25/15/10 +f 2/11/1 4/1/1 1/3/1 +f 4/35/2 8/4/2 3/6/2 +f 7/36/3 8/7/3 5/9/3 +f 5/32/4 6/37/4 22/17/4 +f 17/38/4 18/12/4 21/11/4 +f 2/10/4 1/39/4 21/11/4 +f 21/11/4 22/17/4 17/38/4 +f 6/37/4 17/38/4 22/17/4 +f 17/15/5 6/31/5 8/40/5 +f 8/40/5 4/13/5 17/15/5 +f 2/28/5 18/14/5 4/13/5 +f 9/33/1 10/16/1 11/8/1 +f 11/41/6 12/42/6 24/38/6 +f 19/43/6 20/19/6 23/12/6 +f 16/18/6 15/44/6 23/12/6 +f 23/12/6 24/38/6 19/43/6 +f 12/42/6 19/43/6 24/38/6 +f 16/3/3 14/20/3 15/22/3 +f 14/45/7 10/23/7 13/25/7 +f 10/33/5 14/6/5 19/27/5 +f 16/30/5 20/26/5 14/6/5 +f 19/27/5 12/29/5 10/33/5 +f 19/27/5 18/14/5 12/29/5 +f 20/26/5 16/30/5 17/15/5 +f 6/8/3 16/3/3 5/9/3 +f 20/46/8 17/32/8 23/29/8 +f 19/46/9 24/29/9 18/34/9 +f 2/11/1 1/3/1 12/17/1 +f 20/26/5 17/15/5 19/27/5 +f 28/26/10 27/27/10 25/15/10 diff --git a/assets/hbm/models/launch_table/launch_table_small_scaffold_base.obj b/assets/hbm/models/launch_table/launch_table_small_scaffold_base.obj new file mode 100644 index 000000000..7670c8782 --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_small_scaffold_base.obj @@ -0,0 +1,309 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_small_scaffold_base.blend' +# www.blender.org +o Cube.006_Cube.007 +v 0.500000 0.000000 0.375000 +v 0.500000 1.000000 0.375000 +v 0.500000 0.000000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.375000 0.000000 0.375000 +v 0.375000 1.000000 0.375000 +v 0.375000 0.000000 0.500000 +v 0.375000 1.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 0.000000 -0.375000 +v 0.500000 1.000000 -0.375000 +v 0.375000 0.000000 -0.500000 +v 0.375000 1.000000 -0.500000 +v 0.375000 0.000000 -0.375000 +v 0.375000 1.000000 -0.375000 +v -0.375000 0.000000 -0.500000 +v -0.375000 1.000000 -0.500000 +v -0.375000 0.000000 -0.375000 +v -0.375000 1.000000 -0.375000 +v -0.500000 0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.500000 0.000000 -0.375000 +v -0.500000 1.000000 -0.375000 +v -0.375000 0.000000 0.375000 +v -0.375000 1.000000 0.375000 +v -0.375000 0.000000 0.500000 +v -0.375000 1.000000 0.500000 +v -0.500000 0.000000 0.375000 +v -0.500000 1.000000 0.375000 +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v 0.375000 0.000000 0.437500 +v 0.375000 1.000000 0.437500 +v -0.375000 0.000000 0.437500 +v -0.375000 1.000000 0.437500 +v 0.375000 0.000000 -0.437500 +v 0.375000 1.000000 -0.437500 +v -0.375000 0.000000 -0.437500 +v -0.375000 1.000000 -0.437500 +v 0.437500 0.000000 -0.375000 +v 0.437500 1.000000 -0.375000 +v 0.437500 0.000000 0.375000 +v 0.437500 1.000000 0.375000 +v -0.437500 0.000000 -0.375000 +v -0.437500 1.000000 -0.375000 +v -0.437500 0.000000 0.375000 +v -0.437500 1.000000 0.375000 +v 0.406250 0.000000 -0.156250 +v 0.406250 1.000000 -0.156250 +v 0.406250 0.000000 0.156250 +v 0.406250 1.000000 0.156250 +v 0.093750 0.000000 -0.156250 +v 0.093750 1.000000 -0.156250 +v 0.093750 0.000000 0.156250 +v 0.093750 1.000000 0.156250 +v -0.250000 1.000000 0.375000 +v -0.250000 0.000000 0.375000 +v -0.250000 0.000000 -0.125000 +v -0.250000 1.000000 -0.125000 +v -0.338388 0.000000 -0.161612 +v -0.338388 1.000000 -0.161612 +v -0.375000 0.000000 -0.250000 +v -0.375000 1.000000 -0.250000 +v -0.338388 0.000000 -0.338388 +v -0.338388 1.000000 -0.338388 +v -0.250000 0.000000 -0.375000 +v -0.250000 1.000000 -0.375000 +v -0.161612 0.000000 -0.338388 +v -0.161612 1.000000 -0.338388 +v -0.125000 0.000000 -0.250000 +v -0.125000 1.000000 -0.250000 +v -0.161612 0.000000 -0.161612 +v -0.161612 1.000000 -0.161612 +v -0.338388 0.000000 0.338388 +v -0.338388 1.000000 0.338388 +v -0.375000 0.000000 0.250000 +v -0.375000 1.000000 0.250000 +v -0.338388 0.000000 0.161612 +v -0.338388 1.000000 0.161612 +v -0.250000 0.000000 0.125000 +v -0.250000 1.000000 0.125000 +v -0.161612 0.000000 0.161612 +v -0.161612 1.000000 0.161612 +v -0.125000 0.000000 0.250000 +v -0.125000 1.000000 0.250000 +v -0.161612 0.000000 0.338388 +v -0.161612 1.000000 0.338388 +v 0.375000 0.000000 0.437500 +v 0.375000 1.000000 0.437500 +v -0.375000 0.000000 0.437500 +v -0.375000 1.000000 0.437500 +v 0.375000 0.000000 -0.437500 +v 0.375000 1.000000 -0.437500 +v -0.375000 0.000000 -0.437500 +v -0.375000 1.000000 -0.437500 +v 0.437500 0.000000 -0.375000 +v 0.437500 1.000000 -0.375000 +v 0.437500 0.000000 0.375000 +v 0.437500 1.000000 0.375000 +v -0.437500 0.000000 -0.375000 +v -0.437500 1.000000 -0.375000 +v -0.437500 0.000000 0.375000 +v -0.437500 1.000000 0.375000 +vt 0.107143 0.285714 +vt 0.107143 -0.000000 +vt 0.142857 0.000000 +vt 0.071429 0.285714 +vt 0.071429 0.000000 +vt 0.035714 0.285714 +vt 0.035714 0.000000 +vt 0.000000 0.285714 +vt 0.000000 0.000000 +vt 0.035714 0.321429 +vt -0.000000 0.321429 +vt 0.428571 0.714286 +vt 0.214286 0.714286 +vt 0.214286 0.428571 +vt -0.000000 0.714286 +vt 0.428571 1.000000 +vt 0.214286 1.000000 +vt -0.000000 1.000000 +vt 0.607143 0.714286 +vt 0.607143 0.428571 +vt 0.696429 0.428571 +vt 0.517857 0.714286 +vt 0.517857 0.428571 +vt 0.428571 0.428571 +vt 0.696429 0.714286 +vt 0.785714 0.428571 +vt 0.517857 0.803571 +vt 0.428571 0.803571 +vt 0.196429 0.285714 +vt 0.142857 0.285714 +vt 0.892857 0.285714 +vt 0.839286 0.285714 +vt 0.839286 0.000000 +vt 0.250000 0.285714 +vt 0.196429 -0.000000 +vt 0.785714 0.285714 +vt 0.785714 0.000000 +vt 0.303571 0.285714 +vt 0.250000 -0.000000 +vt 0.732143 0.285714 +vt 0.732143 0.000000 +vt 0.357143 0.285714 +vt 0.303571 -0.000000 +vt 0.678571 0.285714 +vt 0.678571 0.000000 +vt 0.571429 0.285714 +vt 0.517857 0.285714 +vt 0.517857 -0.000000 +vt 0.410714 0.285714 +vt 0.357143 -0.000000 +vt 0.625000 0.285714 +vt 0.625000 0.000000 +vt 0.464286 0.285714 +vt 0.464286 -0.000000 +vt 0.410714 -0.000000 +vt 0.571429 0.000000 +vt 0.571429 0.357143 +vt 0.642857 0.285714 +vt 0.642857 0.428571 +vt 0.946429 0.285714 +vt 0.892857 -0.000000 +vt 1.000000 0.285714 +vt 0.946429 -0.000000 +vt 0.142857 0.357143 +vt 0.267857 0.303571 +vt 0.285714 0.357143 +vt -0.000000 0.428571 +vt 0.785714 0.714286 +vt 0.714286 0.357143 +vt 0.696429 0.410714 +vt 0.589286 0.410714 +vt 0.589286 0.303571 +vt 0.696429 0.303571 +vt 1.000000 -0.000000 +vt 0.267857 0.410714 +vt 0.160714 0.410714 +vt 0.160714 0.303571 +vt 0.214286 0.285714 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 -0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.923900 0.000000 -0.382700 +vn -0.382700 0.000000 0.923900 +vn 0.382700 0.000000 -0.923900 +vn -0.923900 0.000000 0.382700 +vn -0.382700 0.000000 -0.923900 +vn -0.923900 0.000000 -0.382700 +vn 0.923900 0.000000 0.382700 +vn 0.382700 0.000000 0.923900 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/2/2 +f 6/6/3 5/7/3 7/5/3 +f 2/8/4 1/9/4 5/7/4 +f 6/6/5 8/10/5 4/11/5 +f 12/1/1 11/2/1 9/3/1 +f 16/4/2 15/5/2 11/2/2 +f 14/6/3 13/7/3 15/5/3 +f 10/8/4 9/9/4 13/7/4 +f 16/10/5 12/11/5 10/8/5 +f 20/1/1 19/2/1 17/3/1 +f 24/4/2 23/5/2 19/2/2 +f 22/6/3 21/7/3 23/5/3 +f 18/8/4 17/9/4 21/7/4 +f 22/6/5 24/10/5 20/11/5 +f 28/1/1 27/2/1 25/3/1 +f 32/4/2 31/5/2 27/2/2 +f 30/6/3 29/7/3 31/5/3 +f 26/8/4 25/9/4 29/7/4 +f 32/10/5 28/11/5 26/8/5 +f 34/12/2 36/13/2 35/14/2 +f 39/14/4 40/13/4 38/15/4 +f 42/16/1 44/17/1 43/13/1 +f 47/13/3 48/17/3 46/18/3 +f 52/19/1 51/20/1 49/21/1 +f 56/22/2 55/23/2 51/20/2 +f 54/12/3 53/24/3 55/23/3 +f 50/25/4 49/21/4 53/26/4 +f 56/27/5 52/28/5 50/12/5 +f 84/29/6 86/30/6 85/3/6 +f 60/31/7 62/32/7 61/33/7 +f 82/34/8 84/29/8 83/35/8 +f 62/32/9 64/36/9 63/37/9 +f 80/38/10 82/34/10 81/39/10 +f 64/36/11 66/40/11 65/41/11 +f 78/42/11 80/38/11 79/43/11 +f 66/40/10 68/44/10 67/45/10 +f 86/46/12 88/47/12 87/48/12 +f 76/49/9 78/42/9 77/50/9 +f 68/44/8 70/51/8 69/52/8 +f 88/47/13 57/53/13 58/54/13 +f 57/53/7 76/49/7 75/55/7 +f 70/51/6 72/46/6 71/56/6 +f 72/57/5 68/58/5 60/59/5 +f 74/60/13 60/31/13 59/61/13 +f 72/62/12 74/60/12 73/63/12 +f 86/64/5 80/65/5 78/66/5 +f 91/14/4 92/13/4 90/12/4 +f 94/15/2 96/13/2 95/14/2 +f 99/13/3 100/17/3 98/16/3 +f 102/18/1 104/17/1 103/13/1 +f 2/30/1 4/1/1 1/3/1 +f 4/1/2 8/4/2 3/2/2 +f 8/4/3 6/6/3 7/5/3 +f 6/6/4 2/8/4 5/7/4 +f 2/8/5 6/6/5 4/11/5 +f 10/30/1 12/1/1 9/3/1 +f 12/1/2 16/4/2 11/2/2 +f 16/4/3 14/6/3 15/5/3 +f 14/6/4 10/8/4 13/7/4 +f 14/6/5 16/10/5 10/8/5 +f 18/30/1 20/1/1 17/3/1 +f 20/1/2 24/4/2 19/2/2 +f 24/4/3 22/6/3 23/5/3 +f 22/6/4 18/8/4 21/7/4 +f 18/8/5 22/6/5 20/11/5 +f 26/30/1 28/1/1 25/3/1 +f 28/1/2 32/4/2 27/2/2 +f 32/4/3 30/6/3 31/5/3 +f 30/6/4 26/8/4 29/7/4 +f 30/6/5 32/10/5 26/8/5 +f 33/24/2 34/12/2 35/14/2 +f 37/67/4 39/14/4 38/15/4 +f 41/12/1 42/16/1 43/13/1 +f 45/15/3 47/13/3 46/18/3 +f 50/25/1 52/19/1 49/21/1 +f 52/19/2 56/22/2 51/20/2 +f 56/22/3 54/12/3 55/23/3 +f 54/68/4 50/25/4 53/26/4 +f 54/22/5 56/27/5 50/12/5 +f 83/35/6 84/29/6 85/3/6 +f 59/61/7 60/31/7 61/33/7 +f 81/39/8 82/34/8 83/35/8 +f 61/33/9 62/32/9 63/37/9 +f 79/43/10 80/38/10 81/39/10 +f 63/37/11 64/36/11 65/41/11 +f 77/50/11 78/42/11 79/43/11 +f 65/41/10 66/40/10 67/45/10 +f 85/56/12 86/46/12 87/48/12 +f 75/55/9 76/49/9 77/50/9 +f 67/45/8 68/44/8 69/52/8 +f 87/48/13 88/47/13 58/54/13 +f 58/54/7 57/53/7 75/55/7 +f 69/52/6 70/51/6 71/56/6 +f 64/69/5 62/70/5 60/59/5 +f 60/59/5 74/71/5 72/57/5 +f 72/57/5 70/72/5 68/58/5 +f 68/58/5 66/73/5 64/69/5 +f 64/69/5 60/59/5 68/58/5 +f 73/63/13 74/60/13 59/61/13 +f 71/74/12 72/62/12 73/63/12 +f 78/66/5 76/75/5 57/14/5 +f 57/14/5 88/76/5 86/64/5 +f 86/64/5 84/77/5 82/78/5 +f 82/78/5 80/65/5 86/64/5 +f 78/66/5 57/14/5 86/64/5 +f 89/24/4 91/14/4 90/12/4 +f 93/67/2 94/15/2 95/14/2 +f 97/12/3 99/13/3 98/16/3 +f 101/15/1 102/18/1 103/13/1 diff --git a/assets/hbm/models/launch_table/launch_table_small_scaffold_connector.obj b/assets/hbm/models/launch_table/launch_table_small_scaffold_connector.obj new file mode 100644 index 000000000..32f387829 --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_small_scaffold_connector.obj @@ -0,0 +1,487 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_small_scaffold_connector.blend' +# www.blender.org +o Cube.007_Cube.008 +v 0.500000 0.000000 0.375000 +v 0.500000 1.000000 0.375000 +v 0.500000 0.000000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.375000 0.000000 0.375000 +v 0.375000 1.000000 0.375000 +v 0.375000 0.000000 0.500000 +v 0.375000 1.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 0.000000 -0.375000 +v 0.500000 1.000000 -0.375000 +v 0.375000 0.000000 -0.500000 +v 0.375000 1.000000 -0.500000 +v 0.375000 0.000000 -0.375000 +v 0.375000 1.000000 -0.375000 +v -0.375000 0.000000 -0.500000 +v -0.375000 1.000000 -0.500000 +v -0.375000 0.000000 -0.375000 +v -0.375000 1.000000 -0.375000 +v -0.500000 0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.500000 0.000000 -0.375000 +v -0.500000 1.000000 -0.375000 +v -0.375000 0.000000 0.375000 +v -0.375000 1.000000 0.375000 +v -0.375000 0.000000 0.500000 +v -0.375000 1.000000 0.500000 +v -0.500000 0.000000 0.375000 +v -0.500000 1.000000 0.375000 +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v 0.375000 0.000000 0.437500 +v 0.375000 1.000000 0.437500 +v -0.375000 0.000000 0.437500 +v -0.375000 1.000000 0.437500 +v 0.375000 0.000000 -0.437500 +v 0.375000 1.000000 -0.437500 +v -0.375000 0.000000 -0.437500 +v -0.375000 1.000000 -0.437500 +v 0.437500 0.000000 -0.375000 +v 0.437500 1.000000 -0.375000 +v 0.437500 0.000000 0.375000 +v 0.437500 1.000000 0.375000 +v -0.437500 0.000000 -0.375000 +v -0.437500 1.000000 -0.375000 +v -0.437500 0.000000 0.375000 +v -0.437500 1.000000 0.375000 +v 0.406250 0.000000 -0.156250 +v 0.406250 0.656250 0.156250 +v 0.406250 0.000000 0.156250 +v 0.406250 0.343750 0.156250 +v 0.093750 0.000000 -0.156250 +v 0.406250 0.656250 -0.156250 +v 0.093750 0.000000 0.156250 +v 0.406250 0.343750 -0.156250 +v -0.250000 0.000000 0.375000 +v -0.161612 0.338388 -0.375000 +v -0.161612 0.125000 -0.161612 +v -0.250000 0.000000 -0.125000 +v -0.125000 0.125000 -0.250000 +v -0.338388 0.000000 -0.161612 +v -0.161612 0.125000 -0.338388 +v -0.375000 0.000000 -0.250000 +v -0.250000 0.125000 -0.375000 +v -0.338388 0.000000 -0.338388 +v -0.338388 0.125000 -0.338388 +v -0.250000 0.000000 -0.375000 +v -0.375000 0.125000 -0.250000 +v -0.161612 0.000000 -0.338388 +v -0.250000 0.125000 -0.125000 +v -0.125000 0.000000 -0.250000 +v -0.338388 0.125000 -0.161612 +v -0.161612 0.000000 -0.161612 +v -0.125000 0.250000 -0.375000 +v -0.338388 0.000000 0.338388 +v -0.161612 0.161612 -0.375000 +v -0.375000 0.000000 0.250000 +v -0.338388 0.000000 0.161612 +v -0.338388 0.161612 -0.375000 +v -0.250000 0.000000 0.125000 +v -0.375000 0.250000 -0.375000 +v -0.161612 0.000000 0.161612 +v -0.250000 0.375000 -0.375000 +v -0.125000 0.000000 0.250000 +v -0.338388 0.338388 -0.375000 +v -0.161612 0.000000 0.338388 +v -0.250000 0.875000 -2.500000 +v -0.250000 0.375000 -2.500000 +v -0.338388 0.338388 -2.500000 +v -0.375000 0.250000 -2.500000 +v -0.338388 0.161612 -2.500000 +v -0.250000 0.125000 -2.500000 +v -0.161611 0.161612 -2.500000 +v -0.125000 0.250000 -2.500000 +v -0.161611 0.338388 -2.500000 +v -0.338388 0.838388 -2.500000 +v -0.375000 0.750000 -2.500000 +v -0.338388 0.661612 -2.500000 +v -0.250000 0.625000 -2.500000 +v -0.161611 0.661612 -2.500000 +v -0.125000 0.750000 -2.500000 +v -0.161611 0.838388 -2.500000 +v -0.161612 0.661612 0.125000 +v -0.250000 0.625000 0.125000 +v -0.375000 0.750000 0.125000 +v -0.338388 0.838388 0.125000 +v -0.338388 0.661612 0.125000 +v -0.250000 0.875000 0.125000 +v -0.125000 0.750000 0.125000 +v -0.161612 0.838388 0.125000 +v -0.161612 0.625000 0.161612 +v -0.375000 0.625000 0.250000 +v -0.338388 0.625000 0.338388 +v -0.338388 0.625000 0.161612 +v -0.250000 0.625000 0.375000 +v -0.125000 0.625000 0.250000 +v -0.161612 0.625000 0.338388 +v 0.093750 0.343750 -0.156250 +v 0.093750 0.656250 -0.156250 +v 0.093750 0.343750 0.156250 +v 0.093750 0.656250 0.156250 +v 0.406250 0.343750 -2.500000 +v 0.406250 0.656250 -2.500000 +v 0.093750 0.656250 -2.500000 +v 0.093750 0.343750 -2.500000 +v 0.375000 0.000000 0.437500 +v 0.375000 1.000000 0.437500 +v -0.375000 0.000000 0.437500 +v -0.375000 1.000000 0.437500 +v 0.375000 0.000000 -0.437500 +v 0.375000 1.000000 -0.437500 +v -0.375000 0.000000 -0.437500 +v -0.375000 1.000000 -0.437500 +v 0.437500 0.000000 -0.375000 +v 0.437500 1.000000 -0.375000 +v 0.437500 0.000000 0.375000 +v 0.437500 1.000000 0.375000 +v -0.437500 0.000000 -0.375000 +v -0.437500 1.000000 -0.375000 +v -0.437500 0.000000 0.375000 +v -0.437500 1.000000 0.375000 +vt 0.069767 0.186047 +vt 0.069767 -0.000000 +vt 0.093023 0.000000 +vt 0.046512 0.186047 +vt 0.046512 -0.000000 +vt 0.023256 0.186047 +vt 0.023256 0.000000 +vt 0.000000 0.186047 +vt -0.000000 -0.000000 +vt 0.023256 0.209302 +vt -0.000000 0.209302 +vt 0.372093 0.186047 +vt 0.232558 0.186047 +vt 0.232558 -0.000000 +vt 0.093023 0.186047 +vt 0.372093 0.372093 +vt 0.232558 0.372093 +vt 0.093023 0.372093 +vt 0.558140 0.651163 +vt 1.000000 0.651163 +vt 1.000000 0.709302 +vt 0.546512 0.197674 +vt 0.546512 0.255814 +vt 0.488372 0.255814 +vt 0.604651 0.197674 +vt 0.604651 0.255814 +vt 0.430233 0.197674 +vt 0.372093 0.197674 +vt 0.372093 0.139535 +vt 0.430233 0.255814 +vt 0.488372 0.197674 +vt 0.511628 0.116279 +vt 0.511628 0.139535 +vt 0.476744 0.139535 +vt 0.906977 0.325581 +vt 0.511628 0.325581 +vt 0.511628 0.290698 +vt 0.406977 0.116279 +vt 0.406977 0.139535 +vt 0.906977 0.360465 +vt 0.511628 0.360465 +vt 0.546512 0.116279 +vt 0.546512 0.139535 +vt 0.906977 0.500000 +vt 0.511628 0.500000 +vt 0.511628 0.465116 +vt 0.441860 0.116279 +vt 0.441860 0.139535 +vt 0.906977 0.430233 +vt 0.511628 0.430233 +vt 0.511628 0.395349 +vt 0.581395 0.116279 +vt 0.581395 0.139535 +vt 0.906977 0.395349 +vt 0.651163 0.116279 +vt 0.651163 0.139535 +vt 0.616279 0.139535 +vt 0.476744 -0.000000 +vt 0.511628 -0.000000 +vt 0.279070 0.720930 +vt 0.244186 0.732558 +vt 0.244186 0.709302 +vt 0.906977 0.465116 +vt 0.616279 0.116279 +vt 0.476744 0.116279 +vt 0.209302 0.686047 +vt 0.511628 0.581395 +vt 0.511628 0.616279 +vt 0.000000 0.616279 +vt 0.511628 0.546512 +vt 0.000000 0.546512 +vt 0.000000 0.511628 +vt 0.511628 0.511628 +vt 0.000000 0.476744 +vt 0.511628 0.441860 +vt 0.000000 0.441860 +vt 0.000000 0.406977 +vt 0.000000 0.581395 +vt 0.511628 0.406977 +vt 0.000000 0.372093 +vt 0.511628 0.651163 +vt 0.000000 0.651163 +vt 0.511628 0.476744 +vt 0.906977 0.290698 +vt 0.511628 0.255814 +vt 0.406977 -0.000000 +vt 0.372093 0.116279 +vt 0.616279 -0.000000 +vt 0.651163 -0.000000 +vt 0.441860 -0.000000 +vt 0.581395 -0.000000 +vt 0.906977 0.534884 +vt 0.511628 0.534884 +vt 0.174419 0.662791 +vt 0.209302 0.744186 +vt 0.174419 0.779070 +vt 0.139535 0.779070 +vt 0.139535 0.651163 +vt 0.104651 0.779070 +vt 0.000000 0.720930 +vt 0.034884 0.709302 +vt 0.034884 0.732558 +vt 0.069767 0.686047 +vt 0.069767 0.744186 +vt 0.104651 0.662791 +vt 0.558140 0.720930 +vt 0.523256 0.732558 +vt 0.523256 0.709302 +vt 0.313953 0.709302 +vt 0.313953 0.732558 +vt 0.348837 0.686047 +vt 0.348837 0.744186 +vt 0.383721 0.662791 +vt 0.488372 0.686047 +vt 0.453488 0.779070 +vt 0.453488 0.662791 +vt 0.418605 0.651163 +vt 0.418605 0.779070 +vt 0.488372 0.139535 +vt 0.430233 0.139535 +vt 0.662791 0.197674 +vt 0.558140 0.534884 +vt 1.000000 0.534884 +vt 1.000000 0.593023 +vt 0.558140 0.593023 +vt 0.558140 0.709302 +vt 1.000000 0.767442 +vt 0.372093 0.000000 +vt 0.546512 -0.000000 +vt 0.604651 0.139535 +vt 0.372093 0.255814 +vt 0.511628 0.372093 +vt 0.906977 0.255814 +vt 0.383721 0.779070 +vt 0.488372 0.744186 +vt 0.662791 0.255814 +vt 0.558140 0.767442 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 -0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.382700 0.000000 -0.923900 +vn 0.923900 -0.382700 0.000000 +vn 0.382700 0.000000 0.923900 +vn 0.923900 0.382700 0.000000 +vn -0.382700 0.000000 -0.923900 +vn -0.923900 -0.382700 -0.000000 +vn 0.923900 0.000000 0.382700 +vn -0.382700 0.923900 -0.000000 +vn -0.923900 0.000000 -0.382700 +vn 0.382700 0.923900 0.000000 +vn -0.382700 0.000000 0.923900 +vn -0.281100 -0.678600 -0.678600 +vn -0.923900 0.382700 -0.000000 +vn -0.923900 0.000000 0.382700 +vn 0.923900 0.000000 -0.382700 +vn -0.862900 -0.357400 -0.357400 +vn 0.382700 -0.923900 0.000000 +vn -0.382700 -0.923900 -0.000000 +vn -0.862900 0.357400 0.357400 +vn -0.281100 0.678600 0.678600 +vn 0.281100 0.678600 0.678600 +vn 0.281100 -0.678600 -0.678600 +vn 0.862900 -0.357400 -0.357400 +vn 0.862900 0.357400 0.357400 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/2/2 +f 6/6/3 5/7/3 7/5/3 +f 2/8/4 1/9/4 5/7/4 +f 6/6/5 8/10/5 4/11/5 +f 12/1/1 11/2/1 9/3/1 +f 16/4/2 15/5/2 11/2/2 +f 14/6/3 13/7/3 15/5/3 +f 10/8/4 9/9/4 13/7/4 +f 16/10/5 12/11/5 10/8/5 +f 20/1/1 19/2/1 17/3/1 +f 24/4/2 23/5/2 19/2/2 +f 22/6/3 21/7/3 23/5/3 +f 18/8/4 17/9/4 21/7/4 +f 22/6/5 24/10/5 20/11/5 +f 28/1/1 27/2/1 25/3/1 +f 32/4/2 31/5/2 27/2/2 +f 30/6/3 29/7/3 31/5/3 +f 26/8/4 25/9/4 29/7/4 +f 32/10/5 28/11/5 26/8/5 +f 34/12/2 36/13/2 35/14/2 +f 39/14/4 40/13/4 38/15/4 +f 42/16/1 44/17/1 43/13/1 +f 47/13/3 48/17/3 46/18/3 +f 119/19/6 126/20/6 123/21/6 +f 122/22/2 121/23/2 52/24/2 +f 50/25/1 52/26/1 56/23/1 +f 119/27/4 56/28/4 49/29/4 +f 120/30/3 119/27/3 121/31/3 +f 68/32/7 65/33/7 63/34/7 +f 95/35/8 75/36/8 77/37/8 +f 74/38/9 59/39/9 71/29/9 +f 96/40/10 58/41/10 75/36/10 +f 66/42/11 67/43/11 65/33/11 +f 92/44/12 80/45/12 82/46/12 +f 72/47/13 61/48/13 59/39/13 +f 90/49/14 86/50/14 84/51/14 +f 64/52/15 69/53/15 67/43/15 +f 89/54/16 84/51/16 58/41/16 +f 60/55/17 71/56/17 73/57/17 +f 83/58/7 81/59/7 105/32/7 +f 105/60/18 115/61/18 108/62/18 +f 91/63/19 82/46/19 86/50/19 +f 115/42/11 105/32/11 81/59/11 +f 56/25/1 52/22/1 51/43/1 +f 122/28/5 50/27/5 54/30/5 +f 62/64/20 73/57/20 69/53/20 +f 70/65/21 63/34/21 61/48/21 +f 106/66/22 108/62/22 115/61/22 +f 98/67/12 99/68/12 108/69/12 +f 97/70/14 107/71/14 109/72/14 +f 88/73/16 109/72/16 111/74/16 +f 102/75/8 110/76/8 104/77/8 +f 98/67/19 106/78/19 107/71/19 +f 101/79/23 104/77/23 105/80/23 +f 100/81/24 105/82/24 108/69/24 +f 103/83/10 111/74/10 110/76/10 +f 94/84/23 77/37/23 65/85/23 +f 87/86/9 118/38/9 116/87/9 +f 76/88/20 114/64/20 113/52/20 +f 83/58/21 112/65/21 117/47/21 +f 57/89/17 116/55/17 114/64/17 +f 85/90/13 117/47/13 118/38/13 +f 78/91/15 113/52/15 115/42/15 +f 93/92/24 65/93/24 80/45/24 +f 107/94/25 106/66/25 113/95/25 +f 107/94/26 114/96/26 116/97/26 +f 109/98/27 116/97/27 118/99/27 +f 105/100/28 104/101/28 112/102/28 +f 110/103/29 117/104/29 112/102/29 +f 111/105/30 118/99/30 117/104/30 +f 65/106/18 67/107/18 80/108/18 +f 65/60/28 77/109/28 63/110/28 +f 77/109/29 75/111/29 61/112/29 +f 61/112/30 75/111/30 58/113/30 +f 82/114/22 80/108/22 67/107/22 +f 73/115/25 86/116/25 82/114/25 +f 84/117/26 86/116/26 73/115/26 +f 58/113/27 84/117/27 71/118/27 +f 121/31/2 55/119/2 51/43/2 +f 121/31/3 119/27/3 53/120/3 +f 124/26/4 123/25/4 126/121/4 +f 54/122/5 124/123/5 125/124/5 +f 120/125/3 125/124/3 126/20/3 +f 56/126/1 123/21/1 124/127/1 +f 129/14/4 130/13/4 128/12/4 +f 132/15/2 134/13/2 133/14/2 +f 137/13/3 138/17/3 136/16/3 +f 140/18/1 142/17/1 141/13/1 +f 2/15/1 4/1/1 1/3/1 +f 4/1/2 8/4/2 3/2/2 +f 8/4/3 6/6/3 7/5/3 +f 6/6/4 2/8/4 5/7/4 +f 2/8/5 6/6/5 4/11/5 +f 10/15/1 12/1/1 9/3/1 +f 12/1/2 16/4/2 11/2/2 +f 16/4/3 14/6/3 15/5/3 +f 14/6/4 10/8/4 13/7/4 +f 14/6/5 16/10/5 10/8/5 +f 18/15/1 20/1/1 17/3/1 +f 20/1/2 24/4/2 19/2/2 +f 24/4/3 22/6/3 23/5/3 +f 22/6/4 18/8/4 21/7/4 +f 18/8/5 22/6/5 20/11/5 +f 26/15/1 28/1/1 25/3/1 +f 28/1/2 32/4/2 27/2/2 +f 32/4/3 30/6/3 31/5/3 +f 30/6/4 26/8/4 29/7/4 +f 30/6/5 32/10/5 26/8/5 +f 33/128/2 34/12/2 35/14/2 +f 37/3/4 39/14/4 38/15/4 +f 41/12/1 42/16/1 43/13/1 +f 45/15/3 47/13/3 46/18/3 +f 56/126/6 119/19/6 123/21/6 +f 50/31/2 122/22/2 52/24/2 +f 54/22/1 50/25/1 56/23/1 +f 53/120/4 119/27/4 49/29/4 +f 122/24/3 120/30/3 121/31/3 +f 70/65/7 68/32/7 63/34/7 +f 94/84/8 95/35/8 77/37/8 +f 60/87/9 74/38/9 71/29/9 +f 95/35/10 96/40/10 75/36/10 +f 68/32/11 66/42/11 65/33/11 +f 91/63/12 92/44/12 82/46/12 +f 74/38/13 72/47/13 59/39/13 +f 89/54/14 90/49/14 84/51/14 +f 66/42/15 64/52/15 67/43/15 +f 96/40/16 89/54/16 58/41/16 +f 62/64/17 60/55/17 73/57/17 +f 112/65/7 83/58/7 105/32/7 +f 90/49/19 91/63/19 86/50/19 +f 79/129/11 115/42/11 81/59/11 +f 49/130/1 56/25/1 51/43/1 +f 120/131/5 122/28/5 54/30/5 +f 64/52/20 62/64/20 69/53/20 +f 72/47/21 70/65/21 61/48/21 +f 113/95/22 106/66/22 115/61/22 +f 106/78/12 98/67/12 108/69/12 +f 88/73/14 97/70/14 109/72/14 +f 103/83/16 88/73/16 111/74/16 +f 101/79/8 102/75/8 104/77/8 +f 97/70/19 98/67/19 107/71/19 +f 100/132/23 101/79/23 105/80/23 +f 99/68/24 100/81/24 108/69/24 +f 102/75/10 103/83/10 110/76/10 +f 93/133/23 94/84/23 65/85/23 +f 57/128/9 87/86/9 116/87/9 +f 78/91/20 76/88/20 113/52/20 +f 85/90/21 83/58/21 117/47/21 +f 76/88/17 57/89/17 114/64/17 +f 87/86/13 85/90/13 118/38/13 +f 79/129/15 78/91/15 115/42/15 +f 92/44/24 93/92/24 80/45/24 +f 114/96/25 107/94/25 113/95/25 +f 109/98/26 107/94/26 116/97/26 +f 111/105/27 109/98/27 118/99/27 +f 104/101/29 110/103/29 112/102/29 +f 110/103/30 111/105/30 117/104/30 +f 63/110/29 77/109/29 61/112/29 +f 59/134/30 61/112/30 58/113/30 +f 69/135/22 82/114/22 67/107/22 +f 69/135/25 73/115/25 82/114/25 +f 71/118/26 84/117/26 73/115/26 +f 59/134/27 58/113/27 71/118/27 +f 52/22/2 121/31/2 51/43/2 +f 55/119/3 121/31/3 53/120/3 +f 125/136/4 124/26/4 126/121/4 +f 120/125/5 54/122/5 125/124/5 +f 119/19/3 120/125/3 126/20/3 +f 54/137/1 56/126/1 124/127/1 +f 127/128/4 129/14/4 128/12/4 +f 131/3/2 132/15/2 133/14/2 +f 135/12/3 137/13/3 136/16/3 +f 139/15/1 140/18/1 141/13/1 diff --git a/assets/hbm/models/launch_table/launch_table_small_scaffold_empty.obj b/assets/hbm/models/launch_table/launch_table_small_scaffold_empty.obj new file mode 100644 index 000000000..239c0b74f --- /dev/null +++ b/assets/hbm/models/launch_table/launch_table_small_scaffold_empty.obj @@ -0,0 +1,150 @@ +# Blender v2.76 (sub 0) OBJ File: 'launch_table_small_scaffold_empty.blend' +# www.blender.org +o Cube.008_Cube.009 +v -0.500000 0.000000 -0.375000 +v -0.500000 1.000000 -0.375000 +v -0.500000 0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.375000 0.000000 -0.375000 +v -0.375000 1.000000 -0.375000 +v -0.375000 0.000000 -0.500000 +v -0.375000 1.000000 -0.500000 +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 0.000000 0.375000 +v -0.500000 1.000000 0.375000 +v -0.375000 0.000000 0.500000 +v -0.375000 1.000000 0.500000 +v -0.375000 0.000000 0.375000 +v -0.375000 1.000000 0.375000 +v 0.375000 0.000000 0.500000 +v 0.375000 1.000000 0.500000 +v 0.375000 0.000000 0.375000 +v 0.375000 1.000000 0.375000 +v 0.500000 0.000000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 0.000000 0.375000 +v 0.500000 1.000000 0.375000 +v 0.375000 0.000000 -0.375000 +v 0.375000 1.000000 -0.375000 +v 0.375000 0.000000 -0.500000 +v 0.375000 1.000000 -0.500000 +v 0.500000 0.000000 -0.375000 +v 0.500000 1.000000 -0.375000 +v 0.500000 0.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.375000 0.000000 -0.437500 +v -0.375000 1.000000 -0.437500 +v 0.375000 0.000000 -0.437500 +v 0.375000 1.000000 -0.437500 +v -0.375000 0.000000 0.437500 +v -0.375000 1.000000 0.437500 +v 0.375000 0.000000 0.437500 +v 0.375000 1.000000 0.437500 +v -0.437500 0.000000 0.375000 +v -0.437500 1.000000 0.375000 +v -0.437500 0.000000 -0.375000 +v -0.437500 1.000000 -0.375000 +v 0.437500 0.000000 0.375000 +v 0.437500 1.000000 0.375000 +v 0.437500 0.000000 -0.375000 +v 0.437500 1.000000 -0.375000 +v -0.375000 0.000000 -0.437500 +v -0.375000 1.000000 -0.437500 +v 0.375000 0.000000 -0.437500 +v 0.375000 1.000000 -0.437500 +v -0.375000 0.000000 0.437500 +v -0.375000 1.000000 0.437500 +v 0.375000 0.000000 0.437500 +v 0.375000 1.000000 0.437500 +v -0.437500 0.000000 0.375000 +v -0.437500 1.000000 0.375000 +v -0.437500 0.000000 -0.375000 +v -0.437500 1.000000 -0.375000 +v 0.437500 0.000000 0.375000 +v 0.437500 1.000000 0.375000 +v 0.437500 0.000000 -0.375000 +v 0.437500 1.000000 -0.375000 +vt 0.035714 0.285714 +vt 0.035714 -0.000000 +vt 0.071429 0.000000 +vt 0.000000 0.285714 +vt -0.000000 0.000000 +vt 0.107143 0.285714 +vt 0.107143 -0.000000 +vt 0.142857 -0.000000 +vt 0.071429 0.285714 +vt 0.035714 0.321429 +vt 0.214286 0.714286 +vt 0.000000 0.714286 +vt -0.000000 0.428571 +vt 0.428571 0.428571 +vt 0.428571 0.714286 +vt 0.214286 1.000000 +vt 0.000000 1.000000 +vt 0.428571 1.000000 +vt 0.142857 0.285714 +vt 0.000000 0.321429 +vt 0.214286 0.428571 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/2/2 +f 6/6/3 5/7/3 7/8/3 +f 2/9/4 1/3/4 5/7/4 +f 8/4/5 4/1/5 2/10/5 +f 12/1/1 11/2/1 9/3/1 +f 16/4/2 15/5/2 11/2/2 +f 14/6/3 13/7/3 15/8/3 +f 10/9/4 9/3/4 13/7/4 +f 16/4/5 12/1/5 10/10/5 +f 20/1/1 19/2/1 17/3/1 +f 24/4/2 23/5/2 19/2/2 +f 22/6/3 21/7/3 23/8/3 +f 18/9/4 17/3/4 21/7/4 +f 24/4/5 20/1/5 18/10/5 +f 28/1/1 27/2/1 25/3/1 +f 32/4/2 31/5/2 27/2/2 +f 30/6/3 29/7/3 31/8/3 +f 26/9/4 25/3/4 29/7/4 +f 32/4/5 28/1/5 26/10/5 +f 34/11/2 36/12/2 35/13/2 +f 39/14/4 40/15/4 38/11/4 +f 42/16/1 44/17/1 43/12/1 +f 47/15/3 48/18/3 46/16/3 +f 51/13/4 52/12/4 50/11/4 +f 54/11/2 56/15/2 55/14/2 +f 59/12/3 60/17/3 58/16/3 +f 62/16/1 64/18/1 63/15/1 +f 2/9/1 4/1/1 1/3/1 +f 4/1/2 8/4/2 3/2/2 +f 8/19/3 6/6/3 7/8/3 +f 6/6/4 2/9/4 5/7/4 +f 6/20/5 8/4/5 2/10/5 +f 10/9/1 12/1/1 9/3/1 +f 12/1/2 16/4/2 11/2/2 +f 16/19/3 14/6/3 15/8/3 +f 14/6/4 10/9/4 13/7/4 +f 14/20/5 16/4/5 10/10/5 +f 18/9/1 20/1/1 17/3/1 +f 20/1/2 24/4/2 19/2/2 +f 24/19/3 22/6/3 23/8/3 +f 22/6/4 18/9/4 21/7/4 +f 22/20/5 24/4/5 18/10/5 +f 26/9/1 28/1/1 25/3/1 +f 28/1/2 32/4/2 27/2/2 +f 32/19/3 30/6/3 31/8/3 +f 30/6/4 26/9/4 29/7/4 +f 30/20/5 32/4/5 26/10/5 +f 33/21/2 34/11/2 35/13/2 +f 37/21/4 39/14/4 38/11/4 +f 41/11/1 42/16/1 43/12/1 +f 45/11/3 47/15/3 46/16/3 +f 49/21/4 51/13/4 50/11/4 +f 53/21/2 54/11/2 55/14/2 +f 57/11/3 59/12/3 58/16/3 +f 61/11/1 62/16/1 63/15/1 diff --git a/assets/hbm/models/missile_parts/mp_w_10_taint.obj b/assets/hbm/models/missile_parts/mp_w_10_taint.obj new file mode 100644 index 000000000..b4a327ef6 --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_w_10_taint.obj @@ -0,0 +1,414 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_w_10_taint.blend' +# www.blender.org +o Cylinder +v 0.000000 0.000000 -0.500000 +v 0.000000 0.750000 -0.500000 +v 0.250000 0.000000 -0.433013 +v 0.250000 0.750000 -0.433013 +v 0.433013 0.000000 -0.250000 +v 0.433013 0.750000 -0.250000 +v 0.500000 0.000000 0.000000 +v 0.500000 0.750000 0.000000 +v 0.433013 0.000000 0.250000 +v 0.433013 0.750000 0.250000 +v 0.250000 0.000000 0.433013 +v 0.250000 0.750000 0.433013 +v 0.000000 0.000000 0.500000 +v 0.000000 0.750000 0.500000 +v -0.250000 0.000000 0.433013 +v -0.250000 0.750000 0.433013 +v -0.433013 0.000000 0.250000 +v -0.433013 0.750000 0.250000 +v -0.500000 0.000000 0.000000 +v -0.500000 0.750000 0.000000 +v -0.433013 0.000000 -0.250000 +v -0.433013 0.750000 -0.250000 +v -0.250000 0.000000 -0.433013 +v -0.250000 0.750000 -0.433013 +v 0.223421 1.250000 -0.386976 +v 0.000000 1.250000 -0.446841 +v 0.386976 1.250000 -0.223421 +v 0.446841 1.250000 0.000000 +v 0.386976 1.250000 0.223421 +v 0.223421 1.250000 0.386976 +v 0.000000 1.250000 0.446841 +v -0.223421 1.250000 0.386976 +v -0.386976 1.250000 0.223421 +v -0.446841 1.250000 0.000000 +v -0.386976 1.250000 -0.223420 +v -0.223421 1.250000 -0.386976 +v 0.171690 1.750000 -0.297376 +v 0.000000 1.750000 -0.343380 +v 0.297376 1.750000 -0.171690 +v 0.343380 1.750000 0.000000 +v 0.297376 1.750000 0.171690 +v 0.171690 1.750000 0.297376 +v 0.000000 1.750000 0.343380 +v -0.171690 1.750000 0.297376 +v -0.297376 1.750000 0.171690 +v -0.343380 1.750000 0.000000 +v -0.297376 1.750000 -0.171690 +v -0.171690 1.750000 -0.297376 +v 0.114020 2.000000 -0.197488 +v 0.000000 2.000000 -0.228040 +v 0.197488 2.000000 -0.114020 +v 0.228040 2.000000 0.000000 +v 0.197488 2.000000 0.114020 +v 0.114020 2.000000 0.197488 +v 0.000000 2.000000 0.228040 +v -0.114020 2.000000 0.197488 +v -0.197488 2.000000 0.114020 +v -0.228040 2.000000 0.000000 +v -0.197488 2.000000 -0.114020 +v -0.114020 2.000000 -0.197488 +v 0.029487 2.250000 -0.051072 +v 0.000000 2.250000 -0.058973 +v 0.051073 2.250000 -0.029487 +v 0.058974 2.250000 0.000000 +v 0.051073 2.250000 0.029487 +v 0.029487 2.250000 0.051073 +v 0.000000 2.250000 0.058973 +v -0.029487 2.250000 0.051073 +v -0.051072 2.250000 0.029487 +v -0.058973 2.250000 0.000000 +v -0.051072 2.250000 -0.029487 +v -0.029487 2.250000 -0.051072 +vt 0.642857 0.214286 +vt 0.571429 0.214286 +vt 0.571429 0.000000 +vt 0.500000 0.214286 +vt 0.500000 0.000000 +vt 0.428571 0.214286 +vt 0.428571 0.000000 +vt 0.357143 0.214286 +vt 0.357143 0.000000 +vt 0.285714 0.214286 +vt 0.285714 0.000000 +vt 0.214286 0.214286 +vt 0.214286 0.000000 +vt 0.142857 0.214286 +vt 0.142857 0.000000 +vt 0.071429 0.214286 +vt 0.071429 0.000000 +vt -0.000000 0.214286 +vt -0.000000 0.000000 +vt 0.857143 0.214286 +vt 0.785714 0.214286 +vt 0.785714 0.000000 +vt 0.071429 0.357143 +vt -0.000000 0.357143 +vt 0.714286 0.214286 +vt 0.642857 0.000000 +vt 0.714286 0.000000 +vt 0.285714 0.839286 +vt 0.000000 0.839286 +vt 0.071429 0.714286 +vt 0.571429 0.357143 +vt 0.642857 0.357143 +vt 0.625000 0.517857 +vt 0.142857 0.357143 +vt 0.214286 0.357143 +vt 0.285714 0.357143 +vt 0.357143 0.357143 +vt 0.428571 0.357143 +vt 0.714286 0.357143 +vt 0.500000 0.357143 +vt 0.785714 0.357143 +vt 0.857143 0.357143 +vt 0.714286 0.517857 +vt 0.767857 0.517857 +vt 0.767857 0.589286 +vt 0.125000 0.517857 +vt 0.339286 0.517857 +vt 0.285714 0.517857 +vt 0.696429 0.517857 +vt 0.642857 0.517857 +vt 0.553571 0.517857 +vt 0.053571 0.517857 +vt -0.000000 0.517857 +vt 0.267857 0.517857 +vt 0.482143 0.517857 +vt 0.839286 0.517857 +vt 0.196429 0.517857 +vt 0.410714 0.517857 +vt 0.410714 0.589286 +vt 0.392857 0.696429 +vt 0.375000 0.696429 +vt 0.571429 0.517857 +vt 0.625000 0.589286 +vt 0.071429 0.517857 +vt 0.125000 0.589286 +vt 0.339286 0.589286 +vt 0.303571 0.589286 +vt 0.696429 0.589286 +vt 0.660714 0.589286 +vt 0.553571 0.589286 +vt 0.517857 0.589286 +vt 0.053571 0.589286 +vt 0.017857 0.589286 +vt 0.267857 0.589286 +vt 0.232143 0.589286 +vt 0.428571 0.517857 +vt 0.482143 0.589286 +vt 0.839286 0.589286 +vt 0.803571 0.589286 +vt 0.196429 0.589286 +vt 0.160714 0.589286 +vt 0.357143 0.517857 +vt 0.312022 0.699693 +vt 0.295528 0.699693 +vt 0.295528 0.728262 +vt 0.732143 0.589286 +vt 0.750000 0.696429 +vt 0.589286 0.589286 +vt 0.607143 0.696429 +vt 0.107143 0.696429 +vt 0.089286 0.696429 +vt 0.321429 0.696429 +vt 0.303571 0.696429 +vt 0.678571 0.696429 +vt 0.535714 0.696429 +vt 0.517857 0.696429 +vt 0.035714 0.696429 +vt 0.017857 0.696429 +vt 0.250000 0.696429 +vt 0.232143 0.696429 +vt 0.446429 0.589286 +vt 0.464286 0.696429 +vt 0.821429 0.696429 +vt 0.803571 0.696429 +vt 0.178571 0.696429 +vt 0.160714 0.696429 +vt 0.857143 0.000000 +vt 0.142857 0.696429 +vt 0.214286 0.714286 +vt 0.267857 0.767857 +vt 0.267857 0.910714 +vt 0.214286 0.964286 +vt 0.142857 0.982143 +vt 0.071429 0.964286 +vt 0.017857 0.910714 +vt 0.017857 0.767857 +vt 0.500000 0.517857 +vt 0.214286 0.517857 +vt 0.785714 0.517857 +vt 0.142857 0.517857 +vt 0.375000 0.589286 +vt 0.089286 0.589286 +vt 0.303775 0.730472 +vt 0.312022 0.728262 +vt 0.318059 0.722225 +vt 0.320269 0.713978 +vt 0.318059 0.705731 +vt 0.303775 0.697484 +vt 0.289490 0.705731 +vt 0.287280 0.713978 +vt 0.289490 0.722225 +vt 0.732143 0.696429 +vt 0.589286 0.696429 +vt 0.660714 0.696429 +vt 0.446429 0.696429 +vn 0.258800 0.000000 -0.965900 +vn 0.707100 0.000000 -0.707100 +vn 0.965900 0.000000 -0.258800 +vn 0.965900 0.000000 0.258800 +vn 0.707100 0.000000 0.707100 +vn 0.258800 0.000000 0.965900 +vn -0.258800 0.000000 0.965900 +vn -0.707100 0.000000 0.707100 +vn -0.965900 0.000000 0.258800 +vn -0.965900 0.000000 -0.258800 +vn -0.960900 0.102200 0.257500 +vn -0.258800 0.000000 -0.965900 +vn -0.707100 0.000000 -0.707100 +vn 0.000000 -1.000000 0.000000 +vn 0.253800 0.196000 -0.947200 +vn -0.703400 0.102200 0.703400 +vn -0.257500 0.102200 0.960900 +vn 0.257500 0.102200 0.960900 +vn 0.703400 0.102200 0.703400 +vn 0.960900 0.102200 0.257500 +vn -0.257500 0.102200 -0.960900 +vn 0.257500 0.102200 -0.960900 +vn 0.960900 0.102200 -0.257500 +vn -0.703400 0.102200 -0.703400 +vn 0.703400 0.102200 -0.703400 +vn -0.960900 0.102200 -0.257500 +vn -0.645900 0.407100 -0.645900 +vn -0.693400 0.196000 0.693400 +vn 0.693400 0.196000 0.693400 +vn -0.253800 0.196000 -0.947200 +vn 0.693400 0.196000 -0.693400 +vn -0.947200 0.196000 0.253800 +vn 0.253800 0.196000 0.947200 +vn 0.947200 0.196000 -0.253800 +vn -0.947200 0.196000 -0.253800 +vn -0.253800 0.196000 0.947200 +vn 0.947200 0.196000 0.253800 +vn -0.693400 0.196000 -0.693400 +vn 0.808700 0.546900 0.216700 +vn 0.236400 0.407100 -0.882300 +vn -0.645900 0.407100 0.645900 +vn 0.645900 0.407100 0.645900 +vn -0.236400 0.407100 -0.882300 +vn 0.645900 0.407100 -0.645900 +vn -0.882300 0.407100 0.236400 +vn 0.236400 0.407000 0.882300 +vn 0.882300 0.407100 -0.236400 +vn -0.882300 0.407100 -0.236400 +vn -0.236400 0.407100 0.882300 +vn 0.882300 0.407100 0.236400 +vn 0.000000 1.000000 0.000000 +vn -0.592000 0.546900 -0.592000 +vn 0.216700 0.546900 -0.808700 +vn -0.592000 0.546900 0.592000 +vn 0.592000 0.546900 0.592000 +vn -0.216700 0.546900 -0.808700 +vn 0.592000 0.546900 -0.592000 +vn -0.808700 0.546900 0.216700 +vn 0.216700 0.546900 0.808700 +vn 0.808700 0.546900 -0.216700 +vn -0.808700 0.546900 -0.216700 +vn -0.216700 0.546900 0.808700 +vn 0.236400 0.407100 0.882300 +s off +f 2/1/1 4/2/1 3/3/1 +f 4/2/2 6/4/2 5/5/2 +f 6/4/3 8/6/3 7/7/3 +f 8/6/4 10/8/4 9/9/4 +f 10/8/5 12/10/5 11/11/5 +f 12/10/6 14/12/6 13/13/6 +f 14/12/7 16/14/7 15/15/7 +f 16/14/8 18/16/8 17/17/8 +f 18/16/9 20/18/9 19/19/9 +f 20/20/10 22/21/10 21/22/10 +f 18/16/11 33/23/11 34/24/11 +f 24/25/12 2/1/12 1/26/12 +f 22/21/13 24/25/13 23/27/13 +f 7/28/14 19/29/14 23/30/14 +f 25/31/15 26/32/15 38/33/15 +f 16/14/16 32/34/16 33/23/16 +f 14/12/17 31/35/17 32/34/17 +f 12/10/18 30/36/18 31/35/18 +f 10/8/19 29/37/19 30/36/19 +f 8/6/20 28/38/20 29/37/20 +f 24/25/21 36/39/21 26/32/21 +f 4/2/22 2/1/22 26/32/22 +f 8/6/23 6/4/23 27/40/23 +f 22/21/24 35/41/24 36/39/24 +f 4/2/25 25/31/25 27/40/25 +f 20/20/26 34/42/26 35/41/26 +f 48/43/27 47/44/27 59/45/27 +f 33/23/28 32/34/28 44/46/28 +f 29/37/29 41/47/29 42/48/29 +f 36/39/30 48/49/30 38/50/30 +f 27/40/31 25/31/31 37/51/31 +f 33/23/32 45/52/32 46/53/32 +f 31/35/33 30/36/33 42/54/33 +f 28/38/34 27/40/34 39/55/34 +f 35/41/35 34/42/35 46/56/35 +f 32/34/36 31/35/36 43/57/36 +f 29/37/37 28/38/37 40/58/37 +f 35/41/38 47/44/38 48/43/38 +f 52/59/39 64/60/39 65/61/39 +f 37/62/40 38/33/40 50/63/40 +f 45/64/41 44/46/41 56/65/41 +f 41/47/42 53/66/42 54/67/42 +f 48/49/43 60/68/43 50/69/43 +f 37/51/44 49/70/44 51/71/44 +f 45/52/45 57/72/45 58/73/45 +f 42/54/46 54/74/46 55/75/46 +f 40/76/47 39/55/47 51/77/47 +f 46/56/48 58/78/48 59/79/48 +f 43/57/49 55/80/49 56/81/49 +f 41/82/50 40/58/50 52/59/50 +f 69/83/51 67/84/51 63/85/51 +f 60/86/52 59/45/52 71/87/52 +f 49/88/53 50/63/53 62/89/53 +f 56/65/54 68/90/54 69/91/54 +f 53/66/55 65/92/55 66/93/55 +f 50/69/56 60/68/56 72/94/56 +f 49/70/57 61/95/57 63/96/57 +f 57/72/58 69/97/58 70/98/58 +f 54/74/59 66/99/59 67/100/59 +f 52/101/60 51/77/60 63/102/60 +f 58/78/61 70/103/61 71/104/61 +f 55/80/62 67/105/62 68/106/62 +f 1/26/1 2/1/1 3/3/1 +f 3/3/2 4/2/2 5/5/2 +f 5/5/3 6/4/3 7/7/3 +f 7/7/4 8/6/4 9/9/4 +f 9/9/5 10/8/5 11/11/5 +f 11/11/6 12/10/6 13/13/6 +f 13/13/7 14/12/7 15/15/7 +f 15/15/8 16/14/8 17/17/8 +f 17/17/9 18/16/9 19/19/9 +f 19/107/10 20/20/10 21/22/10 +f 20/18/11 18/16/11 34/24/11 +f 23/27/12 24/25/12 1/26/12 +f 21/22/13 22/21/13 23/27/13 +f 23/30/14 1/108/14 3/109/14 +f 3/109/14 5/110/14 7/28/14 +f 7/28/14 9/111/14 11/112/14 +f 11/112/14 13/113/14 15/114/14 +f 15/114/14 17/115/14 19/29/14 +f 19/29/14 21/116/14 23/30/14 +f 23/30/14 3/109/14 7/28/14 +f 7/28/14 11/112/14 15/114/14 +f 15/114/14 19/29/14 7/28/14 +f 37/62/15 25/31/15 38/33/15 +f 18/16/16 16/14/16 33/23/16 +f 16/14/17 14/12/17 32/34/17 +f 14/12/18 12/10/18 31/35/18 +f 12/10/19 10/8/19 30/36/19 +f 10/8/20 8/6/20 29/37/20 +f 2/1/21 24/25/21 26/32/21 +f 25/31/22 4/2/22 26/32/22 +f 28/38/23 8/6/23 27/40/23 +f 24/25/24 22/21/24 36/39/24 +f 6/4/25 4/2/25 27/40/25 +f 22/21/26 20/20/26 35/41/26 +f 60/86/27 48/43/27 59/45/27 +f 45/64/28 33/23/28 44/46/28 +f 30/36/29 29/37/29 42/48/29 +f 26/32/30 36/39/30 38/50/30 +f 39/117/31 27/40/31 37/51/31 +f 34/24/32 33/23/32 46/53/32 +f 43/118/33 31/35/33 42/54/33 +f 40/76/34 28/38/34 39/55/34 +f 47/119/35 35/41/35 46/56/35 +f 44/120/36 32/34/36 43/57/36 +f 41/82/37 29/37/37 40/58/37 +f 36/39/38 35/41/38 48/43/38 +f 53/121/39 52/59/39 65/61/39 +f 49/88/40 37/62/40 50/63/40 +f 57/122/41 45/64/41 56/65/41 +f 42/48/42 41/47/42 54/67/42 +f 38/50/43 48/49/43 50/69/43 +f 39/117/44 37/51/44 51/71/44 +f 46/53/45 45/52/45 58/73/45 +f 43/118/63 42/54/63 55/75/63 +f 52/101/47 40/76/47 51/77/47 +f 47/119/48 46/56/48 59/79/48 +f 44/120/49 43/57/49 56/81/49 +f 53/121/50 41/82/50 52/59/50 +f 63/85/51 61/123/51 62/124/51 +f 62/124/51 72/125/51 63/85/51 +f 71/126/51 70/127/51 69/83/51 +f 69/83/51 68/128/51 67/84/51 +f 67/84/51 66/129/51 65/130/51 +f 65/130/51 64/131/51 63/85/51 +f 63/85/51 72/125/51 71/126/51 +f 71/126/51 69/83/51 63/85/51 +f 67/84/51 65/130/51 63/85/51 +f 72/132/52 60/86/52 71/87/52 +f 61/133/53 49/88/53 62/89/53 +f 57/122/54 56/65/54 69/91/54 +f 54/67/55 53/66/55 66/93/55 +f 62/134/56 50/69/56 72/94/56 +f 51/71/57 49/70/57 63/96/57 +f 58/73/58 57/72/58 70/98/58 +f 55/75/59 54/74/59 67/100/59 +f 64/135/60 52/101/60 63/102/60 +f 59/79/61 58/78/61 71/104/61 +f 56/81/62 55/80/62 68/106/62 diff --git a/assets/hbm/models/scaffold.obj b/assets/hbm/models/scaffold.obj new file mode 100644 index 000000000..74229560a --- /dev/null +++ b/assets/hbm/models/scaffold.obj @@ -0,0 +1,414 @@ +# Blender v2.76 (sub 0) OBJ File: 'scaffold.blend' +# www.blender.org +o Cube_Cube.001 +v -0.375000 0.000000 0.500000 +v -0.375000 1.000000 0.500000 +v -0.375000 0.000000 -0.500000 +v -0.375000 1.000000 -0.500000 +v 0.375000 0.000000 0.500000 +v 0.375000 1.000000 0.500000 +v 0.375000 0.000000 -0.500000 +v 0.375000 1.000000 -0.500000 +v -0.250000 0.000000 0.500000 +v -0.250000 1.000000 0.500000 +v -0.250000 0.000000 -0.500000 +v -0.250000 1.000000 -0.500000 +v 0.250000 0.000000 0.500000 +v 0.250000 1.000000 0.500000 +v 0.250000 0.000000 -0.500000 +v 0.250000 1.000000 -0.500000 +v -0.250000 0.000000 0.375000 +v -0.250000 1.000000 0.375000 +v 0.250000 0.000000 0.375000 +v 0.250000 1.000000 0.375000 +v -0.250000 0.000000 -0.375000 +v -0.250000 1.000000 -0.375000 +v 0.250000 0.000000 -0.375000 +v 0.250000 1.000000 -0.375000 +v -0.375000 0.000000 -0.375000 +v -0.375000 1.000000 -0.375000 +v 0.375000 0.000000 -0.375000 +v 0.375000 1.000000 -0.375000 +v -0.375000 0.000000 0.375000 +v -0.375000 1.000000 0.375000 +v 0.375000 0.000000 0.375000 +v 0.375000 1.000000 0.375000 +v -0.250000 0.062500 0.375000 +v -0.250000 0.062500 -0.375000 +v -0.375000 0.062500 -0.375000 +v -0.375000 0.062500 0.375000 +v -0.250000 0.937500 0.375000 +v -0.250000 0.937500 -0.375000 +v -0.375000 0.937500 -0.375000 +v -0.375000 0.937500 0.375000 +v -0.250000 0.562500 0.000000 +v -0.375000 0.562500 0.000000 +v -0.250000 0.437500 0.000000 +v -0.375000 0.437500 0.000000 +v -0.250000 0.187500 0.375000 +v -0.250000 0.187500 -0.375000 +v -0.375000 0.187500 -0.375000 +v -0.375000 0.187500 0.375000 +v -0.250000 0.812500 0.375000 +v -0.250000 0.812500 -0.375000 +v -0.375000 0.812500 -0.375000 +v -0.375000 0.812500 0.375000 +v -0.250000 0.500000 0.062500 +v -0.375000 0.500000 0.062500 +v -0.250000 0.500000 -0.062500 +v -0.375000 0.500000 -0.062500 +v 0.375000 0.062500 0.375000 +v 0.375000 0.062500 -0.375000 +v 0.250000 0.062500 -0.375000 +v 0.250000 0.062500 0.375000 +v 0.375000 0.937500 0.375000 +v 0.375000 0.937500 -0.375000 +v 0.250000 0.937500 -0.375000 +v 0.250000 0.937500 0.375000 +v 0.375000 0.562500 0.000000 +v 0.250000 0.562500 0.000000 +v 0.375000 0.437500 0.000000 +v 0.250000 0.437500 0.000000 +v 0.375000 0.187500 0.375000 +v 0.375000 0.187500 -0.375000 +v 0.250000 0.187500 -0.375000 +v 0.250000 0.187500 0.375000 +v 0.375000 0.812500 0.375000 +v 0.375000 0.812500 -0.375000 +v 0.250000 0.812500 -0.375000 +v 0.250000 0.812500 0.375000 +v 0.375000 0.500000 0.062500 +v 0.250000 0.500000 0.062500 +v 0.375000 0.500000 -0.062500 +v 0.250000 0.500000 -0.062500 +v 0.250000 0.062500 0.375000 +v -0.250000 0.062500 0.375000 +v -0.250000 0.062500 0.500000 +v 0.250000 0.062500 0.500000 +v 0.250000 0.937500 0.375000 +v -0.250000 0.937500 0.375000 +v -0.250000 0.937500 0.500000 +v 0.250000 0.937500 0.500000 +v -0.000000 0.562500 0.375000 +v -0.000000 0.562500 0.500000 +v -0.000000 0.437500 0.375000 +v -0.000000 0.437500 0.500000 +v 0.250000 0.187500 0.375000 +v -0.250000 0.187500 0.375000 +v -0.250000 0.187500 0.500000 +v 0.250000 0.187500 0.500000 +v 0.250000 0.812500 0.375000 +v -0.250000 0.812500 0.375000 +v -0.250000 0.812500 0.500000 +v 0.250000 0.812500 0.500000 +v 0.041667 0.500000 0.375000 +v 0.041667 0.500000 0.500000 +v -0.041667 0.500000 0.375000 +v -0.041667 0.500000 0.500000 +v 0.250000 0.062500 -0.500000 +v -0.250000 0.062500 -0.500000 +v -0.250000 0.062500 -0.375000 +v 0.250000 0.062500 -0.375000 +v 0.250000 0.937500 -0.500000 +v -0.250000 0.937500 -0.500000 +v -0.250000 0.937500 -0.375000 +v 0.250000 0.937500 -0.375000 +v 0.000000 0.562500 -0.500000 +v 0.000000 0.562500 -0.375000 +v 0.000000 0.437500 -0.500000 +v 0.000000 0.437500 -0.375000 +v 0.250000 0.187500 -0.500000 +v -0.250000 0.187500 -0.500000 +v -0.250000 0.187500 -0.375000 +v 0.250000 0.187500 -0.375000 +v 0.250000 0.812500 -0.500000 +v -0.250000 0.812500 -0.500000 +v -0.250000 0.812500 -0.375000 +v 0.250000 0.812500 -0.375000 +v 0.041667 0.500000 -0.500000 +v 0.041667 0.500000 -0.375000 +v -0.041667 0.500000 -0.500000 +v -0.041667 0.500000 -0.375000 +vt 0.875000 0.875000 +vt 0.875000 0.750000 +vt 1.000000 0.750000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.875000 1.000000 +vt 0.250000 0.000000 +vt 0.250000 1.000000 +vt 0.125000 1.000000 +vt 0.125027 0.000035 +vt 0.000035 0.999965 +vt 0.875000 0.000000 +vt 0.750000 1.000000 +vt 1.000000 0.250000 +vt 0.875000 0.250000 +vt 0.875000 0.125000 +vt 0.000035 0.000035 +vt 0.750000 0.000000 +vt 0.000000 0.250000 +vt 0.000000 0.125000 +vt 0.125000 0.125000 +vt 0.125000 0.875000 +vt -0.000000 0.875000 +vt 0.000000 0.750000 +vt 1.000000 0.125000 +vt 1.000000 0.875000 +vt 0.500000 0.250000 +vt 0.500000 0.125000 +vt 0.437500 0.750000 +vt 0.437500 0.875000 +vt 0.437500 0.125000 +vt 0.437500 0.250000 +vt 0.500000 0.750000 +vt 0.500000 0.875000 +vt 0.562500 0.250000 +vt 0.562500 0.125000 +vt 0.562500 0.875000 +vt 0.562500 0.750000 +vt 0.500000 0.562500 +vt 0.562500 0.500000 +vt 0.875000 0.812500 +vt 0.500000 0.437500 +vt 0.875000 0.062500 +vt 0.875000 0.187500 +vt 0.125000 0.937500 +vt 0.125000 0.812500 +vt 0.437500 0.500000 +vt 0.125000 0.187500 +vt 0.125000 0.750000 +vt 0.125000 0.250000 +vt 0.250000 0.750000 +vt 0.250000 0.875000 +vt 0.125000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.541667 +vt 0.125000 0.541667 +vt 0.125000 0.458333 +vt 0.000000 0.458333 +vt 0.541667 0.500000 +vt 0.750000 0.812500 +vt 0.750000 0.062500 +vt 0.750000 0.187500 +vt 0.250000 0.937500 +vt 0.250000 0.812500 +vt 0.458333 0.500000 +vt 0.250000 0.187500 +vt 1.000000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.541667 +vt 1.000000 0.541667 +vt 1.000000 0.458333 +vt 0.875000 0.458333 +vt 0.875000 0.937500 +vt 0.125000 0.062500 +vt 0.750000 0.937500 +vt 0.250000 0.062500 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -0.707100 0.707100 +vn 0.000000 -0.707100 -0.707100 +vn 0.000000 0.707100 0.707100 +vn 0.000000 0.707100 -0.707100 +vn 0.832100 -0.554700 0.000000 +vn -0.832100 -0.554700 0.000000 +vn 0.832100 0.554700 0.000000 +vn -0.832100 0.554700 -0.000000 +s off +f 26/1/1 22/2/1 12/3/1 +f 11/4/2 12/5/2 22/6/2 +f 21/7/3 22/8/3 26/9/3 +f 25/10/4 26/9/4 4/11/4 +f 3/12/5 4/6/5 12/13/5 +f 11/14/6 21/15/6 25/16/6 +f 9/17/2 17/10/2 18/9/2 +f 1/10/3 9/7/3 10/8/3 +f 17/18/5 29/12/5 30/6/5 +f 30/6/4 29/12/4 1/4/4 +f 9/19/6 1/20/6 29/21/6 +f 30/22/1 2/23/1 10/24/1 +f 20/8/5 32/9/5 31/10/5 +f 31/10/2 32/9/2 6/11/2 +f 6/6/3 14/13/3 13/18/3 +f 14/5/4 20/6/4 19/12/4 +f 31/22/6 5/23/6 13/24/6 +f 14/19/1 6/20/1 32/21/1 +f 8/5/2 28/6/2 27/12/2 +f 15/7/5 16/8/5 8/9/5 +f 23/10/4 24/9/4 16/11/4 +f 27/12/3 28/6/3 24/13/3 +f 8/25/1 16/14/1 24/15/1 +f 23/2/6 15/3/6 7/26/6 +f 43/27/7 44/28/7 35/16/7 +f 36/21/8 44/28/8 43/27/8 +f 53/29/9 54/30/9 48/22/9 +f 52/21/7 54/31/7 53/32/7 +f 41/33/10 42/34/10 40/22/10 +f 39/1/9 42/34/9 41/33/9 +f 55/35/8 56/36/8 51/16/8 +f 47/1/10 56/37/10 55/38/10 +f 42/39/4 54/40/4 52/41/4 +f 44/42/4 36/43/4 48/44/4 +f 42/39/4 39/45/4 51/46/4 +f 44/42/4 56/47/4 47/48/4 +f 43/42/2 34/43/2 46/44/2 +f 41/39/2 55/40/2 50/41/2 +f 41/39/2 37/45/2 49/46/2 +f 54/40/4 42/39/4 56/47/4 +f 43/42/2 53/47/2 45/48/2 +f 41/39/2 53/47/2 43/42/2 +f 67/34/7 68/33/7 59/2/7 +f 60/49/8 68/33/8 67/34/8 +f 77/31/9 78/32/9 72/50/9 +f 76/49/7 78/51/7 77/52/7 +f 65/28/10 66/27/10 64/50/10 +f 63/15/9 66/27/9 65/28/9 +f 79/37/8 80/38/8 75/2/8 +f 71/15/10 80/35/10 79/36/10 +f 66/39/4 78/40/4 76/41/4 +f 68/42/4 60/43/4 72/44/4 +f 66/39/4 63/45/4 75/46/4 +f 68/42/4 80/47/4 71/48/4 +f 67/42/2 58/43/2 70/44/2 +f 65/39/2 79/40/2 74/41/2 +f 65/39/2 61/45/2 73/46/2 +f 78/40/4 66/39/4 80/47/4 +f 67/42/2 77/47/2 69/48/2 +f 65/39/2 77/47/2 67/42/2 +f 91/53/11 92/54/11 83/19/11 +f 84/24/12 92/54/12 91/53/12 +f 101/55/13 102/56/13 96/49/13 +f 100/24/11 102/55/11 101/56/11 +f 89/53/14 90/54/14 88/19/14 +f 87/24/13 90/54/13 89/53/13 +f 103/19/12 104/50/12 99/57/12 +f 95/58/14 104/19/14 103/50/14 +f 90/39/3 102/59/3 100/60/3 +f 92/42/3 84/61/3 96/62/3 +f 90/39/3 87/63/3 99/64/3 +f 92/42/3 104/65/3 95/66/3 +f 91/42/5 82/61/5 94/62/5 +f 89/39/5 103/59/5 98/60/5 +f 89/39/5 85/63/5 97/64/5 +f 102/59/3 90/39/3 104/65/3 +f 91/42/5 101/65/5 93/66/5 +f 103/59/5 89/39/5 101/65/5 +f 115/67/11 116/68/11 107/15/11 +f 108/2/12 116/68/12 115/67/12 +f 125/69/13 126/70/13 120/3/13 +f 124/2/11 126/69/11 125/70/11 +f 113/67/14 114/68/14 112/15/14 +f 111/2/13 114/68/13 113/67/13 +f 127/15/12 128/14/12 123/71/12 +f 119/72/14 128/15/14 127/14/14 +f 114/39/3 126/59/3 124/60/3 +f 116/42/3 108/61/3 120/62/3 +f 114/39/3 111/63/3 123/64/3 +f 116/42/3 128/65/3 119/66/3 +f 115/42/5 106/61/5 118/62/5 +f 113/39/5 127/59/5 122/60/5 +f 113/39/5 109/63/5 121/64/5 +f 126/59/3 114/39/3 128/65/3 +f 115/42/5 125/65/5 117/66/5 +f 127/59/5 113/39/5 125/65/5 +f 4/26/1 26/1/1 12/3/1 +f 21/12/2 11/4/2 22/6/2 +f 25/10/3 21/7/3 26/9/3 +f 3/17/4 25/10/4 4/11/4 +f 11/18/5 3/12/5 12/13/5 +f 3/25/6 11/14/6 25/16/6 +f 10/11/2 9/17/2 18/9/2 +f 2/9/3 1/10/3 10/8/3 +f 18/13/5 17/18/5 30/6/5 +f 2/5/4 30/6/4 1/4/4 +f 17/50/6 9/19/6 29/21/6 +f 18/49/1 30/22/1 10/24/1 +f 19/7/5 20/8/5 31/10/5 +f 5/17/2 31/10/2 6/11/2 +f 5/12/3 6/6/3 13/18/3 +f 13/4/4 14/5/4 19/12/4 +f 19/49/6 31/22/6 13/24/6 +f 20/50/1 14/19/1 32/21/1 +f 7/4/2 8/5/2 27/12/2 +f 7/10/5 15/7/5 8/9/5 +f 15/17/4 23/10/4 16/11/4 +f 23/18/3 27/12/3 24/13/3 +f 28/16/1 8/25/1 24/15/1 +f 27/1/6 23/2/6 7/26/6 +f 34/15/7 43/27/7 35/16/7 +f 33/50/8 36/21/8 43/27/8 +f 45/49/9 53/29/9 48/22/9 +f 49/50/7 52/21/7 53/32/7 +f 37/49/10 41/33/10 40/22/10 +f 38/2/9 39/1/9 41/33/9 +f 50/15/8 55/35/8 51/16/8 +f 46/2/10 47/1/10 55/38/10 +f 40/73/4 42/39/4 52/41/4 +f 54/40/4 44/42/4 48/44/4 +f 56/47/4 42/39/4 51/46/4 +f 35/74/4 44/42/4 47/48/4 +f 55/40/2 43/42/2 46/44/2 +f 38/73/2 41/39/2 50/41/2 +f 53/47/2 41/39/2 49/46/2 +f 44/42/4 54/40/4 56/47/4 +f 33/74/2 43/42/2 45/48/2 +f 55/40/2 41/39/2 43/42/2 +f 58/1/7 67/34/7 59/2/7 +f 57/22/8 60/49/8 67/34/8 +f 69/21/9 77/31/9 72/50/9 +f 73/22/7 76/49/7 77/52/7 +f 61/21/10 65/28/10 64/50/10 +f 62/16/9 63/15/9 65/28/9 +f 74/1/8 79/37/8 75/2/8 +f 70/16/10 71/15/10 79/36/10 +f 64/73/4 66/39/4 76/41/4 +f 78/40/4 68/42/4 72/44/4 +f 80/47/4 66/39/4 75/46/4 +f 59/74/4 68/42/4 71/48/4 +f 79/40/2 67/42/2 70/44/2 +f 62/73/2 65/39/2 74/41/2 +f 77/47/2 65/39/2 73/46/2 +f 68/42/4 78/40/4 80/47/4 +f 57/74/2 67/42/2 69/48/2 +f 79/40/2 65/39/2 67/42/2 +f 82/50/11 91/53/11 83/19/11 +f 81/49/12 84/24/12 91/53/12 +f 93/24/13 101/55/13 96/49/13 +f 97/49/11 100/24/11 101/56/11 +f 85/50/14 89/53/14 88/19/14 +f 86/49/13 87/24/13 89/53/13 +f 98/58/12 103/19/12 99/57/12 +f 94/57/14 95/58/14 103/50/14 +f 88/75/3 90/39/3 100/60/3 +f 102/59/3 92/42/3 96/62/3 +f 104/65/3 90/39/3 99/64/3 +f 83/76/3 92/42/3 95/66/3 +f 103/59/5 91/42/5 94/62/5 +f 86/75/5 89/39/5 98/60/5 +f 101/65/5 89/39/5 97/64/5 +f 92/42/3 102/59/3 104/65/3 +f 81/76/5 91/42/5 93/66/5 +f 91/42/5 103/59/5 101/65/5 +f 106/14/11 115/67/11 107/15/11 +f 105/3/12 108/2/12 115/67/12 +f 117/2/13 125/69/13 120/3/13 +f 121/3/11 124/2/11 125/70/11 +f 109/14/14 113/67/14 112/15/14 +f 110/3/13 111/2/13 113/67/13 +f 122/72/12 127/15/12 123/71/12 +f 118/71/14 119/72/14 127/14/14 +f 112/75/3 114/39/3 124/60/3 +f 126/59/3 116/42/3 120/62/3 +f 128/65/3 114/39/3 123/64/3 +f 107/76/3 116/42/3 119/66/3 +f 127/59/5 115/42/5 118/62/5 +f 110/75/5 113/39/5 122/60/5 +f 125/65/5 113/39/5 121/64/5 +f 116/42/3 126/59/3 128/65/3 +f 105/76/5 115/42/5 117/66/5 +f 115/42/5 127/59/5 125/65/5 diff --git a/assets/hbm/textures/blocks/struct_launcher.png b/assets/hbm/textures/blocks/struct_launcher.png new file mode 100644 index 000000000..102de3fc8 Binary files /dev/null and b/assets/hbm/textures/blocks/struct_launcher.png differ diff --git a/assets/hbm/textures/blocks/struct_launcher_core.png b/assets/hbm/textures/blocks/struct_launcher_core.png new file mode 100644 index 000000000..cac4e139a Binary files /dev/null and b/assets/hbm/textures/blocks/struct_launcher_core.png differ diff --git a/assets/hbm/textures/blocks/struct_launcher_core_large.png b/assets/hbm/textures/blocks/struct_launcher_core_large.png new file mode 100644 index 000000000..e64ee06e0 Binary files /dev/null and b/assets/hbm/textures/blocks/struct_launcher_core_large.png differ diff --git a/assets/hbm/textures/blocks/struct_scaffold.png b/assets/hbm/textures/blocks/struct_scaffold.png new file mode 100644 index 000000000..abf5723f9 Binary files /dev/null and b/assets/hbm/textures/blocks/struct_scaffold.png differ diff --git a/assets/hbm/textures/gui/gui_launch_table.png b/assets/hbm/textures/gui/gui_launch_table.png index 9ffff2b0f..dd03ae32c 100644 Binary files a/assets/hbm/textures/gui/gui_launch_table.png and b/assets/hbm/textures/gui/gui_launch_table.png differ diff --git a/assets/hbm/textures/hazmat blocs1.png b/assets/hbm/textures/hazmat blocs1.png deleted file mode 100644 index 532b26dcf..000000000 Binary files a/assets/hbm/textures/hazmat blocs1.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs10.png b/assets/hbm/textures/hazmat blocs10.png deleted file mode 100644 index 7ce6f2e16..000000000 Binary files a/assets/hbm/textures/hazmat blocs10.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs11.png b/assets/hbm/textures/hazmat blocs11.png deleted file mode 100644 index 328c40f69..000000000 Binary files a/assets/hbm/textures/hazmat blocs11.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs12.png b/assets/hbm/textures/hazmat blocs12.png deleted file mode 100644 index 5c7df0d6a..000000000 Binary files a/assets/hbm/textures/hazmat blocs12.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs2.png b/assets/hbm/textures/hazmat blocs2.png deleted file mode 100644 index cfe99dbe9..000000000 Binary files a/assets/hbm/textures/hazmat blocs2.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs3.png b/assets/hbm/textures/hazmat blocs3.png deleted file mode 100644 index 1bd73cfb2..000000000 Binary files a/assets/hbm/textures/hazmat blocs3.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs4.png b/assets/hbm/textures/hazmat blocs4.png deleted file mode 100644 index 865722b99..000000000 Binary files a/assets/hbm/textures/hazmat blocs4.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs5.png b/assets/hbm/textures/hazmat blocs5.png deleted file mode 100644 index 8c910d3d9..000000000 Binary files a/assets/hbm/textures/hazmat blocs5.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs6.png b/assets/hbm/textures/hazmat blocs6.png deleted file mode 100644 index 4e7e0b7b9..000000000 Binary files a/assets/hbm/textures/hazmat blocs6.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs8.png b/assets/hbm/textures/hazmat blocs8.png deleted file mode 100644 index 60c83ee90..000000000 Binary files a/assets/hbm/textures/hazmat blocs8.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocs9.png b/assets/hbm/textures/hazmat blocs9.png deleted file mode 100644 index a87f99d56..000000000 Binary files a/assets/hbm/textures/hazmat blocs9.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsDirty1.png b/assets/hbm/textures/hazmat blocsDirty1.png deleted file mode 100644 index ce8281e0c..000000000 Binary files a/assets/hbm/textures/hazmat blocsDirty1.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsDirty2.png b/assets/hbm/textures/hazmat blocsDirty2.png deleted file mode 100644 index d13b70f5f..000000000 Binary files a/assets/hbm/textures/hazmat blocsDirty2.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsDirty3.png b/assets/hbm/textures/hazmat blocsDirty3.png deleted file mode 100644 index dfb561657..000000000 Binary files a/assets/hbm/textures/hazmat blocsDirty3.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsDirty4.png b/assets/hbm/textures/hazmat blocsDirty4.png deleted file mode 100644 index 3758a431e..000000000 Binary files a/assets/hbm/textures/hazmat blocsDirty4.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsDirty5.png b/assets/hbm/textures/hazmat blocsDirty5.png deleted file mode 100644 index 48d892ff3..000000000 Binary files a/assets/hbm/textures/hazmat blocsDirty5.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsDirty6.png b/assets/hbm/textures/hazmat blocsDirty6.png deleted file mode 100644 index dfc49992c..000000000 Binary files a/assets/hbm/textures/hazmat blocsDirty6.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsDirty7.png b/assets/hbm/textures/hazmat blocsDirty7.png deleted file mode 100644 index 439ef7d20..000000000 Binary files a/assets/hbm/textures/hazmat blocsDirty7.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsnuke1.png b/assets/hbm/textures/hazmat blocsnuke1.png deleted file mode 100644 index 919bba2a1..000000000 Binary files a/assets/hbm/textures/hazmat blocsnuke1.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat blocsnuke2.png b/assets/hbm/textures/hazmat blocsnuke2.png deleted file mode 100644 index 50398ce58..000000000 Binary files a/assets/hbm/textures/hazmat blocsnuke2.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat_custom.png b/assets/hbm/textures/hazmat_custom.png deleted file mode 100644 index c0eca10e4..000000000 Binary files a/assets/hbm/textures/hazmat_custom.png and /dev/null differ diff --git a/assets/hbm/textures/hazmat_custom2.png b/assets/hbm/textures/hazmat_custom2.png deleted file mode 100644 index 049f1bae8..000000000 Binary files a/assets/hbm/textures/hazmat_custom2.png and /dev/null differ diff --git a/assets/hbm/textures/models/launch_table.png b/assets/hbm/textures/models/launch_table.png deleted file mode 100644 index 5fdde1b7b..000000000 Binary files a/assets/hbm/textures/models/launch_table.png and /dev/null differ diff --git a/assets/hbm/textures/models/launch_table_large_pad.png b/assets/hbm/textures/models/launch_table_large_pad.png deleted file mode 100644 index 0789fde8c..000000000 Binary files a/assets/hbm/textures/models/launch_table_large_pad.png and /dev/null differ diff --git a/assets/hbm/textures/models/launch_table_large_scaffold_base.png b/assets/hbm/textures/models/launch_table_large_scaffold_base.png deleted file mode 100644 index 95c6c07ff..000000000 Binary files a/assets/hbm/textures/models/launch_table_large_scaffold_base.png and /dev/null differ diff --git a/assets/hbm/textures/models/launch_table_small_pad.png b/assets/hbm/textures/models/launch_table_small_pad.png deleted file mode 100644 index 89dd25c9e..000000000 Binary files a/assets/hbm/textures/models/launch_table_small_pad.png and /dev/null differ diff --git a/assets/hbm/textures/models/launch_table_small_scaffold_base.png b/assets/hbm/textures/models/launch_table_small_scaffold_base.png deleted file mode 100644 index fc28e8128..000000000 Binary files a/assets/hbm/textures/models/launch_table_small_scaffold_base.png and /dev/null differ diff --git a/assets/hbm/textures/models/missile_parts/launch_table.png b/assets/hbm/textures/models/missile_parts/launch_table.png new file mode 100644 index 000000000..389b8cbad Binary files /dev/null and b/assets/hbm/textures/models/missile_parts/launch_table.png differ diff --git a/assets/hbm/textures/models/missile_parts/launch_table_large_pad.png b/assets/hbm/textures/models/missile_parts/launch_table_large_pad.png new file mode 100644 index 000000000..4c5774e35 Binary files /dev/null and b/assets/hbm/textures/models/missile_parts/launch_table_large_pad.png differ diff --git a/assets/hbm/textures/models/missile_parts/launch_table_large_scaffold_base.png b/assets/hbm/textures/models/missile_parts/launch_table_large_scaffold_base.png new file mode 100644 index 000000000..53bfecb5b Binary files /dev/null and b/assets/hbm/textures/models/missile_parts/launch_table_large_scaffold_base.png differ diff --git a/assets/hbm/textures/models/launch_table_large_scaffold_connector.png b/assets/hbm/textures/models/missile_parts/launch_table_large_scaffold_connector.png similarity index 100% rename from assets/hbm/textures/models/launch_table_large_scaffold_connector.png rename to assets/hbm/textures/models/missile_parts/launch_table_large_scaffold_connector.png diff --git a/assets/hbm/textures/models/missile_parts/launch_table_small_pad.png b/assets/hbm/textures/models/missile_parts/launch_table_small_pad.png new file mode 100644 index 000000000..133fd2975 Binary files /dev/null and b/assets/hbm/textures/models/missile_parts/launch_table_small_pad.png differ diff --git a/assets/hbm/textures/models/missile_parts/launch_table_small_scaffold_base.png b/assets/hbm/textures/models/missile_parts/launch_table_small_scaffold_base.png new file mode 100644 index 000000000..891a52106 Binary files /dev/null and b/assets/hbm/textures/models/missile_parts/launch_table_small_scaffold_base.png differ diff --git a/assets/hbm/textures/models/missile_parts/launch_table_small_scaffold_connector.png b/assets/hbm/textures/models/missile_parts/launch_table_small_scaffold_connector.png new file mode 100644 index 000000000..9d4a3aa7a Binary files /dev/null and b/assets/hbm/textures/models/missile_parts/launch_table_small_scaffold_connector.png differ diff --git a/assets/hbm/textures/models/missile_parts/warheads/mp_w_10_taint.png b/assets/hbm/textures/models/missile_parts/warheads/mp_w_10_taint.png new file mode 100644 index 000000000..517fe7816 Binary files /dev/null and b/assets/hbm/textures/models/missile_parts/warheads/mp_w_10_taint.png differ diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index c9ea06ebf..382cb43d6 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -375,6 +375,11 @@ public class ModBlocks { public static Block bomb_multi_large; public static final int guiID_bomb_multi_large = 18; + public static Block struct_launcher; + public static Block struct_scaffold; + public static Block struct_launcher_core; + public static Block struct_launcher_core_large; + public static Block factory_titanium_hull; public static Block factory_titanium_furnace; public static Block factory_titanium_conductor; @@ -664,6 +669,8 @@ public class ModBlocks { public static Block dummy_block_puf6; public static Block dummy_plate_compact_launcher; public static Block dummy_port_compact_launcher; + public static Block dummy_plate_launch_table; + public static Block dummy_port_launch_table; public static Block ntm_dirt; @@ -799,7 +806,7 @@ public class ModBlocks { steel_corner = new DecoBlock(Material.rock).setBlockName("steel_corner").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_corner"); steel_roof = new DecoBlock(Material.rock).setBlockName("steel_roof").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_roof"); steel_beam = new DecoBlock(Material.rock).setBlockName("steel_beam").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_beam"); - steel_scaffold = new DecoBlock(Material.rock).setBlockName("steel_scaffold").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":steel_scaffold"); + steel_scaffold = new DecoBlock(Material.rock).setBlockName("steel_scaffold").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel"); broadcaster_pc = new PinkCloudBroadcaster(Material.rock).setBlockName("broadcaster_pc").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":broadcaster_pc"); geiger = new GeigerCounter(Material.rock).setBlockName("geiger").setCreativeTab(MainRegistry.machineTab).setHardness(15.0F).setResistance(0.25F).setBlockTextureName(RefStrings.MODID + ":geiger"); @@ -949,6 +956,11 @@ public class ModBlocks { machine_telelinker = new MachineTeleLinker(Material.iron).setBlockName("machine_telelinker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":machine_telelinker_side"); machine_keyforge = new MachineKeyForge(Material.iron).setBlockName("machine_keyforge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":machine_keyforge_side"); + struct_launcher = new BlockGeneric(Material.iron).setBlockName("struct_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher"); + struct_scaffold = new BlockGeneric(Material.iron).setBlockName("struct_scaffold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_scaffold"); + struct_launcher_core = new BlockStruct(Material.iron).setBlockName("struct_launcher_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher_core"); + struct_launcher_core_large = new BlockStruct(Material.iron).setBlockName("struct_launcher_core_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_launcher_core_large"); + factory_titanium_hull = new BlockGeneric(Material.iron).setBlockName("factory_titanium_hull").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_hull"); factory_titanium_furnace = new FactoryHatch(Material.iron).setBlockName("factory_titanium_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_furnace"); factory_titanium_conductor = new BlockReactor(Material.iron).setBlockName("factory_titanium_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_conductor"); @@ -1176,6 +1188,8 @@ public class ModBlocks { dummy_block_puf6 = new DummyBlockMachine(Material.iron, guiID_puf6_tank, machine_puf6_tank).setBlockName("dummy_block_puf6").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_plate_compact_launcher = new DummyBlockMachine(Material.iron, guiID_compact_launcher, compact_launcher).setBounds(0, 16, 0, 16, 16, 16).setBlockName("dummy_plate_compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_port_compact_launcher = new DummyBlockMachine(Material.iron, guiID_compact_launcher, compact_launcher).setBlockName("dummy_port_compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_plate_launch_table = new DummyBlockMachine(Material.iron, guiID_launch_table, launch_table).setBounds(0, 16, 0, 16, 16, 16).setBlockName("dummy_plate_launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); + dummy_port_launch_table = new DummyBlockMachine(Material.iron, guiID_launch_table, launch_table).setBlockName("dummy_port_launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); ntm_dirt = new BlockNTMDirt().setBlockName("ntm_dirt").setHardness(0.5F).setStepSound(Block.soundTypeGravel).setCreativeTab(null).setBlockTextureName("dirt"); @@ -1535,6 +1549,12 @@ public class ModBlocks { //Multiblock Helpers GameRegistry.registerBlock(marker_structure, marker_structure.getUnlocalizedName()); + //Multiblock Parts + GameRegistry.registerBlock(struct_launcher, struct_launcher.getUnlocalizedName()); + GameRegistry.registerBlock(struct_scaffold, struct_scaffold.getUnlocalizedName()); + GameRegistry.registerBlock(struct_launcher_core, struct_launcher_core.getUnlocalizedName()); + GameRegistry.registerBlock(struct_launcher_core_large, struct_launcher_core_large.getUnlocalizedName()); + //Absorbers GameRegistry.registerBlock(absorber, absorber.getUnlocalizedName()); GameRegistry.registerBlock(absorber_red, absorber_red.getUnlocalizedName()); @@ -1681,6 +1701,8 @@ public class ModBlocks { GameRegistry.registerBlock(dummy_block_puf6, dummy_block_puf6.getUnlocalizedName()); GameRegistry.registerBlock(dummy_plate_compact_launcher, dummy_plate_compact_launcher.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_compact_launcher, dummy_port_compact_launcher.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_plate_launch_table, dummy_plate_launch_table.getUnlocalizedName()); + GameRegistry.registerBlock(dummy_port_launch_table, dummy_port_launch_table.getUnlocalizedName()); //Other Technical Blocks GameRegistry.registerBlock(oil_pipe, oil_pipe.getUnlocalizedName()); diff --git a/com/hbm/blocks/generic/DecoBlock.java b/com/hbm/blocks/generic/DecoBlock.java index b075644b6..9e8ad212d 100644 --- a/com/hbm/blocks/generic/DecoBlock.java +++ b/com/hbm/blocks/generic/DecoBlock.java @@ -39,12 +39,18 @@ public class DecoBlock extends BlockContainer { if(this == ModBlocks.bomber) return new TileEntityBomber(); + if(this == ModBlocks.steel_scaffold) + return null; + return new TileEntityDecoBlock(); } @Override public int getRenderType(){ - return 334078; + if(this == ModBlocks.steel_scaffold) + return 334078; + else + return -1; } @Override diff --git a/com/hbm/blocks/machine/BlockStruct.java b/com/hbm/blocks/machine/BlockStruct.java new file mode 100644 index 000000000..bb416007d --- /dev/null +++ b/com/hbm/blocks/machine/BlockStruct.java @@ -0,0 +1,26 @@ +package com.hbm.blocks.machine; + +import com.hbm.tileentity.machine.TileEntityMultiblock; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockStruct extends BlockContainer { + + public BlockStruct(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMultiblock(); + } + + public boolean isOpaqueCube() { + + return false; + } + +} diff --git a/com/hbm/blocks/machine/MachineLaunchTable.java b/com/hbm/blocks/machine/MachineLaunchTable.java index 5430c1d61..00cfc22d1 100644 --- a/com/hbm/blocks/machine/MachineLaunchTable.java +++ b/com/hbm/blocks/machine/MachineLaunchTable.java @@ -1,6 +1,7 @@ package com.hbm.blocks.machine; import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IMultiblock; import com.hbm.main.MainRegistry; import com.hbm.tileentity.bomb.TileEntityLaunchTable; import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; @@ -12,7 +13,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class MachineLaunchTable extends BlockContainer { +public class MachineLaunchTable extends BlockContainer implements IMultiblock { public MachineLaunchTable(Material p_i45386_1_) { super(p_i45386_1_); diff --git a/com/hbm/creativetabs/MissileTab.java b/com/hbm/creativetabs/MissileTab.java index e9a05aa0d..fca384120 100644 --- a/com/hbm/creativetabs/MissileTab.java +++ b/com/hbm/creativetabs/MissileTab.java @@ -1,11 +1,17 @@ package com.hbm.creativetabs; +import java.util.List; + import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemCustomMissile; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Items; import net.minecraft.item.Item; +import net.minecraft.util.EnumChatFormatting; public class MissileTab extends CreativeTabs { @@ -23,4 +29,67 @@ public class MissileTab extends CreativeTabs { return Items.iron_pickaxe; } + + @Override + @SideOnly(Side.CLIENT) + public void displayAllReleventItems(List list) { + + super.displayAllReleventItems(list); + + list.add(ItemCustomMissile.buildMissile( + ModItems.mp_chip_3, + ModItems.mp_warhead_10_he, + ModItems.mp_fuselage_10_kerosene, + ModItems.mp_stability_10_flat, + ModItems.mp_thruster_10_kerosene).setStackDisplayName(EnumChatFormatting.DARK_PURPLE + "Lil Bub")); + + list.add(ItemCustomMissile.buildMissile( + ModItems.mp_chip_3, + ModItems.mp_warhead_10_incendiary, + ModItems.mp_fuselage_10_long_solid, + ModItems.mp_stability_10_space, + ModItems.mp_thruster_10_solid).setStackDisplayName(EnumChatFormatting.DARK_PURPLE + "Long Boy")); + + list.add(ItemCustomMissile.buildMissile( + ModItems.mp_chip_3, + ModItems.mp_warhead_10_nuclear, + ModItems.mp_fuselage_10_15_kerosene, + ModItems.mp_stability_15_flat, + ModItems.mp_thruster_15_kerosene).setStackDisplayName(EnumChatFormatting.DARK_PURPLE + "Uncle Kim")); + + list.add(ItemCustomMissile.buildMissile( + ModItems.mp_chip_3, + ModItems.mp_warhead_10_nuclear_large, + ModItems.mp_fuselage_10_15_balefire, + ModItems.mp_stability_15_flat, + ModItems.mp_thruster_15_balefire_large).setStackDisplayName(EnumChatFormatting.GREEN + "Trotty's Toy Rocket")); + + list.add(ItemCustomMissile.buildMissile( + ModItems.mp_chip_3, + ModItems.mp_warhead_15_nuclear_shark, + ModItems.mp_fuselage_15_kerosene_camo, + ModItems.mp_stability_15_thin, + ModItems.mp_thruster_15_kerosene_triple).setStackDisplayName(EnumChatFormatting.DARK_PURPLE + "Stealthy Shark")); + + list.add(ItemCustomMissile.buildMissile( + ModItems.mp_chip_3, + ModItems.mp_warhead_15_he, + ModItems.mp_fuselage_15_kerosene_polite, + ModItems.mp_stability_15_thin, + ModItems.mp_thruster_15_kerosene_dual).setStackDisplayName(EnumChatFormatting.DARK_PURPLE + "Polite Lad")); + + list.add(ItemCustomMissile.buildMissile( + ModItems.mp_chip_3, + ModItems.mp_warhead_15_n2, + ModItems.mp_fuselage_15_solid_desh, + ModItems.mp_stability_15_thin, + ModItems.mp_thruster_15_solid_hexdecuple).setStackDisplayName(EnumChatFormatting.DARK_PURPLE + "NERV's Leftover Missile")); + + list.add(ItemCustomMissile.buildMissile( + ModItems.mp_chip_5, + ModItems.mp_warhead_15_boxcar, + ModItems.mp_fuselage_15_kerosene_blackjack, + ModItems.mp_stability_15_thin, + ModItems.mp_thruster_15_kerosene).setStackDisplayName(EnumChatFormatting.RED + "Auntie Blackjack")); + } } diff --git a/com/hbm/entity/missile/EntityMissileCustom.java b/com/hbm/entity/missile/EntityMissileCustom.java index 1f194d34e..2106f95c8 100644 --- a/com/hbm/entity/missile/EntityMissileCustom.java +++ b/com/hbm/entity/missile/EntityMissileCustom.java @@ -3,17 +3,19 @@ package com.hbm.entity.missile; import java.util.ArrayList; import java.util.List; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.BlockTaint; import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.entity.logic.IChunkLoader; import com.hbm.entity.particle.EntitySmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.handler.MissileStruct; import com.hbm.items.weapon.ItemMissile; import com.hbm.items.weapon.ItemMissile.WarheadType; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.render.misc.MissileMultipart; import com.hbm.tileentity.machine.TileEntityMachineRadar; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -47,7 +49,7 @@ public class EntityMissileCustom extends Entity implements IChunkLoader { float consumption; private Ticket loaderTicket; public int health = 50; - MissileMultipart template; + MissileStruct template; public EntityMissileCustom(World p_i1582_1_) { super(p_i1582_1_); @@ -91,7 +93,7 @@ public class EntityMissileCustom extends Entity implements IChunkLoader { ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); } - public EntityMissileCustom(World world, float x, float y, float z, int a, int b, MissileMultipart template) { + public EntityMissileCustom(World world, float x, float y, float z, int a, int b, MissileStruct template) { super(world); this.ignoreFrustumCheck = true; /*this.posX = x; @@ -106,13 +108,13 @@ public class EntityMissileCustom extends Entity implements IChunkLoader { this.template = template; - this.dataWatcher.updateObject(9, Item.getIdFromItem(template.warhead.part)); - this.dataWatcher.updateObject(10, Item.getIdFromItem(template.fuselage.part)); + this.dataWatcher.updateObject(9, Item.getIdFromItem(template.warhead)); + this.dataWatcher.updateObject(10, Item.getIdFromItem(template.fuselage)); if(template.fins != null) - this.dataWatcher.updateObject(11, Item.getIdFromItem(template.fins.part)); + this.dataWatcher.updateObject(11, Item.getIdFromItem(template.fins)); else this.dataWatcher.updateObject(11, Integer.valueOf(0)); - this.dataWatcher.updateObject(12, Item.getIdFromItem(template.thruster.part)); + this.dataWatcher.updateObject(12, Item.getIdFromItem(template.thruster)); Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); accelXZ = decelY = 1/vector.lengthVector(); @@ -120,8 +122,8 @@ public class EntityMissileCustom extends Entity implements IChunkLoader { velocity = 0.0; - ItemMissile fuselage = (ItemMissile) template.fuselage.part; - ItemMissile thruster = (ItemMissile) template.thruster.part; + ItemMissile fuselage = (ItemMissile) template.fuselage; + ItemMissile thruster = (ItemMissile) template.thruster; this.fuel = (Float)fuselage.attributes[1]; this.consumption = (Float)thruster.attributes[1]; @@ -136,15 +138,15 @@ public class EntityMissileCustom extends Entity implements IChunkLoader { if(template != null) { System.out.println("yeah"); - this.dataWatcher.addObject(9, Integer.valueOf(Item.getIdFromItem(template.warhead.part))); - this.dataWatcher.addObject(10, Integer.valueOf(Item.getIdFromItem(template.fuselage.part))); + this.dataWatcher.addObject(9, Integer.valueOf(Item.getIdFromItem(template.warhead))); + this.dataWatcher.addObject(10, Integer.valueOf(Item.getIdFromItem(template.fuselage))); if(template.fins != null) - this.dataWatcher.addObject(11, Integer.valueOf(Item.getIdFromItem(template.fins.part))); + this.dataWatcher.addObject(11, Integer.valueOf(Item.getIdFromItem(template.fins))); else this.dataWatcher.addObject(11, Integer.valueOf(0)); - this.dataWatcher.addObject(12, Integer.valueOf(Item.getIdFromItem(template.thruster.part))); + this.dataWatcher.addObject(12, Integer.valueOf(Item.getIdFromItem(template.thruster))); } else { this.dataWatcher.addObject(9, Integer.valueOf(0)); this.dataWatcher.addObject(10, Integer.valueOf(0)); @@ -300,10 +302,12 @@ public class EntityMissileCustom extends Entity implements IChunkLoader { switch(type) { case HE: - ExplosionLarge.explode(worldObj, posX, posY, posZ, strength, true, true, true); + ExplosionLarge.explode(worldObj, posX, posY, posZ, strength, true, false, true); + ExplosionLarge.jolt(worldObj, posX, posY, posZ, strength, (int) (strength * 50), 0.25); break; case INC: - ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, strength, true, true, true); + ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, strength, true, false, true); + ExplosionLarge.jolt(worldObj, posX, posY, posZ, strength * 1.5, (int) (strength * 50), 0.25); break; case CLUSTER: break; @@ -329,6 +333,19 @@ public class EntityMissileCustom extends Entity implements IChunkLoader { n2.posZ = posZ; worldObj.spawnEntityInWorld(n2); break; + case TAINT: + int r = (int) strength; + for(int i = 0; i < r * 10; i++) { + int a = rand.nextInt(r) + (int)posX - (r / 2 - 1); + int b = rand.nextInt(r) + (int)posY - (r / 2 - 1); + int c = rand.nextInt(r) + (int)posZ - (r / 2 - 1); + if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) { + worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); + } + } + break; + case CLOUD: + break; default: break; diff --git a/com/hbm/handler/GUIHandler.java b/com/hbm/handler/GUIHandler.java index 03f5c8cae..d971b7a92 100644 --- a/com/hbm/handler/GUIHandler.java +++ b/com/hbm/handler/GUIHandler.java @@ -760,6 +760,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_launch_table: + { + if(entity instanceof TileEntityLaunchTable) + { + return new ContainerLaunchTable(player.inventory, (TileEntityLaunchTable) entity); + } + return null; + } } } else { //NON-TE CONTAINERS @@ -1518,6 +1527,15 @@ public class GUIHandler implements IGuiHandler { } return null; } + + case ModBlocks.guiID_launch_table: + { + if(entity instanceof TileEntityLaunchTable) + { + return new GUIMachineLaunchTable(player.inventory, (TileEntityLaunchTable) entity); + } + return null; + } } } else { //CLIENTONLY GUIS diff --git a/com/hbm/handler/MissileStruct.java b/com/hbm/handler/MissileStruct.java new file mode 100644 index 000000000..b7a4b5e52 --- /dev/null +++ b/com/hbm/handler/MissileStruct.java @@ -0,0 +1,91 @@ +package com.hbm.handler; + +import com.hbm.items.weapon.ItemMissile; +import com.hbm.items.weapon.ItemMissile.PartType; + +import io.netty.buffer.ByteBuf; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class MissileStruct { + + public ItemMissile warhead; + public ItemMissile fuselage; + public ItemMissile fins; + public ItemMissile thruster; + + public MissileStruct() { } + + public MissileStruct(ItemStack w, ItemStack f, ItemStack s, ItemStack t) { + + if(w != null && w.getItem() instanceof ItemMissile) + warhead = (ItemMissile) w.getItem(); + if(f != null && f.getItem() instanceof ItemMissile) + fuselage = (ItemMissile) f.getItem(); + if(s != null && s.getItem() instanceof ItemMissile) + fins = (ItemMissile) s.getItem(); + if(t != null && t.getItem() instanceof ItemMissile) + thruster = (ItemMissile) t.getItem(); + } + + public MissileStruct(Item w, Item f, Item s, Item t) { + + if(w instanceof ItemMissile) + warhead = (ItemMissile) w; + if(f instanceof ItemMissile) + fuselage = (ItemMissile) f; + if(s instanceof ItemMissile) + fins = (ItemMissile) s; + if(t instanceof ItemMissile) + thruster = (ItemMissile) t; + } + + public void writeToByteBuffer(ByteBuf buf) { + + + if(warhead != null && warhead.type == PartType.WARHEAD) + buf.writeInt(Item.getIdFromItem(warhead)); + else + buf.writeInt(0); + + if(fuselage != null && fuselage.type == PartType.FUSELAGE) + buf.writeInt(Item.getIdFromItem(fuselage)); + else + buf.writeInt(0); + + if(fins != null && fins.type == PartType.FINS) + buf.writeInt(Item.getIdFromItem(fins)); + else + buf.writeInt(0); + + if(thruster != null && thruster.type == PartType.THRUSTER) + buf.writeInt(Item.getIdFromItem(thruster)); + else + buf.writeInt(0); + } + + public static MissileStruct readFromByteBuffer(ByteBuf buf) { + + MissileStruct multipart = new MissileStruct(); + + int w = buf.readInt(); + int f = buf.readInt(); + int s = buf.readInt(); + int t = buf.readInt(); + + if(w != 0) + multipart.warhead = (ItemMissile) Item.getItemById(w); + + if(f != 0) + multipart.fuselage = (ItemMissile) Item.getItemById(f); + + if(s != 0) + multipart.fins = (ItemMissile) Item.getItemById(s); + + if(t != 0) + multipart.thruster = (ItemMissile) Item.getItemById(t); + + return multipart; + } + +} diff --git a/com/hbm/inventory/container/ContainerLaunchTable.java b/com/hbm/inventory/container/ContainerLaunchTable.java new file mode 100644 index 000000000..ca7e95fe9 --- /dev/null +++ b/com/hbm/inventory/container/ContainerLaunchTable.java @@ -0,0 +1,77 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.bomb.TileEntityLaunchTable; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerLaunchTable extends Container { + + private TileEntityLaunchTable nukeBoy; + + public ContainerLaunchTable(InventoryPlayer invPlayer, TileEntityLaunchTable tedf) { + + nukeBoy = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 26, 36)); + this.addSlotToContainer(new Slot(tedf, 1, 26, 72)); + this.addSlotToContainer(new Slot(tedf, 2, 116, 90)); + this.addSlotToContainer(new Slot(tedf, 3, 134, 90)); + this.addSlotToContainer(new Slot(tedf, 4, 152, 90)); + this.addSlotToContainer(new Slot(tedf, 5, 116, 108)); + + for(int i = 0; i < 3; i++) + { + for(int j = 0; j < 9; j++) + { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); + } + } + + for(int i = 0; i < 9; i++) + { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) + { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if (var4 != null && var4.getHasStack()) + { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if (par2 <= 1) { + if (!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true)) + { + return null; + } + } + else if (!this.mergeItemStack(var5, 0, 1, false)) + return null; + + if (var5.stackSize == 0) + { + var4.putStack((ItemStack) null); + } + else + { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return nukeBoy.isUseableByPlayer(player); + } +} diff --git a/com/hbm/inventory/gui/GUIMachineCompactLauncher.java b/com/hbm/inventory/gui/GUIMachineCompactLauncher.java index fef7aa6e9..39ecf7ce9 100644 --- a/com/hbm/inventory/gui/GUIMachineCompactLauncher.java +++ b/com/hbm/inventory/gui/GUIMachineCompactLauncher.java @@ -103,17 +103,17 @@ public class GUIMachineCompactLauncher extends GuiInfoContainer { missile = new MissileMultipart(); - missile = ItemCustomMissile.getMultipart(custom); + missile = MissileMultipart.loadFromStruct(ItemCustomMissile.getStruct(custom)); - GL11.glTranslatef(guiLeft + 42, guiTop + 115, 100); + GL11.glTranslatef(guiLeft + 88, guiTop + 115, 100); double size = 5 * 18; double scale = size / Math.max(missile.getHeight(), 6); - - GL11.glTranslated(missile.getHeight() / 2 * scale, 0, 0); - GL11.glScaled(scale, scale, scale); GL11.glRotatef(90, 0, 1, 0); + GL11.glTranslated(missile.getHeight() / 2D * scale, 0, 0); + GL11.glScaled(scale, scale, scale); + GL11.glScalef(-1, -1, -1); MissilePronter.prontMissile(missile, Minecraft.getMinecraft().getTextureManager()); diff --git a/com/hbm/inventory/gui/GUIMachineLaunchTable.java b/com/hbm/inventory/gui/GUIMachineLaunchTable.java new file mode 100644 index 000000000..4e9cdd76d --- /dev/null +++ b/com/hbm/inventory/gui/GUIMachineLaunchTable.java @@ -0,0 +1,165 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.container.ContainerCompactLauncher; +import com.hbm.inventory.container.ContainerLaunchTable; +import com.hbm.items.weapon.ItemCustomMissile; +import com.hbm.items.weapon.ItemMissile.PartSize; +import com.hbm.lib.RefStrings; +import com.hbm.packet.AuxButtonPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.render.misc.MissileMultipart; +import com.hbm.render.misc.MissilePronter; +import com.hbm.tileentity.bomb.TileEntityCompactLauncher; +import com.hbm.tileentity.bomb.TileEntityLaunchTable; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineLaunchTable extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_launch_table.png"); + private TileEntityLaunchTable launcher; + + public GUIMachineLaunchTable(InventoryPlayer invPlayer, TileEntityLaunchTable tedf) { + super(new ContainerLaunchTable(invPlayer, tedf)); + launcher = tedf; + + this.xSize = 176; + this.ySize = 222; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + launcher.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 88 - 52, 16, 52); + launcher.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 88 - 52, 16, 52); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 88 - 52, 16, 52, new String[] { "Solid Fuel: " + launcher.solid + "l" }); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 113, 34, 6, launcher.power, launcher.maxPower); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 7, guiTop + 98, 18, 18, new String[] { "Size 10 & 10/15" }); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 25, guiTop + 98, 18, 18, new String[] { "Size 15 & 15/20" }); + this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 43, guiTop + 98, 18, 18, new String[] { "Size 20" }); + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 7 <= x && guiLeft + 7 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, PartSize.SIZE_10.ordinal(), 0)); + } + + if(guiLeft + 25 <= x && guiLeft + 25 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, PartSize.SIZE_15.ordinal(), 0)); + } + + if(guiLeft + 43 <= x && guiLeft + 43 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, PartSize.SIZE_20.ordinal(), 0)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer( int i, int j) { + String name = this.launcher.hasCustomInventoryName() ? this.launcher.getInventoryName() : I18n.format(this.launcher.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int i = (int)launcher.getPowerScaled(34); + drawTexturedModalRect(guiLeft + 134, guiTop + 113, 176, 96, i, 6); + + int j = (int)launcher.getSolidScaled(52); + drawTexturedModalRect(guiLeft + 152, guiTop + 88 - j, 176, 96 - j, 16, j); + + if(launcher.isMissileValid()) + drawTexturedModalRect(guiLeft + 25, guiTop + 35, 176, 26, 18, 18); + + if(launcher.hasDesignator()) + drawTexturedModalRect(guiLeft + 25, guiTop + 71, 176, 26, 18, 18); + + if(launcher.liquidState() == 1) + drawTexturedModalRect(guiLeft + 121, guiTop + 23, 176, 0, 6, 8); + if(launcher.liquidState() == 0) + drawTexturedModalRect(guiLeft + 121, guiTop + 23, 182, 0, 6, 8); + + if(launcher.oxidizerState() == 1) + drawTexturedModalRect(guiLeft + 139, guiTop + 23, 176, 0, 6, 8); + if(launcher.oxidizerState() == 0) + drawTexturedModalRect(guiLeft + 139, guiTop + 23, 182, 0, 6, 8); + + if(launcher.solidState() == 1) + drawTexturedModalRect(guiLeft + 157, guiTop + 23, 176, 0, 6, 8); + if(launcher.solidState() == 0) + drawTexturedModalRect(guiLeft + 157, guiTop + 23, 182, 0, 6, 8); + + switch(launcher.padSize) { + + case SIZE_10: + drawTexturedModalRect(guiLeft + 7, guiTop + 98, 176, 8, 18, 18); + break; + case SIZE_15: + drawTexturedModalRect(guiLeft + 25, guiTop + 98, 194, 8, 18, 18); + break; + case SIZE_20: + drawTexturedModalRect(guiLeft + 43, guiTop + 98, 212, 8, 18, 18); + break; + default: + break; + + } + + Minecraft.getMinecraft().getTextureManager().bindTexture(launcher.tanks[0].getSheet()); + launcher.tanks[0].renderTank(this, guiLeft + 116, guiTop + 88, launcher.tanks[0].getTankType().textureX() * FluidTank.x, launcher.tanks[0].getTankType().textureY() * FluidTank.y, 16, 52); + + Minecraft.getMinecraft().getTextureManager().bindTexture(launcher.tanks[1].getSheet()); + launcher.tanks[1].renderTank(this, guiLeft + 134, guiTop + 88, launcher.tanks[1].getTankType().textureX() * FluidTank.x, launcher.tanks[1].getTankType().textureY() * FluidTank.y, 16, 52); + + /// DRAW MISSILE START + GL11.glPushMatrix(); + + MissileMultipart missile; + + if(launcher.isMissileValid()) { + ItemStack custom = launcher.getStackInSlot(0); + + missile = new MissileMultipart(); + + missile = MissileMultipart.loadFromStruct(ItemCustomMissile.getStruct(custom)); + + GL11.glTranslatef(guiLeft + 88, guiTop + 115, 100); + + double size = 5 * 18; + double scale = size / Math.max(missile.getHeight(), 6); + + GL11.glRotatef(90, 0, 1, 0); + GL11.glTranslated(missile.getHeight() / 2D * scale, 0, 0); + GL11.glScaled(scale, scale, scale); + + GL11.glScalef(-1, -1, -1); + + MissilePronter.prontMissile(missile, Minecraft.getMinecraft().getTextureManager()); + } + + GL11.glPopMatrix(); + /// DRAW MISSILE END + } +} diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 53ce6c13d..5633e7f08 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -900,6 +900,7 @@ public class ModItems { public static Item mp_warhead_10_buster; public static Item mp_warhead_10_nuclear; public static Item mp_warhead_10_nuclear_large; + public static Item mp_warhead_10_taint; public static Item mp_warhead_15_he; public static Item mp_warhead_15_incendiary; public static Item mp_warhead_15_nuclear; @@ -2494,11 +2495,12 @@ public class ModItems { mp_warhead_10_buster = new ItemMissile().makeWarhead(WarheadType.BUSTER, 5F, 1.5F, PartSize.SIZE_10) .setUnlocalizedName("mp_warhead_10_buster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_warhead_10_nuclear = new ItemMissile().makeWarhead(WarheadType.NUCLEAR, 35F, 1.5F, PartSize.SIZE_10) .setUnlocalizedName("mp_warhead_10_nuclear").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_warhead_10_nuclear_large = new ItemMissile().makeWarhead(WarheadType.NUCLEAR, 75F, 2.5F, PartSize.SIZE_10) .setUnlocalizedName("mp_warhead_10_nuclear_large").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); + mp_warhead_10_taint = new ItemMissile().makeWarhead(WarheadType.TAINT, 15F, 1.5F, PartSize.SIZE_10) .setUnlocalizedName("mp_warhead_10_taint").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_warhead_15_he = new ItemMissile().makeWarhead(WarheadType.HE, 50F, 2.5F, PartSize.SIZE_15) .setUnlocalizedName("mp_warhead_15_he").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_warhead_15_incendiary = new ItemMissile().makeWarhead(WarheadType.INC, 35F, 2.5F, PartSize.SIZE_15) .setUnlocalizedName("mp_warhead_15_incendiary").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_warhead_15_nuclear = new ItemMissile().makeWarhead(WarheadType.NUCLEAR, 125F, 5F, PartSize.SIZE_15) .setUnlocalizedName("mp_warhead_15_nuclear").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_warhead_15_nuclear_shark = new ItemMissile().makeWarhead(WarheadType.NUCLEAR, 125F, 5F, PartSize.SIZE_15) .setUnlocalizedName("mp_warhead_15_nuclear_shark").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); - mp_warhead_15_boxcar = new ItemMissile().makeWarhead(WarheadType.NUCLEAR, 15F, 7.5F, PartSize.SIZE_15) .setUnlocalizedName("mp_warhead_15_boxcar").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); + mp_warhead_15_boxcar = new ItemMissile().makeWarhead(WarheadType.TX, 250F, 7.5F, PartSize.SIZE_15) .setUnlocalizedName("mp_warhead_15_boxcar").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_warhead_15_n2 = new ItemMissile().makeWarhead(WarheadType.N2, 100F, 5F, PartSize.SIZE_15) .setUnlocalizedName("mp_warhead_15_n2").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_warhead_20_he = new ItemMissile().makeWarhead(WarheadType.HE, 15F, 1F, PartSize.SIZE_20) .setUnlocalizedName("mp_w_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); mp_chip_1 = new ItemMissile().makeChip(0.1F) .setUnlocalizedName("mp_c_1").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_1"); @@ -4263,6 +4265,7 @@ public class ModItems { GameRegistry.registerItem(mp_warhead_10_buster, mp_warhead_10_buster.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_10_nuclear, mp_warhead_10_nuclear.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_10_nuclear_large, mp_warhead_10_nuclear_large.getUnlocalizedName()); + GameRegistry.registerItem(mp_warhead_10_taint, mp_warhead_10_taint.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_15_he, mp_warhead_15_he.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_15_incendiary, mp_warhead_15_incendiary.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_15_nuclear, mp_warhead_15_nuclear.getUnlocalizedName()); diff --git a/com/hbm/items/weapon/ItemCustomMissile.java b/com/hbm/items/weapon/ItemCustomMissile.java index 23d4c16d7..3927aab0e 100644 --- a/com/hbm/items/weapon/ItemCustomMissile.java +++ b/com/hbm/items/weapon/ItemCustomMissile.java @@ -2,10 +2,10 @@ package com.hbm.items.weapon; import java.util.List; +import com.hbm.handler.MissileStruct; import com.hbm.items.ModItems; import com.hbm.items.weapon.ItemMissile.FuelType; import com.hbm.items.weapon.ItemMissile.WarheadType; -import com.hbm.render.misc.MissileMultipart; import com.hbm.render.misc.MissilePart; import net.minecraft.client.resources.I18n; @@ -13,9 +13,19 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; public class ItemCustomMissile extends Item { + + public static ItemStack buildMissile(Item chip, Item warhead, Item fuselage, Item stability, Item thruster) { + + if(stability == null) { + return buildMissile(new ItemStack(chip), new ItemStack(warhead), new ItemStack(fuselage), null, new ItemStack(thruster)); + } else { + return buildMissile(new ItemStack(chip), new ItemStack(warhead), new ItemStack(fuselage), new ItemStack(stability), new ItemStack(thruster)); + } + } public static ItemStack buildMissile(ItemStack chip, ItemStack warhead, ItemStack fuselage, ItemStack stability, ItemStack thruster) { @@ -53,15 +63,19 @@ public class ItemCustomMissile extends Item { ItemMissile stability = (ItemMissile) Item.getItemById(readFromNBT(stack, "stability")); ItemMissile thruster = (ItemMissile) Item.getItemById(readFromNBT(stack, "thruster")); - list.add(I18n.format(StatCollector.translateToLocal(chip.getUnlocalizedName() + ".name")).trim()); - list.add(I18n.format(StatCollector.translateToLocal(warhead.getUnlocalizedName() + ".name")).trim()); - list.add(I18n.format(StatCollector.translateToLocal(fuselage.getUnlocalizedName() + ".name")).trim()); + list.add(EnumChatFormatting.BOLD + "Warhead: " + EnumChatFormatting.GRAY + warhead.getWarhead((WarheadType)warhead.attributes[0])); + list.add(EnumChatFormatting.BOLD + "Strength: " + EnumChatFormatting.GRAY + (Float)warhead.attributes[1]); + list.add(EnumChatFormatting.BOLD + "Fuel Type: " + EnumChatFormatting.GRAY + fuselage.getFuel((FuelType)fuselage.attributes[0])); + list.add(EnumChatFormatting.BOLD + "Fuel amount: " + EnumChatFormatting.GRAY + (Float)fuselage.attributes[1] + "l"); + list.add(EnumChatFormatting.BOLD + "Chip inaccuracy: " + EnumChatFormatting.GRAY + (Float)chip.attributes[0] * 100 + "%"); if(stability != null) - list.add(I18n.format(StatCollector.translateToLocal(stability.getUnlocalizedName() + ".name")).trim()); - list.add(I18n.format(StatCollector.translateToLocal(thruster.getUnlocalizedName() + ".name")).trim()); + list.add(EnumChatFormatting.BOLD + "Fin inaccuracy: " + EnumChatFormatting.GRAY + (Float)stability.attributes[0] * 100 + "%"); + else + list.add(EnumChatFormatting.BOLD + "Fin inaccuracy: " + EnumChatFormatting.GRAY + "100%"); + list.add(EnumChatFormatting.BOLD + "Size: " + EnumChatFormatting.GRAY + fuselage.getSize(fuselage.top) + "/" + fuselage.getSize(fuselage.bottom)); } - public static MissileMultipart getMultipart(ItemStack stack) { + public static MissileStruct getStruct(ItemStack stack) { if(stack == null || !(stack.getItem() instanceof ItemCustomMissile)) return null; @@ -71,12 +85,7 @@ public class ItemCustomMissile extends Item { ItemMissile stability = (ItemMissile) Item.getItemById(readFromNBT(stack, "stability")); ItemMissile thruster = (ItemMissile) Item.getItemById(readFromNBT(stack, "thruster")); - MissileMultipart missile = new MissileMultipart(); - - missile.warhead = MissilePart.getPart(warhead); - missile.fuselage = MissilePart.getPart(fuselage); - missile.fins = MissilePart.getPart(stability); - missile.thruster = MissilePart.getPart(thruster); + MissileStruct missile = new MissileStruct(warhead, fuselage, stability, thruster); return missile; } diff --git a/com/hbm/items/weapon/ItemMissile.java b/com/hbm/items/weapon/ItemMissile.java index 7b61a5e2f..14c6d481a 100644 --- a/com/hbm/items/weapon/ItemMissile.java +++ b/com/hbm/items/weapon/ItemMissile.java @@ -153,29 +153,29 @@ public class ItemMissile extends Item { try { switch(type) { case CHIP: - list.add("Inaccuracy: " + (Float)attributes[0]); + list.add(EnumChatFormatting.BOLD + "Inaccuracy: " + EnumChatFormatting.GRAY + (Float)attributes[0] * 100 + "%"); break; case WARHEAD: - list.add("Size: " + getSize(bottom)); - list.add("Type: " + getWarhead((WarheadType)attributes[0])); - list.add("Strength: " + (Float)attributes[1]); - list.add("Weight: " + (Float)attributes[2] + "t"); + list.add(EnumChatFormatting.BOLD + "Size: " + EnumChatFormatting.GRAY + getSize(bottom)); + list.add(EnumChatFormatting.BOLD + "Type: " + EnumChatFormatting.GRAY + getWarhead((WarheadType)attributes[0])); + list.add(EnumChatFormatting.BOLD + "Strength: " + EnumChatFormatting.GRAY + (Float)attributes[1]); + list.add(EnumChatFormatting.BOLD + "Weight: " + EnumChatFormatting.GRAY + (Float)attributes[2] + "t"); break; case FUSELAGE: - list.add("Top size: " + getSize(top)); - list.add("Bottom size: " + getSize(bottom)); - list.add("Fuel type: " + getFuel((FuelType)attributes[0])); - list.add("Fuel amount: " + (Float)attributes[1] + "l"); + list.add(EnumChatFormatting.BOLD + "Top size: " + EnumChatFormatting.GRAY + getSize(top)); + list.add(EnumChatFormatting.BOLD + "Bottom size: " + EnumChatFormatting.GRAY + getSize(bottom)); + list.add(EnumChatFormatting.BOLD + "Fuel type: " + EnumChatFormatting.GRAY + getFuel((FuelType)attributes[0])); + list.add(EnumChatFormatting.BOLD + "Fuel amount: " + EnumChatFormatting.GRAY + (Float)attributes[1] + "l"); break; case FINS: - list.add("Size: " + getSize(top)); - list.add("Inaccuracy: " + (Float)attributes[0]); + list.add(EnumChatFormatting.BOLD + "Size: " + EnumChatFormatting.GRAY + getSize(top)); + list.add(EnumChatFormatting.BOLD + "Inaccuracy: " + EnumChatFormatting.GRAY + (Float)attributes[0] * 100 + "%"); break; case THRUSTER: - list.add("Size: " + getSize(top)); - list.add("Fuel type: " + getFuel((FuelType)attributes[0])); - list.add("Fuel consumption: " + (Float)attributes[1] + "l/tick"); - list.add("Max. payload: " + (Float)attributes[2] + "t"); + list.add(EnumChatFormatting.BOLD + "Size: " + EnumChatFormatting.GRAY + getSize(top)); + list.add(EnumChatFormatting.BOLD + "Fuel type: " + EnumChatFormatting.GRAY + getFuel((FuelType)attributes[0])); + list.add(EnumChatFormatting.BOLD + "Fuel consumption: " + EnumChatFormatting.GRAY + (Float)attributes[1] + "l/tick"); + list.add(EnumChatFormatting.BOLD + "Max. payload: " + EnumChatFormatting.GRAY + (Float)attributes[2] + "t"); break; } } catch(Exception ex) { @@ -183,7 +183,7 @@ public class ItemMissile extends Item { } } - private String getSize(PartSize size) { + public String getSize(PartSize size) { switch(size) { case ANY: @@ -199,51 +199,51 @@ public class ItemMissile extends Item { } } - private String getWarhead(WarheadType type) { + public String getWarhead(WarheadType type) { switch(type) { case HE: - return "HE"; + return EnumChatFormatting.YELLOW + "HE"; case INC: - return "Incendiary"; + return EnumChatFormatting.GOLD + "Incendiary"; case CLUSTER: - return "Cluster"; + return EnumChatFormatting.GRAY + "Cluster"; case BUSTER: - return "Bunker Buster"; + return EnumChatFormatting.WHITE + "Bunker Buster"; case NUCLEAR: - return "Nuclear"; + return EnumChatFormatting.DARK_GREEN + "Nuclear"; case TX: - return "Thermonuclear"; + return EnumChatFormatting.DARK_PURPLE + "Thermonuclear (TX)"; case N2: - return "N²"; + return EnumChatFormatting.RED + "N²"; case BALEFIRE: - return "BF"; + return EnumChatFormatting.GREEN + "BF"; case SCHRAB: - return "Schrabidium"; + return EnumChatFormatting.AQUA + "Schrabidium"; case TAINT: - return "Taint"; + return EnumChatFormatting.DARK_PURPLE + "Taint"; case CLOUD: - return "Cloud"; + return EnumChatFormatting.LIGHT_PURPLE + "Cloud"; default: - return "N/A"; + return EnumChatFormatting.BOLD + "N/A"; } } - private String getFuel(FuelType type) { + public String getFuel(FuelType type) { switch(type) { case KEROSENE: - return "Kerosene"; + return EnumChatFormatting.LIGHT_PURPLE + "Kerosene / Peroxide"; case SOLID: - return "Solid Fuel"; + return EnumChatFormatting.GOLD + "Solid Fuel"; case HYDROGEN: - return "Hydrogen"; + return EnumChatFormatting.DARK_AQUA + "Hydrogen / Oxygen"; case XENON: - return "Xenon Gas"; + return EnumChatFormatting.DARK_PURPLE + "Xenon Gas"; case BALEFIRE: - return "BF Inferno Fuel"; + return EnumChatFormatting.GREEN + "BF Inferno Fuel / Peroxide"; default: - return "N/A"; + return EnumChatFormatting.BOLD + "N/A"; } } diff --git a/com/hbm/lib/Library.java b/com/hbm/lib/Library.java index 6fe597bed..417006ca9 100644 --- a/com/hbm/lib/Library.java +++ b/com/hbm/lib/Library.java @@ -426,7 +426,8 @@ public class Library { world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_emitter || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_base || world.getBlock(x, y, z) == ModBlocks.dummy_port_radgen || - world.getBlock(x, y, z) == ModBlocks.dummy_port_compact_launcher) + world.getBlock(x, y, z) == ModBlocks.dummy_port_compact_launcher || + world.getBlock(x, y, z) == ModBlocks.dummy_port_launch_table) { return true; } @@ -456,7 +457,8 @@ public class Library { world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_emitter || world.getBlock(x, y, z) == ModBlocks.dummy_port_ams_base || world.getBlock(x, y, z) == ModBlocks.dummy_port_reactor_small || - world.getBlock(x, y, z) == ModBlocks.dummy_port_compact_launcher) + world.getBlock(x, y, z) == ModBlocks.dummy_port_compact_launcher || + world.getBlock(x, y, z) == ModBlocks.dummy_port_launch_table) { return true; } @@ -911,8 +913,8 @@ public class Library { { tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); } - //Compact Launcher - if(block == ModBlocks.dummy_port_compact_launcher) + //Launchers + if(block == ModBlocks.dummy_port_compact_launcher || block == ModBlocks.dummy_port_launch_table) { tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); } @@ -1138,8 +1140,8 @@ public class Library { { tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); } - //Compact Launcher - if(block == ModBlocks.dummy_port_compact_launcher) + //Launchers + if(block == ModBlocks.dummy_port_compact_launcher || block == ModBlocks.dummy_port_launch_table) { tileentity = worldObj.getTileEntity(((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetX, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetY, ((TileEntityDummy)worldObj.getTileEntity(x, y, z)).targetZ); } diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index 913426f32..737d1ac42 100644 --- a/com/hbm/lib/RefStrings.java +++ b/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (3111)"; + public static final String VERSION = "1.0.27 BETA (3147B)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 1befe5ff4..986c862c8 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -327,6 +327,7 @@ public class ClientProxy extends ServerProxy ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylonRedWire.class, new RenderPylon()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityStructureMarker.class, new RenderStructureMaker()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMultiblock.class, new RenderMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAMSBase.class, new RenderAMSBase()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAMSEmitter.class, new RenderAMSEmitter()); @@ -401,7 +402,7 @@ public class ClientProxy extends ServerProxy MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_corner), new ItemRenderDecoBlock()); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_roof), new ItemRenderDecoBlock()); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_beam), new ItemRenderDecoBlock()); - MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_scaffold), new ItemRenderDecoBlock()); + //MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.steel_scaffold), new ItemRenderDecoBlock()); RenderingRegistry.registerEntityRenderingHandler(EntityNuclearCreeper.class, new RenderNuclearCreeper()); RenderingRegistry.registerEntityRenderingHandler(EntityTaintedCreeper.class, new RenderTaintedCreeper()); @@ -442,6 +443,8 @@ public class ClientProxy extends ServerProxy @Override public void registerMissileItems() { + MissilePart.registerAllParts(); + Iterator it = MissilePart.parts.entrySet().iterator(); while (it.hasNext()) { diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index c1aed73c5..99aa7720c 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -1561,6 +1561,11 @@ public class CraftingManager { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.bobmazon_machines), new Object[] { Items.book, Items.gold_nugget, new ItemStack(Items.dye, 1, 1) }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.bobmazon_weapons), new Object[] { Items.book, Items.gold_nugget, new ItemStack(Items.dye, 1, 8) }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.bobmazon_tools), new Object[] { Items.book, Items.gold_nugget, new ItemStack(Items.dye, 1, 2) }); + + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.machine_missile_assembly, 1), new Object[] { "PWP", "SSS", "CCC", 'P', ModItems.pedestal_steel, 'W', ModItems.wrench, 'S', "plateSteel", 'C', ModBlocks.steel_scaffold })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.struct_launcher, 1), new Object[] { "PPP", "SDS", "CCC", 'P', "plateSteel", 'S', ModBlocks.steel_scaffold, 'D', ModItems.pipes_steel, 'C', ModBlocks.concrete_smooth })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.struct_launcher, 1), new Object[] { "PPP", "SDS", "CCC", 'P', "plateSteel", 'S', ModBlocks.steel_scaffold, 'D', ModItems.pipes_steel, 'C', ModBlocks.concrete })); + GameRegistry.addRecipe(new ItemStack(ModBlocks.struct_scaffold, 1), new Object[] { "SSS", "DCD", "SSS", 'S', ModBlocks.steel_scaffold, 'D', ModBlocks.fluid_duct, 'C', ModBlocks.red_cable }); } public static void AddSmeltingRec() diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index dc06fc52c..88d8354af 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -529,6 +529,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityMachineMissileAssembly.class, "tileentity_missile_assembly"); GameRegistry.registerTileEntity(TileEntityLaunchTable.class, "tileentity_large_launch_table"); GameRegistry.registerTileEntity(TileEntityCompactLauncher.class, "tileentity_small_launcher"); + GameRegistry.registerTileEntity(TileEntityMultiblock.class, "tileentity_multi_core"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -1472,8 +1473,6 @@ public class MainRegistry TileEntityMachineReactorLarge.registerWasteEntry(12, ReactorFuelType.THORIUM, ModItems.rod_dual_empty, ModItems.rod_dual_thorium_fuel_depleted); TileEntityMachineReactorLarge.registerWasteEntry(24, ReactorFuelType.THORIUM, ModItems.rod_quad_empty, ModItems.rod_quad_thorium_fuel_depleted); - MissilePart.registerAllParts(); - proxy.registerMissileItems(); } diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index f7ec126ee..7dd05db9b 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -321,6 +321,15 @@ public class ResourceManager { public static final IModelCustom missile_assembly = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_assembly.obj")); public static final IModelCustom strut = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/strut.obj")); public static final IModelCustom compact_launcher = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/compact_launcher.obj")); + public static final IModelCustom launch_table_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_base.obj")); + public static final IModelCustom launch_table_large_pad = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_large_pad.obj")); + public static final IModelCustom launch_table_small_pad = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_small_pad.obj")); + public static final IModelCustom launch_table_large_scaffold_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_large_scaffold_base.obj")); + public static final IModelCustom launch_table_large_scaffold_connector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_large_scaffold_connector.obj")); + public static final IModelCustom launch_table_large_scaffold_empty = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_large_scaffold_empty.obj")); + public static final IModelCustom launch_table_small_scaffold_base = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_small_scaffold_base.obj")); + public static final IModelCustom launch_table_small_scaffold_connector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_small_scaffold_connector.obj")); + public static final IModelCustom launch_table_small_scaffold_empty = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/launch_table/launch_table_small_scaffold_empty.obj")); public static final IModelCustom mp_t_10_kerosene = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_10_kerosene.obj")); public static final IModelCustom mp_t_10_solid = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_10_solid.obj")); @@ -354,6 +363,7 @@ public class ResourceManager { public static final IModelCustom mp_w_10_buster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_buster.obj")); public static final IModelCustom mp_w_10_nuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_nuclear.obj")); public static final IModelCustom mp_w_10_nuclear_large = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_nuclear_large.obj")); + public static final IModelCustom mp_w_10_taint = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_taint.obj")); public static final IModelCustom mp_w_15_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_15_he.obj")); public static final IModelCustom mp_w_15_incendiary = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_15_incendiary.obj")); public static final IModelCustom mp_w_15_nuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_15_nuclear.obj")); @@ -426,6 +436,13 @@ public class ResourceManager { public static final ResourceLocation missile_assembly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_assembly.png"); public static final ResourceLocation strut_tex = new ResourceLocation(RefStrings.MODID, "textures/models/strut.png"); public static final ResourceLocation compact_launcher_tex = new ResourceLocation(RefStrings.MODID, "textures/models/compact_launcher.png"); + public static final ResourceLocation launch_table_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table.png"); + public static final ResourceLocation launch_table_large_pad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_large_pad.png"); + public static final ResourceLocation launch_table_small_pad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_small_pad.png"); + public static final ResourceLocation launch_table_large_scaffold_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_large_scaffold_base.png"); + public static final ResourceLocation launch_table_large_scaffold_connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_large_scaffold_connector.png"); + public static final ResourceLocation launch_table_small_scaffold_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_small_scaffold_base.png"); + public static final ResourceLocation launch_table_small_scaffold_connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/launch_table_small_scaffold_connector.png"); public static final ResourceLocation mp_t_10_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_10_kerosene.png"); public static final ResourceLocation mp_t_10_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/thrusters/mp_t_10_solid.png"); @@ -497,9 +514,14 @@ public class ResourceManager { public static final ResourceLocation mp_w_10_buster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_10_buster.png"); public static final ResourceLocation mp_w_10_nuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_10_nuclear.png"); public static final ResourceLocation mp_w_10_nuclear_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_10_nuclear_large.png"); + public static final ResourceLocation mp_w_10_taint_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_10_taint.png"); public static final ResourceLocation mp_w_15_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_15_he.png"); public static final ResourceLocation mp_w_15_incendiary_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_15_incendiary.png"); public static final ResourceLocation mp_w_15_nuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_15_nuclear.png"); public static final ResourceLocation mp_w_15_nuclear_shark_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_15_nuclear_shark.png"); public static final ResourceLocation mp_w_15_n2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/warheads/mp_w_15_n2.png"); + + //ISBRHs + public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/scaffold.obj")); + } diff --git a/com/hbm/packet/AuxButtonPacket.java b/com/hbm/packet/AuxButtonPacket.java index c23122c55..04e2e8955 100644 --- a/com/hbm/packet/AuxButtonPacket.java +++ b/com/hbm/packet/AuxButtonPacket.java @@ -2,8 +2,10 @@ package com.hbm.packet; import com.hbm.explosion.ExplosionLarge; import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.saveddata.SatelliteSaveStructure; import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.tileentity.bomb.TileEntityLaunchTable; import com.hbm.tileentity.bomb.TileEntityTurretCIWS; import com.hbm.tileentity.bomb.TileEntityTurretCheapo; import com.hbm.tileentity.machine.TileEntityAMSBase; @@ -211,6 +213,12 @@ public class AuxButtonPacket implements IMessage { assembly.construct(); } + if (te instanceof TileEntityLaunchTable) { + TileEntityLaunchTable launcher = (TileEntityLaunchTable)te; + + launcher.padSize = PartSize.values()[m.value]; + } + //} catch (Exception x) { } return null; diff --git a/com/hbm/packet/AuxGaugePacket.java b/com/hbm/packet/AuxGaugePacket.java index da92634c4..aaf2d6692 100644 --- a/com/hbm/packet/AuxGaugePacket.java +++ b/com/hbm/packet/AuxGaugePacket.java @@ -2,7 +2,9 @@ package com.hbm.packet; import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.ISource; +import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.tileentity.bomb.TileEntityCompactLauncher; +import com.hbm.tileentity.bomb.TileEntityLaunchTable; import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.bomb.TileEntityNukeN45; import com.hbm.tileentity.bomb.TileEntityTurretCIWS; @@ -242,6 +244,14 @@ public class AuxGaugePacket implements IMessage { launcher.solid = m.value; } + if (te instanceof TileEntityLaunchTable) { + TileEntityLaunchTable launcher = (TileEntityLaunchTable)te; + + if(m.id == 0) + launcher.solid = m.value; + if(m.id == 1) + launcher.padSize = PartSize.values()[m.value]; + } } catch (Exception x) {} return null; diff --git a/com/hbm/packet/TEMissileMultipartPacket.java b/com/hbm/packet/TEMissileMultipartPacket.java index 67920cbdf..e4106dc2d 100644 --- a/com/hbm/packet/TEMissileMultipartPacket.java +++ b/com/hbm/packet/TEMissileMultipartPacket.java @@ -1,8 +1,9 @@ package com.hbm.packet; +import com.hbm.handler.MissileStruct; import com.hbm.main.MainRegistry; -import com.hbm.render.misc.MissileMultipart; import com.hbm.tileentity.bomb.TileEntityCompactLauncher; +import com.hbm.tileentity.bomb.TileEntityLaunchTable; import com.hbm.tileentity.conductor.TileEntityFluidDuct; import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; @@ -18,14 +19,14 @@ public class TEMissileMultipartPacket implements IMessage { int x; int y; int z; - MissileMultipart missile; + MissileStruct missile; public TEMissileMultipartPacket() { } - public TEMissileMultipartPacket(int x, int y, int z, MissileMultipart missile) + public TEMissileMultipartPacket(int x, int y, int z, MissileStruct missile) { this.x = x; this.y = y; @@ -38,7 +39,7 @@ public class TEMissileMultipartPacket implements IMessage { x = buf.readInt(); y = buf.readInt(); z = buf.readInt(); - missile = MissileMultipart.readFromByteBuffer(buf); + missile = MissileStruct.readFromByteBuffer(buf); } @Override @@ -62,6 +63,12 @@ public class TEMissileMultipartPacket implements IMessage { launcher.load = m.missile; } + if (te != null && te instanceof TileEntityLaunchTable) { + + TileEntityLaunchTable launcher = (TileEntityLaunchTable) te; + launcher.load = m.missile; + } + if (te != null && te instanceof TileEntityMachineMissileAssembly) { TileEntityMachineMissileAssembly rack = (TileEntityMachineMissileAssembly) te; diff --git a/com/hbm/render/block/ObjUtil.java b/com/hbm/render/block/ObjUtil.java new file mode 100644 index 000000000..e2dd745c4 --- /dev/null +++ b/com/hbm/render/block/ObjUtil.java @@ -0,0 +1,49 @@ +package com.hbm.render.block; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.util.Vec3; +import net.minecraftforge.client.model.obj.Face; +import net.minecraftforge.client.model.obj.GroupObject; +import net.minecraftforge.client.model.obj.TextureCoordinate; +import net.minecraftforge.client.model.obj.Vertex; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class ObjUtil { + + public static void renderWithIcon(WavefrontObject model, IIcon icon, Tessellator tes, float rot, boolean shadow) + { + for(GroupObject go : model.groupObjects) + { + for(Face f : go.faces) { + + Vertex n = f.faceNormal; + tes.setNormal(n.x, n.y, n.z); + + if(shadow) { + float brightness = (n.y + 1) * 0.65F; + tes.setColorOpaque_F(brightness, brightness, brightness); + } + + for(int i = 0; i < f.vertices.length; i++) { + + Vertex v = f.vertices[i]; + + Vec3 vec = Vec3.createVectorHelper(v.x, v.y, v.z); + vec.rotateAroundY(rot); + + float x = (float)vec.xCoord; + float y = (float)vec.yCoord; + float z = (float)vec.zCoord; + + TextureCoordinate t = f.textureCoordinates[i]; + tes.addVertexWithUV(x, y, z, icon.getInterpolatedU(t.u * 16), icon.getInterpolatedV(t.v * 16)); + + //The shoddy way of rendering a tringulated model with a quad tessellator + if(i % 3 == 2) + tes.addVertexWithUV(x, y, z, icon.getInterpolatedU(t.u * 16), icon.getInterpolatedV(t.v * 16)); + } + } + } + } +} diff --git a/com/hbm/render/block/RenderRoofBlock.java b/com/hbm/render/block/RenderRoofBlock.java index 31a4e5e41..f2b787286 100644 --- a/com/hbm/render/block/RenderRoofBlock.java +++ b/com/hbm/render/block/RenderRoofBlock.java @@ -3,6 +3,7 @@ package com.hbm.render.block; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelSteelRoof; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; @@ -13,11 +14,30 @@ import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; public class RenderRoofBlock implements ISimpleBlockRenderingHandler { @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { } + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + if (renderer.hasOverrideBlockTexture()) + { + iicon = renderer.overrideBlockTexture; + } + + GL11.glTranslated(0, -0.5, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.scaffold, iicon, tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { @@ -36,12 +56,32 @@ public class RenderRoofBlock implements ISimpleBlockRenderingHandler { Tessellator.instance.startDrawing(0);*/ + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, world.getBlockMetadata(x, y, z)); + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + if (renderer.hasOverrideBlockTexture()) + { + iicon = renderer.overrideBlockTexture; + } + + float rotation = (float) -Math.PI; + + if(world.getBlockMetadata(x, y, z) < 4) + rotation = -90F / 180F * (float)Math.PI; + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.scaffold, iicon, tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + return true; } @Override public boolean shouldRender3DInInventory(int modelId) { - return false; + return true; } @Override diff --git a/com/hbm/render/item/ItemRenderMissile.java b/com/hbm/render/item/ItemRenderMissile.java index 76830c2c4..9b6607020 100644 --- a/com/hbm/render/item/ItemRenderMissile.java +++ b/com/hbm/render/item/ItemRenderMissile.java @@ -38,9 +38,7 @@ public class ItemRenderMissile implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - MissileMultipart missile = new MissileMultipart(); - - missile = ItemCustomMissile.getMultipart(item); + MissileMultipart missile = MissileMultipart.loadFromStruct(ItemCustomMissile.getStruct(item)); GL11.glPushMatrix(); diff --git a/com/hbm/render/misc/MissileMultipart.java b/com/hbm/render/misc/MissileMultipart.java index 156f55c17..63828d7d7 100644 --- a/com/hbm/render/misc/MissileMultipart.java +++ b/com/hbm/render/misc/MissileMultipart.java @@ -1,10 +1,14 @@ package com.hbm.render.misc; +import com.hbm.handler.MissileStruct; import com.hbm.items.weapon.ItemMissile.PartType; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.item.Item; +@SideOnly(Side.CLIENT) public class MissileMultipart { public MissilePart warhead; @@ -26,7 +30,22 @@ public class MissileMultipart { return height; } - public void writeToByteBuffer(ByteBuf buf) { + public static MissileMultipart loadFromStruct(MissileStruct struct) { + + if(struct == null) + return null; + + MissileMultipart multipart = new MissileMultipart(); + + multipart.warhead = MissilePart.getPart(struct.warhead); + multipart.fuselage = MissilePart.getPart(struct.fuselage); + multipart.fins = MissilePart.getPart(struct.fins); + multipart.thruster = MissilePart.getPart(struct.thruster); + + return multipart; + } + + /*public void writeToByteBuffer(ByteBuf buf) { if(warhead != null && warhead.type == PartType.WARHEAD) @@ -72,5 +91,5 @@ public class MissileMultipart { multipart.thruster = MissilePart.getPart(Item.getItemById(t)); return multipart; - } + }*/ } diff --git a/com/hbm/render/misc/MissilePart.java b/com/hbm/render/misc/MissilePart.java index d227ccf82..5c3bef639 100644 --- a/com/hbm/render/misc/MissilePart.java +++ b/com/hbm/render/misc/MissilePart.java @@ -123,6 +123,7 @@ public class MissilePart { MissilePart.registerPart(ModItems.mp_warhead_10_buster, PartType.WARHEAD, 0.5, 1, ResourceManager.mp_w_10_buster, ResourceManager.mp_w_10_buster_tex); MissilePart.registerPart(ModItems.mp_warhead_10_nuclear, PartType.WARHEAD, 2, 1.5, ResourceManager.mp_w_10_nuclear, ResourceManager.mp_w_10_nuclear_tex); MissilePart.registerPart(ModItems.mp_warhead_10_nuclear_large, PartType.WARHEAD, 2.5, 1.5, ResourceManager.mp_w_10_nuclear_large, ResourceManager.mp_w_10_nuclear_large_tex); + MissilePart.registerPart(ModItems.mp_warhead_10_taint, PartType.WARHEAD, 2.25, 1.5, ResourceManager.mp_w_10_taint, ResourceManager.mp_w_10_taint_tex); // MissilePart.registerPart(ModItems.mp_warhead_15_he, PartType.WARHEAD, 2, 1.5, ResourceManager.mp_w_15_he, ResourceManager.mp_w_15_he_tex); MissilePart.registerPart(ModItems.mp_warhead_15_incendiary, PartType.WARHEAD, 2, 1.5, ResourceManager.mp_w_15_incendiary, ResourceManager.mp_w_15_incendiary_tex); diff --git a/com/hbm/render/tileentity/RenderCompactLauncher.java b/com/hbm/render/tileentity/RenderCompactLauncher.java index e5bd76f53..78b683b7d 100644 --- a/com/hbm/render/tileentity/RenderCompactLauncher.java +++ b/com/hbm/render/tileentity/RenderCompactLauncher.java @@ -44,7 +44,7 @@ public class RenderCompactLauncher extends TileEntitySpecialRenderer { //missile = ItemCustomMissile.getMultipart(custom); - MissilePronter.prontMissile(launcher.load, Minecraft.getMinecraft().getTextureManager()); + MissilePronter.prontMissile(MissileMultipart.loadFromStruct(launcher.load), Minecraft.getMinecraft().getTextureManager()); // } diff --git a/com/hbm/render/tileentity/RenderLaunchTable.java b/com/hbm/render/tileentity/RenderLaunchTable.java index 6d08ac881..aefa844f4 100644 --- a/com/hbm/render/tileentity/RenderLaunchTable.java +++ b/com/hbm/render/tileentity/RenderLaunchTable.java @@ -2,12 +2,21 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; +import com.hbm.items.weapon.ItemMissile; +import com.hbm.items.weapon.ItemMissile.PartSize; import com.hbm.main.ResourceManager; import com.hbm.render.misc.ErrorPronter; +import com.hbm.render.misc.MissileMultipart; +import com.hbm.render.misc.MissilePronter; import com.hbm.render.misc.SoyuzPronter; +import com.hbm.tileentity.bomb.TileEntityCompactLauncher; +import com.hbm.tileentity.bomb.TileEntityLaunchTable; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModelCustom; public class RenderLaunchTable extends TileEntitySpecialRenderer { @@ -17,8 +26,93 @@ public class RenderLaunchTable extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslatef((float) x + 0.5F, (float) y, (float) z + 0.5F); + GL11.glEnable(GL11.GL_CULL_FACE); - SoyuzPronter.prontSoyuz(); + switch(tileentity.getBlockMetadata()) + { + case 2: + GL11.glRotatef(0, 0F, 1F, 0F); break; + case 0: + GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 1: + GL11.glRotatef(270, 0F, 1F, 0F); break; + } + + TileEntityLaunchTable launcher = (TileEntityLaunchTable)tileentity; + + bindTexture(ResourceManager.launch_table_base_tex); + ResourceManager.launch_table_base.renderAll(); + + if(launcher.padSize == PartSize.SIZE_10 || launcher.padSize == PartSize.SIZE_15) { + bindTexture(ResourceManager.launch_table_small_pad_tex); + ResourceManager.launch_table_small_pad.renderAll(); + } + if(launcher.padSize == PartSize.SIZE_20) { + bindTexture(ResourceManager.launch_table_large_pad_tex); + ResourceManager.launch_table_large_pad.renderAll(); + } + + GL11.glPushMatrix(); + + if(launcher.load != null) { + MissileMultipart mp = MissileMultipart.loadFromStruct(launcher.load); + + if(mp != null && mp.fuselage != null) + launcher.height = (int) mp.getHeight(); + } + + int height = (int) (launcher.height * 0.75); + ResourceLocation base = ResourceManager.launch_table_large_scaffold_base_tex; + ResourceLocation connector = ResourceManager.launch_table_large_scaffold_connector_tex; + IModelCustom baseM = ResourceManager.launch_table_large_scaffold_base; + IModelCustom connectorM = ResourceManager.launch_table_large_scaffold_connector; + IModelCustom emptyM = ResourceManager.launch_table_large_scaffold_empty; + + + if(launcher.padSize == PartSize.SIZE_10) { + base = ResourceManager.launch_table_small_scaffold_base_tex; + connector = ResourceManager.launch_table_small_scaffold_connector_tex; + baseM = ResourceManager.launch_table_small_scaffold_base; + connectorM = ResourceManager.launch_table_small_scaffold_connector; + emptyM = ResourceManager.launch_table_small_scaffold_empty; + GL11.glTranslatef(0F, 0F, -1F); + } + GL11.glTranslatef(0F, 1F, 3.5F); + for(int i = 0; i < launcher.height + 1; i++) { + + if(i < height) { + bindTexture(base); + baseM.renderAll(); + } else if(i > height) { + bindTexture(base); + emptyM.renderAll(); + } else { + + if(launcher.load != null && launcher.load.fuselage != null && ((ItemMissile)launcher.load.fuselage).top == launcher.padSize) { + bindTexture(connector); + connectorM.renderAll(); + } else { + bindTexture(base); + baseM.renderAll(); + } + } + + GL11.glTranslatef(0F, 1F, 0F); + } + GL11.glPopMatrix(); + + GL11.glTranslatef(0F, 2.0625F, 0F); + + /// DRAW MISSILE START + GL11.glPushMatrix(); + + if(launcher.load != null && launcher.load.fuselage != null && launcher.load.fuselage.top == launcher.padSize) + MissilePronter.prontMissile(MissileMultipart.loadFromStruct(launcher.load), Minecraft.getMinecraft().getTextureManager()); + + GL11.glPopMatrix(); + /// DRAW MISSILE END GL11.glPopMatrix(); } diff --git a/com/hbm/render/tileentity/RenderMissileAssembly.java b/com/hbm/render/tileentity/RenderMissileAssembly.java index a99db0b3d..0b8eaf3ff 100644 --- a/com/hbm/render/tileentity/RenderMissileAssembly.java +++ b/com/hbm/render/tileentity/RenderMissileAssembly.java @@ -46,7 +46,7 @@ public class RenderMissileAssembly extends TileEntitySpecialRenderer { bindTexture(ResourceManager.missile_assembly_tex); ResourceManager.missile_assembly.renderAll(); - MissileMultipart missile = te.load; + MissileMultipart missile = MissileMultipart.loadFromStruct(te.load); if(missile != null) { diff --git a/com/hbm/render/tileentity/RenderMultiblock.java b/com/hbm/render/tileentity/RenderMultiblock.java new file mode 100644 index 000000000..165232cb7 --- /dev/null +++ b/com/hbm/render/tileentity/RenderMultiblock.java @@ -0,0 +1,152 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; + +public class RenderMultiblock extends TileEntitySpecialRenderer { + + float pixel = 1F/16F; + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + + GL11.glTranslatef((float)x + 1, (float)y + 1, (float)z); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); + GL11.glDisable(GL11.GL_ALPHA_TEST); + + Block b = te.getBlockType(); + + if(b == ModBlocks.struct_launcher_core) + renderCompactLauncher(); + + if(b == ModBlocks.struct_launcher_core_large) + renderLaunchTable(); + + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + + GL11.glPopMatrix(); + } + + private void renderCompactLauncher() { + + RenderBlocks rb = RenderBlocks.getInstance(); + + IIcon icon = rb.getBlockIconFromSide(ModBlocks.struct_launcher, 1); + + ResourceLocation loc = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + icon.getIconName().substring(4, icon.getIconName().length()) + ".png"); + + for(int i = -1; i <= 1; i++) + for(int j = -1; j <= 1; j++) + if(i != 0 || j != 0) + renderSmolBlockAt(loc, i, 0, j); + } + + private void renderLaunchTable() { + + RenderBlocks rb = RenderBlocks.getInstance(); + + IIcon icon = rb.getBlockIconFromSide(ModBlocks.struct_launcher, 1); + ResourceLocation loc = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + icon.getIconName().substring(4, icon.getIconName().length()) + ".png"); + + for(int i = -4; i <= 4; i++) + for(int j = -4; j <= 4; j++) + if(i != 0 || j != 0) + renderSmolBlockAt(loc, i, 0, j); + + icon = rb.getBlockIconFromSide(ModBlocks.struct_scaffold, 1); + loc = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + icon.getIconName().substring(4, icon.getIconName().length()) + ".png"); + + switch((int)(System.currentTimeMillis() % 4000 / 1000)) { + case 0: + for(int k = 1; k < 12; k++) + renderSmolBlockAt(loc, 3, k, 0); + break; + + case 1: + for(int k = 1; k < 12; k++) + renderSmolBlockAt(loc, 0, k, 3); + break; + + case 2: + for(int k = 1; k < 12; k++) + renderSmolBlockAt(loc, -3, k, 0); + break; + + case 3: + for(int k = 1; k < 12; k++) + renderSmolBlockAt(loc, 0, k, -3); + break; + } + } + + public void renderSmolBlockAt(ResourceLocation loc, int x, int y, int z) { + GL11.glPushMatrix(); + GL11.glTranslatef(x, y, z); + GL11.glRotatef(180, 0F, 0F, 1F); + + Tessellator tesseract = Tessellator.instance; + tesseract.startDrawingQuads(); + this.bindTexture(loc); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + tesseract.draw(); + + tesseract.startDrawingQuads(); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 0); + tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1); + tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1); + tesseract.draw(); + GL11.glPopMatrix(); + + } + +} diff --git a/com/hbm/render/tileentity/RenderPylon.java b/com/hbm/render/tileentity/RenderPylon.java index 75d0da8c7..d6fbc11f1 100644 --- a/com/hbm/render/tileentity/RenderPylon.java +++ b/com/hbm/render/tileentity/RenderPylon.java @@ -31,8 +31,29 @@ public class RenderPylon extends TileEntitySpecialRenderer { this.pylon.renderAll(0.0625F); GL11.glPopMatrix(); GL11.glPushMatrix(); - for(TileEntityPylonRedWire wire : pyl.connected) - drawPowerLine(x + 0.5, y + 5.3, z + 0.5, x + (wire.xCoord - pyl.xCoord) + 0.5, y + (wire.yCoord - pyl.yCoord) + 5.3, z + (wire.zCoord - pyl.zCoord) + 0.5); + + for(int i = 0; i < pyl.connected.size(); i++) { + + TileEntityPylonRedWire wire = pyl.connected.get(i); + + float wX = (wire.xCoord - pyl.xCoord) / 2F; + float wY = (wire.yCoord - pyl.yCoord) / 2F; + float wZ = (wire.zCoord - pyl.zCoord) / 2F; + + float count = 10; + for(float j = 0; j < count; j++) { + + float k = j + 1; + + drawPowerLine( + x + 0.5 + (wX * j / count), + y + 5.4 + (wY * j / count) - Math.sin(j / count * Math.PI * 0.5), + z + 0.5 + (wZ * j / count), + x + 0.5 + (wX * k / count), + y + 5.4 + (wY * k / count) - Math.sin(k / count * Math.PI * 0.5), + z + 0.5 + (wZ * k / count)); + } + } GL11.glPopMatrix(); } @@ -42,21 +63,24 @@ public class RenderPylon extends TileEntitySpecialRenderer { GL11.glDisable(GL11.GL_CULL_FACE); Tessellator tessellator = Tessellator.instance; tessellator.startDrawing(5); - tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.setColorOpaque_I(0xBB3311); + //tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); tessellator.addVertex(x, y + 0.05F, z); tessellator.addVertex(x, y - 0.05F, z); tessellator.addVertex(a, b + 0.05F, c); tessellator.addVertex(a, b - 0.05F, c); tessellator.draw(); tessellator.startDrawing(5); - tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.setColorOpaque_I(0xBB3311); + //tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); tessellator.addVertex(x + 0.05F, y, z); tessellator.addVertex(x - 0.05F, y, z); tessellator.addVertex(a + 0.05F, b, c); tessellator.addVertex(a - 0.05F, b, c); tessellator.draw(); tessellator.startDrawing(5); - tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); + tessellator.setColorOpaque_I(0xBB3311); + //tessellator.setColorRGBA_F(0.683F, 0.089F, 0.0F, 1.0F); tessellator.addVertex(x, y, z + 0.05F); tessellator.addVertex(x, y, z - 0.05F); tessellator.addVertex(a, b, c + 0.05F); diff --git a/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index e972f36dd..1288dce8d 100644 --- a/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.handler.MissileStruct; import com.hbm.interfaces.IConsumer; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -21,7 +22,6 @@ import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; -import com.hbm.render.misc.MissileMultipart; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -44,7 +44,7 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven public static final int maxSolid = 25000; public FluidTank[] tanks; - public MissileMultipart load; + public MissileStruct load; private static final int[] access = new int[] { 0 }; @@ -179,12 +179,12 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven PacketDispatcher.wrapper.sendToAll(new AuxElectricityPacket(xCoord, yCoord, zCoord, power)); PacketDispatcher.wrapper.sendToAll(new AuxGaugePacket(xCoord, yCoord, zCoord, solid, 0)); - MissileMultipart multipart = getMultipart(slots[0]); + MissileStruct multipart = getStruct(slots[0]); if(multipart != null) PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, multipart)); else - PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, new MissileMultipart())); + PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, new MissileStruct())); if(power >= maxPower * 0.75 && isMissileValid() && hasDesignator() && hasFuel()) { @@ -223,7 +223,7 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven int tX = slots[1].stackTagCompound.getInteger("xCoord"); int tZ = slots[1].stackTagCompound.getInteger("zCoord"); - EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX, tZ, getMultipart(slots[0])); + EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX, tZ, getStruct(slots[0])); worldObj.spawnEntityInWorld(missile); subtractFuel(); @@ -238,12 +238,12 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven private void subtractFuel() { - MissileMultipart multipart = getMultipart(slots[0]); + MissileStruct multipart = getStruct(slots[0]); if(multipart == null || multipart.fuselage == null) return; - ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + ItemMissile fuselage = (ItemMissile)multipart.fuselage; float f = (Float)fuselage.attributes[1]; int fuel = (int)f; @@ -272,19 +272,19 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven this.power -= maxPower * 0.75; } - public static MissileMultipart getMultipart(ItemStack stack) { + public static MissileStruct getStruct(ItemStack stack) { - return ItemCustomMissile.getMultipart(stack); + return ItemCustomMissile.getStruct(stack); } public boolean isMissileValid() { - MissileMultipart multipart = getMultipart(slots[0]); + MissileStruct multipart = getStruct(slots[0]); if(multipart == null || multipart.fuselage == null) return false; - ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + ItemMissile fuselage = (ItemMissile)multipart.fuselage; return fuselage.top == PartSize.SIZE_10; } @@ -301,12 +301,12 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven public int solidState() { - MissileMultipart multipart = getMultipart(slots[0]); + MissileStruct multipart = getStruct(slots[0]); if(multipart == null || multipart.fuselage == null) return -1; - ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + ItemMissile fuselage = (ItemMissile)multipart.fuselage; if((FuelType)fuselage.attributes[0] == FuelType.SOLID) { @@ -321,12 +321,12 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven public int liquidState() { - MissileMultipart multipart = getMultipart(slots[0]); + MissileStruct multipart = getStruct(slots[0]); if(multipart == null || multipart.fuselage == null) return -1; - ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + ItemMissile fuselage = (ItemMissile)multipart.fuselage; switch((FuelType)fuselage.attributes[0]) { case KEROSENE: @@ -346,12 +346,12 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven public int oxidizerState() { - MissileMultipart multipart = getMultipart(slots[0]); + MissileStruct multipart = getStruct(slots[0]); if(multipart == null || multipart.fuselage == null) return -1; - ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + ItemMissile fuselage = (ItemMissile)multipart.fuselage; switch((FuelType)fuselage.attributes[0]) { case KEROSENE: @@ -370,12 +370,12 @@ public class TileEntityCompactLauncher extends TileEntity implements ISidedInven public void updateTypes() { - MissileMultipart multipart = getMultipart(slots[0]); + MissileStruct multipart = getStruct(slots[0]); if(multipart == null || multipart.fuselage == null) return; - ItemMissile fuselage = (ItemMissile)multipart.fuselage.part; + ItemMissile fuselage = (ItemMissile)multipart.fuselage; switch((FuelType)fuselage.attributes[0]) { case KEROSENE: diff --git a/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 7bda360e8..498eec694 100644 --- a/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -1,11 +1,514 @@ package com.hbm.tileentity.bomb; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.entity.missile.EntityMissileCustom; +import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.handler.MissileStruct; +import com.hbm.interfaces.IConsumer; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidContainer; +import com.hbm.inventory.FluidTank; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemCustomMissile; +import com.hbm.items.weapon.ItemMissile; +import com.hbm.items.weapon.ItemMissile.FuelType; +import com.hbm.items.weapon.ItemMissile.PartSize; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxElectricityPacket; +import com.hbm.packet.AuxGaugePacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TEMissileMultipartPacket; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityLaunchTable extends TileEntity { +public class TileEntityLaunchTable extends TileEntity implements ISidedInventory, IConsumer, IFluidContainer, IFluidAcceptor { + + private ItemStack slots[]; + + public long power; + public static final long maxPower = 100000; + public int solid; + public static final int maxSolid = 100000; + public FluidTank[] tanks; + public PartSize padSize; + public int height; + + public MissileStruct load; + + private static final int[] access = new int[] { 0 }; + + private String customName; + + public TileEntityLaunchTable() { + slots = new ItemStack[6]; + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(FluidType.NONE, 100000, 0); + tanks[1] = new FluidTank(FluidType.NONE, 100000, 1); + padSize = PartSize.SIZE_10; + height = 10; + } + + @Override + public int getSizeInventory() { + return slots.length; + } + + @Override + public ItemStack getStackInSlot(int i) { + return slots[i]; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) { + if (slots[i] != null) { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.customName : "container.launchTable"; + } + + @Override + public boolean hasCustomInventoryName() { + return this.customName != null && this.customName.length() > 0; + } + + public void setCustomName(String name) { + this.customName = name; + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; + } + } + + // You scrubs aren't needed for anything (right now) + @Override + public void openInventory() { + } + + @Override + public void closeInventory() { + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack stack) { + return false; + } + + @Override + public ItemStack decrStackSize(int i, int j) { + if (slots[i] != null) { + if (slots[i].stackSize <= j) { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } + ItemStack itemStack1 = slots[i].splitStack(j); + if (slots[i].stackSize == 0) { + slots[i] = null; + } + + return itemStack1; + } else { + return null; + } + } + + public long getPowerScaled(long i) { + return (power * i) / maxPower; + } + + public int getSolidScaled(int i) { + return (solid * i) / maxSolid; + } + + @Override + public void updateEntity() { + + if (!worldObj.isRemote) { + + updateTypes(); + + tanks[0].loadTank(2, 3, slots); + tanks[1].loadTank(2, 3, slots); + + for (int i = 0; i < 2; i++) + tanks[i].updateTank(xCoord, yCoord, zCoord); + + power = Library.chargeTEFromItems(slots, 5, power, maxPower); + + if(slots[4] != null && slots[4].getItem() == ModItems.rocket_fuel && solid + 250 <= maxSolid) { + + this.decrStackSize(4, 1); + solid += 250; + } + + PacketDispatcher.wrapper.sendToAll(new AuxElectricityPacket(xCoord, yCoord, zCoord, power)); + PacketDispatcher.wrapper.sendToAll(new AuxGaugePacket(xCoord, yCoord, zCoord, solid, 0)); + PacketDispatcher.wrapper.sendToAll(new AuxGaugePacket(xCoord, yCoord, zCoord, padSize.ordinal(), 1)); + + MissileStruct multipart = getStruct(slots[0]); + + if(multipart != null) + PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, multipart)); + else + PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, new MissileStruct())); + + if(power >= maxPower * 0.75 && isMissileValid() && hasDesignator() && hasFuel()) { + + outer: + for(int x = -4; x <= 4; x++) { + for(int z = -4; z <= 4; z++) { + + if(worldObj.isBlockIndirectlyGettingPowered(xCoord + x, yCoord, zCoord + z)) { + launch(); + break outer; + } + } + } + } + } else { + + List entities = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord, zCoord - 0.5, xCoord + 1.5, yCoord + 10, zCoord + 1.5)); + + for(Entity e : entities) { + + if(e instanceof EntityMissileCustom) { + + for(int i = 0; i < 15; i++) + MainRegistry.proxy.spawnParticle(xCoord + 0.5, yCoord + 0.25, zCoord + 0.5, "largelaunchsmoke", null); + + break; + } + } + } + } + + private void launch() { + + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:weapon.missileTakeOff", 10.0F, 1.0F); + + int tX = slots[1].stackTagCompound.getInteger("xCoord"); + int tZ = slots[1].stackTagCompound.getInteger("zCoord"); + + EntityMissileCustom missile = new EntityMissileCustom(worldObj, xCoord + 0.5F, yCoord + 2.5F, zCoord + 0.5F, tX, tZ, getStruct(slots[0])); + worldObj.spawnEntityInWorld(missile); + + subtractFuel(); + + slots[0] = null; + } + + private boolean hasFuel() { + + return solidState() != 0 && liquidState() != 0 && oxidizerState() != 0; + } + + private void subtractFuel() { + + MissileStruct multipart = getStruct(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage; + + float f = (Float)fuselage.attributes[1]; + int fuel = (int)f; + + switch((FuelType)fuselage.attributes[0]) { + case KEROSENE: + tanks[0].setFill(tanks[0].getFill() - fuel); + tanks[1].setFill(tanks[1].getFill() - fuel); + break; + case HYDROGEN: + tanks[0].setFill(tanks[0].getFill() - fuel); + tanks[1].setFill(tanks[1].getFill() - fuel); + break; + case XENON: + tanks[0].setFill(tanks[0].getFill() - fuel); + break; + case BALEFIRE: + tanks[0].setFill(tanks[0].getFill() - fuel); + tanks[1].setFill(tanks[1].getFill() - fuel); + break; + case SOLID: + this.solid -= fuel; break; + default: break; + } + + this.power -= maxPower * 0.75; + } + + public static MissileStruct getStruct(ItemStack stack) { + + return ItemCustomMissile.getStruct(stack); + } + + public boolean isMissileValid() { + + MissileStruct multipart = getStruct(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return false; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage; + + return fuselage.top == padSize; + } + + public boolean hasDesignator() { + + if(slots[1] != null) { + + return (slots[1].getItem() == ModItems.designator || slots[1].getItem() == ModItems.designator_range || slots[1].getItem() == ModItems.designator_manual) && slots[1].hasTagCompound(); + } + + return false; + } + + public int solidState() { + + MissileStruct multipart = getStruct(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return -1; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage; + + if((FuelType)fuselage.attributes[0] == FuelType.SOLID) { + + if(solid >= (Float)fuselage.attributes[1]) + return 1; + else + return 0; + } + + return -1; + } + + public int liquidState() { + + MissileStruct multipart = getStruct(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return -1; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage; + + switch((FuelType)fuselage.attributes[0]) { + case KEROSENE: + case HYDROGEN: + case XENON: + case BALEFIRE: + + if(tanks[0].getFill() >= (Float)fuselage.attributes[1]) + return 1; + else + return 0; + default: break; + } + + return -1; + } + + public int oxidizerState() { + + MissileStruct multipart = getStruct(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return -1; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage; + + switch((FuelType)fuselage.attributes[0]) { + case KEROSENE: + case HYDROGEN: + case BALEFIRE: + + if(tanks[1].getFill() >= (Float)fuselage.attributes[1]) + return 1; + else + return 0; + default: break; + } + + return -1; + } + + public void updateTypes() { + + MissileStruct multipart = getStruct(slots[0]); + + if(multipart == null || multipart.fuselage == null) + return; + + ItemMissile fuselage = (ItemMissile)multipart.fuselage; + + switch((FuelType)fuselage.attributes[0]) { + case KEROSENE: + tanks[0].setTankType(FluidType.KEROSENE); + tanks[1].setTankType(FluidType.ACID); + break; + case HYDROGEN: + tanks[0].setTankType(FluidType.HYDROGEN); + tanks[1].setTankType(FluidType.OXYGEN); + break; + case XENON: + tanks[0].setTankType(FluidType.XENON); + break; + case BALEFIRE: + tanks[0].setTankType(FluidType.BALEFIRE); + tanks[1].setTankType(FluidType.ACID); + break; + default: break; + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList list = nbt.getTagList("items", 10); + + tanks[0].readFromNBT(nbt, "fuel"); + tanks[1].readFromNBT(nbt, "oxidizer"); + solid = nbt.getInteger("solidfuel"); + power = nbt.getLong("power"); + padSize = PartSize.values()[nbt.getInteger("padSize")]; + + slots = new ItemStack[getSizeInventory()]; + + for (int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if (b0 >= 0 && b0 < slots.length) { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + NBTTagList list = new NBTTagList(); + + tanks[0].writeToNBT(nbt, "fuel"); + tanks[1].writeToNBT(nbt, "oxidizer"); + nbt.setInteger("solidfuel", solid); + nbt.setLong("power", power); + nbt.setInteger("padSize", padSize.ordinal()); + + for (int i = 0; i < slots.length; i++) { + if (slots[i] != null) { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte) i); + slots[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("items", list); + } + + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return access; + } + + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + return this.isItemValidForSlot(i, itemStack); + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return false; + } + + @Override + public int getMaxFluidFill(FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getMaxFill(); + else if (type.name().equals(tanks[1].getTankType().name())) + return tanks[1].getMaxFill(); + else + return 0; + } + + @Override + public void setFillstate(int fill, int index) { + if (index < 2 && tanks[index] != null) + tanks[index].setFill(fill); + } + + @Override + public void setFluidFill(int fill, FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + tanks[0].setFill(fill); + else if (type.name().equals(tanks[1].getTankType().name())) + tanks[1].setFill(fill); + } + + @Override + public void setType(FluidType type, int index) { + if (index < 2 && tanks[index] != null) + tanks[index].setTankType(type); + } + + @Override + public List getTanks() { + List list = new ArrayList(); + list.add(tanks[0]); + list.add(tanks[1]); + + return list; + } + + @Override + public int getFluidFill(FluidType type) { + if (type.name().equals(tanks[0].getTankType().name())) + return tanks[0].getFill(); + else if (type.name().equals(tanks[1].getTankType().name())) + return tanks[1].getFill(); + else + return 0; + } @Override public AxisAlignedBB getRenderBoundingBox() { @@ -19,4 +522,18 @@ public class TileEntityLaunchTable extends TileEntity { return 65536.0D; } + @Override + public void setPower(long i) { + this.power = i; + } + + @Override + public long getPower() { + return this.power; + } + + @Override + public long getMaxPower() { + return this.maxPower; + } } diff --git a/com/hbm/tileentity/machine/TileEntityDummy.java b/com/hbm/tileentity/machine/TileEntityDummy.java index 121fb3bb4..3ef22edfb 100644 --- a/com/hbm/tileentity/machine/TileEntityDummy.java +++ b/com/hbm/tileentity/machine/TileEntityDummy.java @@ -17,7 +17,6 @@ public class TileEntityDummy extends TileEntity { if(!this.worldObj.isRemote) { if(!(this.worldObj.getBlock(targetX, targetY, targetZ) instanceof IMultiblock)) { worldObj.func_147480_a(xCoord, yCoord, zCoord, false); - //worldObj.setBlock(targetX, targetY, targetZ, Blocks.gold_block); } } } diff --git a/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java b/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java index 26c0edd07..c617c7666 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java +++ b/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.handler.FluidTypeHandler.FluidType; +import com.hbm.handler.MissileStruct; import com.hbm.interfaces.IConsumer; import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.FluidTank; @@ -32,7 +33,7 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid private ItemStack slots[]; - public MissileMultipart load; + public MissileStruct load; private static final int[] access = new int[] { 0 }; @@ -185,19 +186,7 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid if(!worldObj.isRemote) { - MissileMultipart multipart = new MissileMultipart(); - - if(slots[1] != null) - multipart.warhead = MissilePart.getPart(slots[1].getItem()); - - if(slots[2] != null) - multipart.fuselage = MissilePart.getPart(slots[2].getItem()); - - if(slots[3] != null) - multipart.fins = MissilePart.getPart(slots[3].getItem()); - - if(slots[4] != null) - multipart.thruster = MissilePart.getPart(slots[4].getItem()); + MissileStruct multipart = new MissileStruct(slots[1], slots[2], slots[3], slots[4]); PacketDispatcher.wrapper.sendToAll(new TEMissileMultipartPacket(xCoord, yCoord, zCoord, multipart)); } diff --git a/com/hbm/tileentity/machine/TileEntityMultiblock.java b/com/hbm/tileentity/machine/TileEntityMultiblock.java new file mode 100644 index 000000000..d5dbb58c5 --- /dev/null +++ b/com/hbm/tileentity/machine/TileEntityMultiblock.java @@ -0,0 +1,205 @@ +package com.hbm.tileentity.machine; + +import com.hbm.blocks.ModBlocks; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class TileEntityMultiblock extends TileEntity { + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(this.getBlockType() == ModBlocks.struct_launcher_core && isCompact()) { + buildCompact(); + } + + if(this.getBlockType() == ModBlocks.struct_launcher_core_large) { + + int meta = isTable(); + + if(meta != -1) + buildTable(meta); + } + } + } + + private boolean isCompact() { + + for(int i = -1; i <= 1; i++) + for(int j = -1; j <= 1; j++) + if(!(i == 0 && j == 0)) + if(worldObj.getBlock(xCoord + i, yCoord, zCoord + j) != ModBlocks.struct_launcher) + return false; + + return true; + } + + private int isTable() { + + for(int i = -4; i <= 4; i++) + for(int j = -4; j <= -4; j++) + if(!(i == 0 && j == 0)) + if(worldObj.getBlock(xCoord + i, yCoord, zCoord + j) != ModBlocks.struct_launcher) + return -1; + + boolean flag = true; + + for(int k = 1; k < 12; k++) { + if(worldObj.getBlock(xCoord + 3, yCoord + k, zCoord) != ModBlocks.struct_scaffold) + flag = false; + } + + if(flag) + return 0; + flag = true; + + for(int k = 1; k < 12; k++) { + if(worldObj.getBlock(xCoord - 3, yCoord + k, zCoord) != ModBlocks.struct_scaffold) + flag = false; + } + + if(flag) + return 1; + flag = true; + + for(int k = 1; k < 12; k++) { + if(worldObj.getBlock(xCoord, yCoord + k, zCoord + 3) != ModBlocks.struct_scaffold) + flag = false; + } + + if(flag) + return 2; + flag = true; + + for(int k = 1; k < 12; k++) { + if(worldObj.getBlock(xCoord, yCoord + k, zCoord - 3) != ModBlocks.struct_scaffold) + flag = false; + } + + if(flag) + return 3; + + return -1; + + } + + private void buildCompact() { + + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.compact_launcher); + + placeDummy(xCoord + 1, yCoord, zCoord + 1, xCoord, yCoord, zCoord, ModBlocks.dummy_port_compact_launcher); + placeDummy(xCoord + 1, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_compact_launcher); + placeDummy(xCoord + 1, yCoord, zCoord - 1, xCoord, yCoord, zCoord, ModBlocks.dummy_port_compact_launcher); + placeDummy(xCoord, yCoord, zCoord - 1, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_compact_launcher); + placeDummy(xCoord - 1, yCoord, zCoord - 1, xCoord, yCoord, zCoord, ModBlocks.dummy_port_compact_launcher); + placeDummy(xCoord - 1, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_compact_launcher); + placeDummy(xCoord - 1, yCoord, zCoord + 1, xCoord, yCoord, zCoord, ModBlocks.dummy_port_compact_launcher); + placeDummy(xCoord, yCoord, zCoord + 1, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_compact_launcher); + } + + private void buildTable(int meta) { + + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.launch_table, meta, 2); + + switch(meta) { + case 0: + for(int i = 1; i < 12; i++) + worldObj.setBlock(xCoord + 3, yCoord + i, zCoord, Blocks.air); + + for(int i = -4; i <= 4; i++) + if(i != 0) + placeDummy(xCoord + i, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table); + + for(int i = -4; i <= 4; i++) + if(i != 0) + placeDummy(xCoord, yCoord, zCoord + i, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_launch_table); + + break; + + case 1: + for(int i = 1; i < 12; i++) + worldObj.setBlock(xCoord - 3, yCoord + i, zCoord, Blocks.air); + + for(int i = -4; i <= 4; i++) + if(i != 0) + placeDummy(xCoord + i, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table); + + for(int i = -4; i <= 4; i++) + if(i != 0) + placeDummy(xCoord, yCoord, zCoord + i, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_launch_table); + + break; + + case 2: + for(int i = 1; i < 12; i++) + worldObj.setBlock(xCoord, yCoord + i, zCoord + 3, Blocks.air); + + for(int i = -4; i <= 4; i++) + if(i != 0) + placeDummy(xCoord + i, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_launch_table); + + for(int i = -4; i <= 4; i++) + if(i != 0) + placeDummy(xCoord, yCoord, zCoord + i, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table); + + break; + + case 3: + for(int i = 1; i < 12; i++) + worldObj.setBlock(xCoord, yCoord + i, zCoord - 3, Blocks.air); + + for(int i = -4; i <= 4; i++) + if(i != 0) + placeDummy(xCoord + i, yCoord, zCoord, xCoord, yCoord, zCoord, ModBlocks.dummy_plate_launch_table); + + for(int i = -4; i <= 4; i++) + if(i != 0) + placeDummy(xCoord, yCoord, zCoord + i, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table); + + break; + + } + + for(int i = -4; i <= 4; i++) + for(int j = -4; j <= 4; j++) + if(i != 0 && j != 0) + placeDummy(xCoord + i, yCoord, zCoord + j, xCoord, yCoord, zCoord, ModBlocks.dummy_port_launch_table); + + + } + + private void placeDummy(int x, int y, int z, int xCoord, int yCoord, int zCoord, Block block) { + + worldObj.setBlock(x, y, z, block); + + TileEntity te = worldObj.getTileEntity(x, y, z); + + if(te instanceof TileEntityDummy) { + TileEntityDummy dummy = (TileEntityDummy)te; + dummy.targetX = xCoord; + dummy.targetY = yCoord; + dummy.targetZ = zCoord; + } + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } + +}