From 9eeb5293fc0d022298fb772338241aa7e8672dac Mon Sep 17 00:00:00 2001 From: nathansmithsmith Date: Thu, 13 Jul 2023 20:57:32 -0600 Subject: Half working mussolini --- assets/generale.mtl | 12 +++ assets/generale.obj | 168 ++++++++++++++++++++++++++++++ assets/mussolini.mtl | 12 +++ assets/mussolini.obj | 266 +++++++++++++++++++++++++++++++++++++++++++++++ src/assets.c | 4 +- src/assets.h | 6 +- src/entities/generale.c | 19 ++++ src/entities/generale.h | 12 +++ src/entities/mussolini.c | 34 ++++++ src/entities/mussolini.h | 12 +++ src/entity.c | 8 +- src/game.c | 4 +- 12 files changed, 552 insertions(+), 5 deletions(-) create mode 100644 assets/generale.mtl create mode 100644 assets/generale.obj create mode 100644 assets/mussolini.mtl create mode 100644 assets/mussolini.obj create mode 100644 src/entities/generale.c create mode 100644 src/entities/generale.h create mode 100644 src/entities/mussolini.c create mode 100644 src/entities/mussolini.h diff --git a/assets/generale.mtl b/assets/generale.mtl new file mode 100644 index 0000000..e3b569b --- /dev/null +++ b/assets/generale.mtl @@ -0,0 +1,12 @@ +# Blender 3.5.1 MTL File: 'generale.blend' +# www.blender.org + +newmtl Material.002 +Ns 250.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 diff --git a/assets/generale.obj b/assets/generale.obj new file mode 100644 index 0000000..11bd77b --- /dev/null +++ b/assets/generale.obj @@ -0,0 +1,168 @@ +# Blender 3.5.1 +# www.blender.org +mtllib generale.mtl +o Cylinder +v 0.000000 -0.250000 -5.000000 +v 0.000000 0.250000 -2.500000 +v 3.535534 -0.250000 -3.535534 +v 1.767767 0.250000 -1.767767 +v 5.000000 -0.250000 0.000000 +v 2.500000 0.250000 0.000000 +v 3.535534 -0.250000 3.535534 +v 1.767767 0.250000 1.767767 +v 0.000000 -0.250000 5.000000 +v 0.000000 0.250000 2.500000 +v -3.535534 -0.250000 3.535534 +v -1.767767 0.250000 1.767767 +v -5.000000 -0.250000 0.000000 +v -2.500000 0.250000 0.000000 +v -3.535534 -0.250000 -3.535534 +v -1.767767 0.250000 -1.767767 +v 1.529684 0.694962 -1.529684 +v 0.000000 0.694962 -2.163300 +v 2.163300 0.694962 0.000000 +v 1.529684 0.694962 1.529684 +v 0.000000 0.694962 2.163300 +v -1.529684 0.694962 1.529684 +v -2.163300 0.694962 0.000000 +v -1.529684 0.694962 -1.529684 +v -0.012109 -0.416466 -4.562531 +v 3.207676 -0.416466 -3.228852 +v 4.541354 -0.416466 -0.009068 +v 3.207676 -0.416466 3.210717 +v -0.012109 -0.416466 4.544395 +v -3.231893 -0.416466 3.210717 +v -4.565572 -0.416466 -0.009068 +v -3.231893 -0.416466 -3.228852 +vn 0.0810 0.9774 -0.1955 +vn 0.1955 0.9774 -0.0810 +vn 0.1955 0.9774 0.0810 +vn 0.0810 0.9774 0.1955 +vn -0.0810 0.9774 0.1955 +vn -0.1955 0.9774 0.0810 +vn 0.3136 0.5730 0.7572 +vn -0.1955 0.9774 -0.0810 +vn -0.0810 0.9774 -0.1955 +vn 0.3402 -0.9297 -0.1409 +vn -0.7572 0.5730 -0.3136 +vn 0.7572 0.5730 -0.3136 +vn -0.3136 0.5730 0.7572 +vn -0.3136 0.5730 -0.7572 +vn 0.3136 0.5730 -0.7572 +vn 0.7572 0.5730 0.3136 +vn -0.7572 0.5730 0.3136 +vn -0.0000 -1.0000 -0.0000 +vn -0.1421 -0.9285 0.3430 +vn -0.1472 -0.9231 -0.3553 +vn 0.1443 -0.9262 -0.3484 +vn 0.3354 -0.9318 0.1389 +vn -0.3514 -0.9249 0.1455 +vn 0.1394 -0.9313 0.3366 +vn -0.3566 -0.9225 -0.1477 +vn -0.0000 1.0000 -0.0000 +vt 0.000000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 0.875000 0.500000 +vt 0.875000 1.000000 +vt 0.750000 0.500000 +vt 0.750000 1.000000 +vt 0.625000 0.500000 +vt 0.625000 1.000000 +vt 0.500000 0.500000 +vt 0.500000 1.000000 +vt 0.375000 0.500000 +vt 0.375000 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.125000 0.500000 +vt 0.125000 1.000000 +vt 0.875000 1.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.750000 1.000000 +vt 0.625000 1.000000 +vt 0.500000 1.000000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.125000 1.000000 +vt 1.000000 0.500000 +vt 0.750000 0.490000 +vt 0.000000 0.500000 +vt 0.919706 0.419706 +vt 0.875000 0.500000 +vt 0.750000 0.500000 +vt 0.990000 0.250000 +vt 0.919706 0.080294 +vt 0.625000 0.500000 +vt 0.750000 0.010000 +vt 0.500000 0.500000 +vt 0.580294 0.080294 +vt 0.375000 0.500000 +vt 0.510000 0.250000 +vt 0.250000 0.500000 +vt 0.580294 0.419706 +vt 0.125000 0.500000 +s 0 +usemtl Material.002 +f 2/4/1 3/5/1 1/2/1 +f 4/6/2 5/7/2 3/5/2 +f 6/8/3 7/9/3 5/7/3 +f 8/10/4 9/11/4 7/9/4 +f 10/12/5 11/13/5 9/11/5 +f 12/14/6 13/15/6 11/13/6 +f 8/10/7 21/24/7 10/12/7 +f 14/16/8 15/17/8 13/15/8 +f 16/18/9 1/1/9 15/17/9 +f 3/5/10 27/33/10 26/32/10 +f 14/16/11 24/27/11 16/18/11 +f 4/6/12 19/22/12 6/8/12 +f 10/12/13 22/25/13 12/14/13 +f 16/18/14 18/21/14 2/3/14 +f 2/4/15 17/19/15 4/6/15 +f 6/8/16 20/23/16 8/10/16 +f 12/14/17 23/26/17 14/16/17 +f 28/35/18 30/39/18 32/43/18 +f 11/13/19 29/38/19 9/11/19 +f 15/17/20 25/30/20 32/44/20 +f 1/2/21 26/32/21 25/28/21 +f 5/7/22 28/36/22 27/33/22 +f 13/15/23 30/40/23 11/13/23 +f 9/11/24 28/36/24 7/9/24 +f 15/17/25 31/42/25 13/15/25 +f 2/4/1 4/6/1 3/5/1 +f 4/6/2 6/8/2 5/7/2 +f 6/8/3 8/10/3 7/9/3 +f 8/10/4 10/12/4 9/11/4 +f 10/12/5 12/14/5 11/13/5 +f 12/14/6 14/16/6 13/15/6 +f 8/10/7 20/23/7 21/24/7 +f 14/16/8 16/18/8 15/17/8 +f 16/18/9 2/3/9 1/1/9 +f 3/5/10 5/7/10 27/33/10 +f 14/16/11 23/26/11 24/27/11 +f 4/6/12 17/19/12 19/22/12 +f 10/12/13 21/24/13 22/25/13 +f 16/18/14 24/27/14 18/21/14 +f 2/4/15 18/20/15 17/19/15 +f 6/8/16 19/22/16 20/23/16 +f 12/14/17 22/25/17 23/26/17 +f 32/43/18 25/29/18 26/31/18 +f 26/31/18 27/34/18 28/35/18 +f 28/35/18 29/37/18 30/39/18 +f 30/39/18 31/41/18 32/43/18 +f 32/43/18 26/31/18 28/35/18 +f 11/13/19 30/40/19 29/38/19 +f 15/17/20 1/1/20 25/30/20 +f 1/2/21 3/5/21 26/32/21 +f 5/7/22 7/9/22 28/36/22 +f 13/15/23 31/42/23 30/40/23 +f 9/11/24 29/38/24 28/36/24 +f 15/17/25 32/44/25 31/42/25 +f 23/26/26 21/24/26 19/22/26 +f 19/22/26 17/19/26 18/21/26 +f 18/21/26 24/27/26 23/26/26 +f 23/26/26 22/25/26 21/24/26 +f 21/24/26 20/23/26 19/22/26 +f 19/22/26 18/21/26 23/26/26 diff --git a/assets/mussolini.mtl b/assets/mussolini.mtl new file mode 100644 index 0000000..92f1cc3 --- /dev/null +++ b/assets/mussolini.mtl @@ -0,0 +1,12 @@ +# Blender 3.5.1 MTL File: 'mussolini.blend' +# www.blender.org + +newmtl Material +Ns 250.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 diff --git a/assets/mussolini.obj b/assets/mussolini.obj new file mode 100644 index 0000000..93a35cf --- /dev/null +++ b/assets/mussolini.obj @@ -0,0 +1,266 @@ +# Blender 3.5.1 +# www.blender.org +mtllib mussolini.mtl +o Cube.001 +v -51.047367 -51.047367 51.047367 +v -51.047367 51.047367 51.047367 +v -51.047367 -51.047367 -51.047367 +v -51.047367 51.047367 -51.047367 +v 51.047367 -51.047367 51.047367 +v 51.047367 51.047367 51.047367 +v 51.047367 -51.047367 -51.047367 +v 51.047367 51.047367 -51.047367 +v -40.837894 61.047367 40.837894 +v -40.837894 61.047367 -40.837894 +v 40.837894 61.047367 -40.837894 +v 40.837894 61.047367 40.837894 +v -40.837894 -40.837894 61.047367 +v -40.837894 40.837894 61.047367 +v 40.837894 40.837894 61.047367 +v 40.837894 -40.837894 61.047367 +v -61.047367 -40.837894 -40.837894 +v -61.047367 -40.837894 40.837894 +v -61.047367 40.837894 40.837894 +v -61.047367 40.837894 -40.837894 +v -40.837894 40.837894 -61.047367 +v -40.837894 -40.837894 -61.047367 +v 40.837894 -40.837894 -61.047367 +v 40.837894 40.837894 -61.047367 +v 61.047367 40.837894 -40.837894 +v 61.047367 -40.837894 -40.837894 +v 61.047367 -40.837894 40.837894 +v 61.047367 40.837894 40.837894 +v -40.837894 -61.047367 -40.837894 +v -40.837894 -61.047367 40.837894 +v 40.837894 -61.047367 -40.837894 +v 40.837894 -61.047367 40.837894 +v -71.047371 -40.837894 40.837894 +v -71.047371 40.837894 40.837894 +v 71.047371 -40.837894 40.837894 +v 71.047371 40.837894 40.837894 +v -61.047367 0.000000 40.837894 +v -61.047367 -20.418947 40.837894 +v -61.047367 20.418947 40.837894 +v -71.047371 0.000000 40.837894 +v -71.047371 20.418947 40.837894 +v -71.047371 -20.418947 40.837894 +v 61.047367 0.000000 40.837894 +v 61.047367 -40.837894 40.837894 +v 61.047367 40.837894 40.837894 +v 61.047367 0.000000 40.837894 +v 61.047367 20.418947 40.837894 +v 61.047367 -20.418947 40.837894 +v 71.047371 0.000000 40.837894 +v 71.047371 -20.418947 40.837894 +v 71.047371 20.418947 40.837894 +vn -0.7144 0.6997 -0.0000 +vn 0.6997 -0.0000 -0.7144 +vn 0.7144 0.6997 -0.0000 +vn -0.0000 0.6997 0.7144 +vn -0.0000 -0.7144 -0.6997 +vn 0.6997 0.7144 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.6997 0.7144 -0.0000 +vn -0.0000 0.7144 0.6997 +vn -0.0000 0.7144 -0.6997 +vn -0.0000 -0.0000 1.0000 +vn 0.6997 -0.0000 0.7144 +vn -0.6997 -0.0000 0.7144 +vn -0.0000 -0.6997 0.7144 +vn 0.9926 -0.0000 -0.1215 +vn -0.7144 -0.6997 -0.0000 +vn -0.7144 -0.0000 -0.6997 +vn -0.7144 -0.0000 0.6997 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.6997 -0.7144 +vn -0.0000 0.6997 -0.7144 +vn -0.6997 -0.0000 -0.7144 +vn 0.7144 -0.0000 -0.6997 +vn 0.7144 -0.0000 0.6997 +vn 0.7144 -0.6997 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.6997 -0.7144 -0.0000 +vn 0.6997 -0.7144 -0.0000 +vn -0.0000 -0.7144 0.6997 +vn -0.9926 -0.0000 -0.1215 +vt 0.375000 0.000000 +vt 0.125000 0.750000 +vt 0.625000 1.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.125000 0.500000 +vt 0.625000 0.250000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.000000 +vt 0.625000 1.000000 +vt 0.875000 0.750000 +vt 0.625000 0.250000 +vt 0.875000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.000000 +vt 0.125000 0.750000 +vt 0.375000 1.000000 +vt 0.625000 0.000000 +vt 0.625000 1.000000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.375000 0.250000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.625000 0.250000 +vt 0.125000 0.500000 +vt 0.375000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.000000 0.000000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 0.500000 +vt 0.375000 0.750000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.000000 0.000000 +vt 0.500000 0.000000 +vt 0.437500 0.000000 +vt 0.562500 0.000000 +vt 0.500000 0.000000 +vt 0.562500 0.000000 +vt 0.437500 0.000000 +vt 0.500000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.000000 0.000000 +vt 0.500000 0.750000 +vt 0.562500 0.750000 +vt 0.000000 0.000000 +vt 0.437500 0.750000 +vt 0.500000 0.750000 +vt 0.437500 0.750000 +vt 0.000000 0.000000 +vt 0.562500 0.750000 +s 0 +usemtl Material +f 4/7/1 19/30/1 2/4/1 +f 7/10/2 24/36/2 8/11/2 +f 6/9/3 25/37/3 8/11/3 +f 2/3/4 15/24/4 6/9/4 +f 7/10/5 29/42/5 3/6/5 +f 8/11/6 12/18/6 6/9/6 +f 10/16/7 12/18/7 11/17/7 +f 2/4/8 10/15/8 4/7/8 +f 6/9/9 9/13/9 2/3/9 +f 4/7/10 11/17/10 8/11/10 +f 15/24/11 13/21/11 16/25/11 +f 6/9/12 16/25/12 5/8/12 +f 1/1/13 14/22/13 2/4/13 +f 5/8/14 13/20/14 1/2/14 +f 25/37/15 51/68/15 49/65/15 +f 1/2/16 17/27/16 3/6/16 +f 3/5/17 20/31/17 4/7/17 +f 2/4/18 39/53/18 37/51/18 +f 21/32/19 23/35/19 22/34/19 +f 3/6/20 23/35/20 7/10/20 +f 8/11/21 21/32/21 4/7/21 +f 4/7/22 22/34/22 3/5/22 +f 28/40/7 36/49/7 25/37/7 +f 8/11/23 26/38/23 7/10/23 +f 5/8/24 27/39/24 43/57/24 +f 7/10/25 27/39/25 5/8/25 +f 31/44/26 30/43/26 29/42/26 +f 3/6/27 30/43/27 1/2/27 +f 5/8/28 31/44/28 7/10/28 +f 1/2/29 32/45/29 5/8/29 +f 26/38/26 35/48/26 27/39/26 +f 47/62/11 46/61/11 49/65/11 +f 17/27/30 42/56/30 40/54/30 +f 18/29/26 33/46/26 17/27/26 +f 47/62/11 51/68/11 45/60/11 +f 19/30/7 20/31/7 34/47/7 +f 43/57/7 46/61/7 45/59/7 +f 27/39/7 44/58/7 46/61/7 +f 46/61/11 48/64/11 50/66/11 +f 44/58/11 35/48/11 48/64/11 +f 37/51/11 39/53/11 41/55/11 +f 38/52/11 37/51/11 40/54/11 +f 39/53/11 19/30/11 34/47/11 +f 38/52/11 42/56/11 18/29/11 +f 39/53/11 34/47/11 41/55/11 +f 41/55/11 40/54/11 37/51/11 +f 40/54/11 42/56/11 38/52/11 +f 42/56/11 33/46/11 18/29/11 +f 39/53/11 19/30/11 41/55/11 +f 37/51/11 39/53/11 40/54/11 +f 38/52/11 37/51/11 42/56/11 +f 18/29/11 38/52/11 33/46/11 +f 45/60/11 51/67/11 36/50/11 +f 47/62/11 49/65/11 51/68/11 +f 46/61/11 50/66/11 49/65/11 +f 35/48/11 50/66/11 48/64/11 +f 28/41/11 47/63/11 36/50/11 +f 47/62/11 46/61/11 51/68/11 +f 46/61/11 48/64/11 49/65/11 +f 48/64/11 44/58/11 50/66/11 +f 4/7/1 20/31/1 19/30/1 +f 7/10/2 23/35/2 24/36/2 +f 6/9/3 28/40/3 25/37/3 +f 2/3/4 14/23/4 15/24/4 +f 7/10/5 31/44/5 29/42/5 +f 8/11/6 11/17/6 12/18/6 +f 10/16/7 9/14/7 12/18/7 +f 2/4/8 9/12/8 10/15/8 +f 6/9/9 12/18/9 9/13/9 +f 4/7/10 10/15/10 11/17/10 +f 15/24/11 14/23/11 13/21/11 +f 6/9/12 15/24/12 16/25/12 +f 1/1/13 13/19/13 14/22/13 +f 5/8/14 16/25/14 13/20/14 +f 35/48/15 26/38/15 50/66/15 +f 26/38/15 25/37/15 49/65/15 +f 50/66/15 26/38/15 49/65/15 +f 25/37/15 36/49/15 51/68/15 +f 1/2/16 18/28/16 17/27/16 +f 3/5/17 17/26/17 20/31/17 +f 18/29/18 1/1/18 38/52/18 +f 1/1/18 2/4/18 37/51/18 +f 38/52/18 1/1/18 37/51/18 +f 2/4/18 19/30/18 39/53/18 +f 21/32/19 24/36/19 23/35/19 +f 3/6/20 22/33/20 23/35/20 +f 8/11/21 24/36/21 21/32/21 +f 4/7/22 21/32/22 22/34/22 +f 8/11/23 25/37/23 26/38/23 +f 28/40/24 6/9/24 43/57/24 +f 6/9/24 5/8/24 43/57/24 +f 7/10/25 26/38/25 27/39/25 +f 31/44/26 32/45/26 30/43/26 +f 3/6/27 29/42/27 30/43/27 +f 5/8/28 32/45/28 31/44/28 +f 1/2/29 30/43/29 32/45/29 +f 34/47/30 20/31/30 41/55/30 +f 20/31/30 17/27/30 40/54/30 +f 41/55/30 20/31/30 40/54/30 +f 17/27/30 33/46/30 42/56/30 +f 45/59/7 28/40/7 43/57/7 +f 46/61/7 47/62/7 45/59/7 +f 46/61/7 43/57/7 27/39/7 +f 44/58/7 48/64/7 46/61/7 +f 44/58/7 27/39/7 35/48/7 +f 45/60/7 28/41/7 36/50/7 +f 28/41/7 45/60/7 47/63/7 +f 9/14/7 11/17/7 10/16/7 +f 29/42/26 32/45/26 30/43/26 +f 24/36/19 22/34/19 21/32/19 +f 16/25/11 14/23/11 13/21/11 diff --git a/src/assets.c b/src/assets.c index bfc823a..fde88af 100644 --- a/src/assets.c +++ b/src/assets.c @@ -11,7 +11,9 @@ const char modelAssetPaths[MODEL_ASSET_COUNT][ASSET_PATH_MAX] = { "/home/nathan/Documents/KillaFacsista/assets/soldato.obj", "/home/nathan/Documents/KillaFacsista/assets/caporale.obj", "/home/nathan/Documents/KillaFacsista/assets/sergente.obj", - "/home/nathan/Documents/KillaFacsista/assets/maresciallo.obj" + "/home/nathan/Documents/KillaFacsista/assets/maresciallo.obj", + "/home/nathan/Documents/KillaFacsista/assets/generale.obj", + "/home/nathan/Documents/KillaFacsista/assets/mussolini.obj" }; void LoadAssets(Assets * assets) { diff --git a/src/assets.h b/src/assets.h index 3797c3f..8721242 100644 --- a/src/assets.h +++ b/src/assets.h @@ -6,7 +6,7 @@ #define ASSET_PATH_MAX 255 #define TEXTURE_ASSET_COUNT 3 -#define MODEL_ASSET_COUNT 5 +#define MODEL_ASSET_COUNT 7 // Paths to assets. extern const char textureAssetPaths[TEXTURE_ASSET_COUNT][ASSET_PATH_MAX]; @@ -27,7 +27,9 @@ enum { SOLDATO_ASSET, CAPORATE_ASSET, SERGENTE_ASSET, - MARESCIALLO_ASSET + MARESCIALLO_ASSET, + GENERALE_ASSET, + MUSSOLINI_ASSET }; typedef struct Assets { diff --git a/src/entities/generale.c b/src/entities/generale.c new file mode 100644 index 0000000..8e86e3f --- /dev/null +++ b/src/entities/generale.c @@ -0,0 +1,19 @@ +#include "generale.h" +#include "assets.h" +#include "game.h" + +void initGenerale(Entity * entity, Game * game) { + entity->model = &game->assets.models[GENERALE_ASSET]; + entity->velocity.angularVelocity = (AxisAngle){(Vector3){1.0, 1.0, 1.0}, 1.0}; +} + +void closeGenerale(Entity * entity) { +} + +void updateGenerale(Game * game, Entity * entity) { + entityUpdateRotation(entity); +} + +void drawGenerale(Game * game, Entity * entity) { + entityDraw(entity); +} diff --git a/src/entities/generale.h b/src/entities/generale.h new file mode 100644 index 0000000..12b1ccb --- /dev/null +++ b/src/entities/generale.h @@ -0,0 +1,12 @@ +#include "gameCommon.h" +#include "entity.h" + +#ifndef GENERALE_H +#define GENERALE_H + +void initGenerale(Entity * entity, Game * game); +void closeGenerale(Entity * entity); +void updateGenerale(Game * game, Entity * entity); +void drawGenerale(Game * game, Entity * entity); + +#endif diff --git a/src/entities/mussolini.c b/src/entities/mussolini.c new file mode 100644 index 0000000..2770d2f --- /dev/null +++ b/src/entities/mussolini.c @@ -0,0 +1,34 @@ +#include "mussolini.h" +#include "assets.h" +#include "game.h" + +void initMussolini(Entity * entity, Game * game) { + entity->model = &game->assets.models[MUSSOLINI_ASSET]; +} + +void closeMussolini(Entity * entity) { +} + +void updateMussolini(Game * game, Entity * entity) { + Entity * player = getEntityFromWorld(game->world, 0); + + float pitch = Vector2Angle( + (Vector2){entity->position.y, entity->position.x}, + (Vector2){player->position.y, player->position.x} + ); + + float yaw = Vector2Angle( + (Vector2){entity->position.x, entity->position.z}, + (Vector2){player->position.x, player->position.z} + ); + + entity->rotation = QuaternionFromEuler( + pitch - (PI/2), + -(yaw - (PI/2)), + 0.0 + ); +} + +void drawMussolini(Game * game, Entity * entity) { + entityDraw(entity); +} diff --git a/src/entities/mussolini.h b/src/entities/mussolini.h new file mode 100644 index 0000000..ee595f5 --- /dev/null +++ b/src/entities/mussolini.h @@ -0,0 +1,12 @@ +#include "gameCommon.h" +#include "entity.h" + +#ifndef MUSSOLINI_H +#define MUSSOLINI_H + +void initMussolini(Entity * entity, Game * game); +void closeMussolini(Entity * entity); +void updateMussolini(Game * game, Entity * entity); +void drawMussolini(Game * game, Entity * entity); + +#endif diff --git a/src/entity.c b/src/entity.c index 956c40f..0d91ac8 100644 --- a/src/entity.c +++ b/src/entity.c @@ -1,9 +1,13 @@ #include "entity.h" + +// Entities. #include "entities/antifaShip.h" #include "entities/soldato.h" #include "entities/caporale.h" #include "entities/sergente.h" #include "entities/maresciallo.h" +#include "entities/generale.h" +#include "entities/mussolini.h" // This fucker is used for creating entities. const EntityTypeInfo entityTypeInfo[ENTITY_TYPE_COUNT] = { @@ -11,7 +15,9 @@ const EntityTypeInfo entityTypeInfo[ENTITY_TYPE_COUNT] = { (EntityTypeInfo){initSoldato, closeSoldato, updateSoldato, drawSoldato}, (EntityTypeInfo){initCaporale, closeCaporale, updateCaporale, drawCaporale}, (EntityTypeInfo){initSergente, closeSergente, updateSergente, drawSergente}, - (EntityTypeInfo){initMaresciallo, closeMaresciallo, updateMaresciallo, drawMaresciallo} + (EntityTypeInfo){initMaresciallo, closeMaresciallo, updateMaresciallo, drawMaresciallo}, + (EntityTypeInfo){initGenerale, closeGenerale, updateGenerale, drawGenerale}, + (EntityTypeInfo){initMussolini, closeMussolini, updateMussolini, drawMussolini} }; EntityVelocity entityVelocityIdentity() { diff --git a/src/game.c b/src/game.c index ffe844e..f916584 100644 --- a/src/game.c +++ b/src/game.c @@ -29,7 +29,9 @@ void initGame(Game * game) { (WorldEntry){ENTITY_SOLDATO, (Vector3){20.0, 20.0, 20.0}, QuaternionIdentity()}, (WorldEntry){ENTITY_CAPORALE, (Vector3){30.0, 30.0, 30.0}, QuaternionIdentity()}, (WorldEntry){ENTITY_SERGENTE, (Vector3){40.0, 40.0, 40.0}, QuaternionIdentity()}, - (WorldEntry){ENTITY_MARESCIALLO, (Vector3){50.0, 50.0, 50.0}, QuaternionIdentity()} + (WorldEntry){ENTITY_MARESCIALLO, (Vector3){50.0, 50.0, 50.0}, QuaternionIdentity()}, + (WorldEntry){ENTITY_GENERALE, (Vector3){60.0, 60.0, 60.0}, QuaternionIdentity()}, + (WorldEntry){ENTITY_MUSSOLINI, (Vector3){0.0, 0.0, 150.0}, QuaternionIdentity()} }; addEntriesToWorld( -- cgit v1.2.3