Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision 8d92284183baeec77ad25d7c8b704ee0757a49a0)
+++ vulkan-game.cpp	(revision 4a777d2b3a0f0dff81e2a81bb45124f3c448bf47)
@@ -11,5 +11,4 @@
 
 #include "logger.hpp"
-#include "utils.hpp"
 
 #include "gui/imgui/button-imgui.hpp"
@@ -433,8 +432,9 @@
    shipPipeline.createDescriptorSets(swapChainImages);
 
-   asteroidPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&AsteroidVertex::pos));
-   asteroidPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&AsteroidVertex::color));
-   asteroidPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&AsteroidVertex::normal));
-   asteroidPipeline.addAttribute(VK_FORMAT_R32_UINT, offset_of(&AsteroidVertex::objIndex));
+   asteroidPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&ModelVertex::pos));
+   asteroidPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&ModelVertex::color));
+   asteroidPipeline.addAttribute(VK_FORMAT_R32G32_SFLOAT, offset_of(&ModelVertex::texCoord));
+   asteroidPipeline.addAttribute(VK_FORMAT_R32G32B32_SFLOAT, offset_of(&ModelVertex::normal));
+   asteroidPipeline.addAttribute(VK_FORMAT_R32_UINT, offset_of(&ModelVertex::objIndex));
 
    createBufferSet(sizeof(UBO_VP_mats), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
@@ -590,5 +590,5 @@
       { 0, 0, (int)swapChainExtent.width, (int)swapChainExtent.height }, swapChainImages, 138, 138, 10);
 
-   asteroidPipeline = GraphicsPipeline_Vulkan<AsteroidVertex, SSBO_Asteroid>(
+   asteroidPipeline = GraphicsPipeline_Vulkan<ModelVertex, SSBO_Asteroid>(
       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, physicalDevice, device, renderPass,
       { 0, 0, (int)swapChainExtent.width, (int)swapChainExtent.height }, swapChainImages, 24, 36, 10);
@@ -898,5 +898,5 @@
    }
 
-   for (SceneObject<AsteroidVertex, SSBO_Asteroid>& asteroid : this->asteroidObjects) {
+   for (SceneObject<ModelVertex, SSBO_Asteroid>& asteroid : this->asteroidObjects) {
       if (!asteroid.ssbo.deleted) {
          vec3 objCenter = vec3(viewMat * vec4(asteroid.center, 1.0f));
@@ -929,68 +929,68 @@
       this->lastSpawn_asteroid = curTime;
 
-      SceneObject<AsteroidVertex, SSBO_Asteroid>& asteroid = addObject(
-         asteroidObjects, asteroidPipeline,
-         addObjectIndex<AsteroidVertex>(asteroidObjects.size(),
-         addVertexNormals<AsteroidVertex>({
-
-            // front
-            {{ 1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-
-            // top
-            {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-
-            // bottom
-            {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f, -1.0f, -1.0}, {0.4f, 0.4f, 0.4f}},
-
-            // back
-            {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-
-            // right
-            {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{ 1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-
-            // left
-            {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
-            {{-1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
-         })), {
-             0,  1,  2,  3,  4,  5,
-             6,  7,  8,  9, 10, 11,
-            12, 13, 14, 15, 16, 17,
-            18, 19, 20, 21, 22, 23,
-            24, 25, 26, 27, 28, 29,
-            30, 31, 32, 33, 34, 35,
-         }, {
-            mat4(1.0f),
-            10.0f,
-            false
-         }, true);
+      SceneObject<ModelVertex, SSBO_Asteroid>& asteroid =
+         addObject(asteroidObjects, asteroidPipeline,
+            addObjectIndex<ModelVertex>(asteroidObjects.size(),
+               addVertexNormals<ModelVertex>({
+
+                  // front
+                  {{ 1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+
+                  // top
+                  {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+
+                  // bottom
+                  {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f, -1.0f, -1.0}, {0.4f, 0.4f, 0.4f}},
+
+                  // back
+                  {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+
+                  // right
+                  {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{ 1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+
+                  // left
+                  {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f,  1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f,  1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f, -1.0f}, {0.4f, 0.4f, 0.4f}},
+                  {{-1.0f, -1.0f,  1.0f}, {0.4f, 0.4f, 0.4f}},
+               })), {
+                   0,  1,  2,  3,  4,  5,
+                   6,  7,  8,  9, 10, 11,
+                  12, 13, 14, 15, 16, 17,
+                  18, 19, 20, 21, 22, 23,
+                  24, 25, 26, 27, 28, 29,
+                  30, 31, 32, 33, 34, 35,
+               }, {
+                  mat4(1.0f),
+                  10.0f,
+                  false
+               }, true);
 
       // This accounts for the scaling in model_base.
@@ -1070,4 +1070,5 @@
 
    VulkanUtils::destroyVulkanImage(device, floorTextureImage);
+   // START UNREVIEWED SECTION
    VulkanUtils::destroyVulkanImage(device, laserTextureImage);
 
@@ -1079,4 +1080,6 @@
    laserPipeline.cleanupBuffers();
    explosionPipeline.cleanupBuffers();
+
+   // END UNREVIEWED SECTION
 
    vkDestroyCommandPool(device, resourceCommandPool, nullptr);
@@ -1908,5 +1911,5 @@
 
    vec3 intersection(0.0f), closestIntersection(0.0f);
-   SceneObject<AsteroidVertex, SSBO_Asteroid>* closestAsteroid = nullptr;
+   SceneObject<ModelVertex, SSBO_Asteroid>* closestAsteroid = nullptr;
    unsigned int closestAsteroidIndex = -1;
 
@@ -1937,9 +1940,9 @@
       }
 
-      EffectOverTime<AsteroidVertex, SSBO_Asteroid>* eot = nullptr;
+      EffectOverTime<ModelVertex, SSBO_Asteroid>* eot = nullptr;
 
       if (closestAsteroid != nullptr) {
          // TODO: Use some sort of smart pointer instead
-         eot = new EffectOverTime<AsteroidVertex, SSBO_Asteroid>(asteroidPipeline, asteroidObjects, closestAsteroidIndex,
+         eot = new EffectOverTime<ModelVertex, SSBO_Asteroid>(asteroidPipeline, asteroidObjects, closestAsteroidIndex,
             offset_of(&SSBO_Asteroid::hp), curTime, -20.0f);
          effects.push_back(eot);
@@ -1969,5 +1972,5 @@
 // TODO: Determine if I should pass start and end by reference or value since they don't get changed
 // Probably use const reference
-bool VulkanGame::getLaserAndAsteroidIntersection(SceneObject<AsteroidVertex, SSBO_Asteroid>& asteroid,
+bool VulkanGame::getLaserAndAsteroidIntersection(SceneObject<ModelVertex, SSBO_Asteroid>& asteroid,
       vec3& start, vec3& end, vec3& intersection) {
    /*
