Index: game-gui-sdl.cpp
===================================================================
--- game-gui-sdl.cpp	(revision 3e8cc8b7aef266654d80c142b7d4436950ceba1f)
+++ game-gui-sdl.cpp	(revision 4ece3bfc62afe6a3c7f1ddff0e98daed33f106aa)
@@ -127,4 +127,5 @@
          case SDL_AUDIODEVICEADDED:
          case SDL_AUDIODEVICEREMOVED:
+         case SDL_TEXTINPUT:
          case SDL_TEXTEDITING: // TODO: Research this one later
             event->type = UI_EVENT_UNKNOWN;
Index: new-game.cpp
===================================================================
--- new-game.cpp	(revision 3e8cc8b7aef266654d80c142b7d4436950ceba1f)
+++ new-game.cpp	(revision 4ece3bfc62afe6a3c7f1ddff0e98daed33f106aa)
@@ -731,5 +731,5 @@
       // temporary code to get around vsync issue in OSX Sierra
       if (elapsedTime < (1.0f / TARGET_FPS)) {
-        continue;
+         continue;
       }
 
Index: notes.txt
===================================================================
--- notes.txt	(revision 4ece3bfc62afe6a3c7f1ddff0e98daed33f106aa)
+++ notes.txt	(revision 4ece3bfc62afe6a3c7f1ddff0e98daed33f106aa)
@@ -0,0 +1,14 @@
+Issues with asteroid shader:
+
+- Need to create a system for moving objects independent of fps
+- Storing data for multiple objects in the ssbo probably won't work right now
+- Need to support deleting of objects and should add a deleted flag to the ssbo struct
+
+In opengl-ref, I'm enforcing a maximum fps to control the speed at which objects move or other
+effects-over-time happen.
+
+It's better to not control the fps and just determine the delta for each effect every frame based
+on the elapsed time.
+
+I think Vulkan enforces its own fps anyway (when I wait for each frame to be ready). I should look
+into this more at some point and see if I can disable that to get the true fps for testing purposes.
Index: shaders/asteroid.vert
===================================================================
--- shaders/asteroid.vert	(revision 3e8cc8b7aef266654d80c142b7d4436950ceba1f)
+++ shaders/asteroid.vert	(revision 4ece3bfc62afe6a3c7f1ddff0e98daed33f106aa)
@@ -5,4 +5,5 @@
    mat4 model;
    float hp;
+   bool deleted;
 };
 
@@ -42,4 +43,8 @@
   light2_position_eye = vec3(ubo.view * vec4(light2_position_world, 1.0));
 
-  gl_Position = ubo.proj * vec4(position_eye, 1.0);
+  if (sbo.objects[obj_index].deleted) {
+     gl_Position = vec4(0.0, 0.0, 2.0, 1.0);
+  } else {
+    gl_Position = ubo.proj * vec4(position_eye, 1.0);
+  }
 }
Index: vulkan-game.cpp
===================================================================
--- vulkan-game.cpp	(revision 3e8cc8b7aef266654d80c142b7d4436950ceba1f)
+++ vulkan-game.cpp	(revision 4ece3bfc62afe6a3c7f1ddff0e98daed33f106aa)
@@ -98,5 +98,8 @@
    SDL_VERSION(&sdlVersion);
 
-   cout << "SDL " << sdlVersion.major << "." << sdlVersion.minor << "." << sdlVersion.patch << endl;
+   cout << "SDL "<<
+      to_string(sdlVersion.major) << "." <<
+      to_string(sdlVersion.minor) << "." <<
+      to_string(sdlVersion.patch) << endl;
 
    font = TTF_OpenFont("assets/fonts/lazy.ttf", 28);
@@ -600,6 +603,8 @@
       scale(mat4(1.0f), vec3(0.1f, 0.1f, 0.1f));
 
-   //vec3 pos = vec3(getRandomNum(-1.3f, 1.3f), -1.2f, getRandomNum(-5.5f, -4.5f));
-   vec3 pos = vec3(getRandomNum(-1.3f, 1.3f), -1.2f, -2.0f);
+   // vec3 pos = vec3(getRandomNum(-1.3f, 1.3f), -1.2f, getRandomNum(-5.5f, -4.5f));
+   // vec3 pos = vec3(getRandomNum(-1.3f, 1.3f), -1.2f, -2.0f);
+   // vec3 pos = vec3(1.0f, -1.2f, -1.0f);
+   vec3 pos = vec3(0.0504826f, -1.2f, 1.0f);
 
    asteroidObjects[0].model_base =
@@ -608,4 +613,7 @@
       scale(mat4(1.0f), vec3(0.1f, 0.1f, 0.1f));
    asteroidObjects[0].model_transform = mat4(1.0); // Might not be needed
+
+   so_Asteroid.hp = 10.0f;
+   so_Asteroid.deleted = 0;
 }
 
@@ -655,5 +663,13 @@
    bool quit = false;
 
+   curTime = SDL_GetPerformanceCounter();
+
    while (!quit) {
+
+      prevTime = curTime;
+      curTime = SDL_GetPerformanceCounter();
+
+      elapsedTime = (double)((curTime - prevTime) * 1000 / (double)SDL_GetPerformanceFrequency());
+
       gui->processEvents();
 
@@ -693,4 +709,7 @@
 
                   createCommandBuffers();
+               } else if (e.key.keycode == SDL_SCANCODE_Z) {
+                  cout << "Deleting asteroid..." << endl;
+                  so_Asteroid.deleted = so_Asteroid.deleted == 0 ? 1 : 0;
                } else {
                   cout << "Key event detected" << endl;
@@ -717,12 +736,16 @@
       // Check which keys are held down
 
+      float shipSpeed = 0.0005f;
+      float asteroidSpeed = 0.002f;
+
       if (gui->keyPressed(SDL_SCANCODE_LEFT)) {
-         transformObject(shipObjects[0], translate(mat4(1.0f), vec3(-0.01f, 0.0f, 0.0f)));
+         transformObject(shipObjects[0], translate(mat4(1.0f), vec3(-shipSpeed * elapsedTime, 0.0f, 0.0f)));
       } else if (gui->keyPressed(SDL_SCANCODE_RIGHT)) {
-         transformObject(shipObjects[0], translate(mat4(1.0f), vec3(0.01f, 0.0f, 0.0f)));
+         transformObject(shipObjects[0], translate(mat4(1.0f), vec3(shipSpeed * elapsedTime, 0.0f, 0.0f)));
       }
 
-      // this code moves the asteroids
-      transformObject(asteroidObjects[0], translate(mat4(1.0f), vec3(0.0f, 0.0f, 0.04f)));
+      if (gui->keyPressed(SDL_SCANCODE_DOWN)) {
+         transformObject(asteroidObjects[0], translate(mat4(1.0f), vec3(0.0f, 0.0f, asteroidSpeed * elapsedTime)));
+      }
 
       renderUI();
@@ -750,5 +773,4 @@
 
    so_Asteroid.model = asteroidObjects[0].model_transform * asteroidObjects[0].model_base;
-   so_Asteroid.hp = 10.0;
 
    VulkanUtils::copyDataToMemory(device, uniformBuffersMemory_scenePipeline[currentImage], object_VP_mats);
Index: vulkan-game.hpp
===================================================================
--- vulkan-game.hpp	(revision 3e8cc8b7aef266654d80c142b7d4436950ceba1f)
+++ vulkan-game.hpp	(revision 4ece3bfc62afe6a3c7f1ddff0e98daed33f106aa)
@@ -70,4 +70,5 @@
    alignas(16) mat4 model;
    alignas(4) float hp;
+   alignas(4) unsigned int deleted;
 };
 
@@ -194,4 +195,7 @@
       UBO_VP_mats asteroid_VP_mats;
       SBO_Asteroid so_Asteroid;
+
+      Uint64 curTime, prevTime;
+      double elapsedTime;
 
       bool initWindow(int width, int height, unsigned char guiFlags);
