Index: new-game.cpp
===================================================================
--- new-game.cpp	(revision 646f3f23c788c9af8bbfaddee73fd4fb874cd3ff)
+++ new-game.cpp	(revision 39ac76df37c4c13e06298da0f432ba37aa6d05b7)
@@ -70,5 +70,4 @@
    vector<GLfloat> texcoords;
    vector<GLfloat> normals;
-   vector<GLfloat> selected_colors;
    bool deleted;
    vec3 bounding_center;
@@ -92,4 +91,5 @@
    SceneObject* effectedObject;
 
+   // TODO: Why not just use an initializer list for all the instance variables
    EffectOverTime(float& effectedValue, float changePerSecond, SceneObject* object)
       : effectedValue(effectedValue), changePerSecond(changePerSecond), effectedObject(object) {
@@ -139,5 +139,4 @@
                   GLuint points_vbo,
                   GLuint colors_vbo,
-                  GLuint selected_colors_vbo,
                   GLuint texcoords_vbo,
                   GLuint normals_vbo,
@@ -152,5 +151,4 @@
                   GLuint* points_vbo,
                   GLuint* colors_vbo,
-                  GLuint* selected_colors_vbo,
                   GLuint* texcoords_vbo,
                   GLuint* normals_vbo,
@@ -162,5 +160,4 @@
                   GLuint points_vbo,
                   GLuint colors_vbo,
-                  GLuint selected_colors_vbo,
                   GLuint texcoords_vbo,
                   GLuint normals_vbo,
@@ -172,5 +169,4 @@
                   GLuint points_vbo,
                   GLuint colors_vbo,
-                  GLuint selected_colors_vbo,
                   GLuint texcoords_vbo,
                   GLuint normals_vbo,
@@ -183,5 +179,4 @@
                   GLuint points_vbo,
                   GLuint colors_vbo,
-                  GLuint selected_colors_vbo,
                   GLuint texcoords_vbo,
                   GLuint normals_vbo,
@@ -206,8 +201,7 @@
 
 void renderScene(map<GLuint, BufferInfo>& shaderBufferInfo,
-                  GLuint color_sp, GLuint asteroid_sp, GLuint texture_sp, GLuint laser_sp, GLuint explosion_sp,
-                  GLuint color_vao, GLuint asteroid_vao, GLuint texture_vao, GLuint laser_vao, GLuint explosion_vao,
-                  GLuint colors_vbo, GLuint selected_colors_vbo, GLuint ubo,
-                  SceneObject* selectedObject);
+                  GLuint ship_sp, GLuint asteroid_sp, GLuint laser_sp, GLuint explosion_sp,
+                  GLuint ship_vao, GLuint asteroid_vao, GLuint laser_vao, GLuint explosion_vao,
+                  GLuint colors_vbo, GLuint ubo, SceneObject* selectedObject);
 
 void renderSceneGui();
@@ -451,15 +445,11 @@
    map<GLuint, BufferInfo> shaderBufferInfo;
 
-   // TODO: Rename color_sp to ship_sp and comment out texture_sp)
-
-   GLuint color_sp = loadShaderProgram("./ship.vert", "./ship.frag");
+   GLuint ship_sp = loadShaderProgram("./ship.vert", "./ship.frag");
    GLuint asteroid_sp = loadShaderProgram("./asteroid.vert", "./asteroid.frag");
-   GLuint texture_sp = loadShaderProgram("./texture.vert", "./texture.frag");
    GLuint laser_sp = loadShaderProgram("./laser.vert", "./laser.frag");
    GLuint explosion_sp = loadShaderProgram("./explosion.vert", "./explosion.frag");
 
-   shaderBufferInfo[color_sp] = BufferInfo();
+   shaderBufferInfo[ship_sp] = BufferInfo();
    shaderBufferInfo[asteroid_sp] = BufferInfo();
-   shaderBufferInfo[texture_sp] = BufferInfo();
    shaderBufferInfo[laser_sp] = BufferInfo();
    shaderBufferInfo[explosion_sp] = BufferInfo();
@@ -470,16 +460,14 @@
 
    // player ship
-   SceneObject* ship = createShip(color_sp);
+   SceneObject* ship = createShip(ship_sp);
    objects.push_back(ship);
 
    vector<SceneObject>::iterator obj_it;
 
-   GLuint points_vbo, colors_vbo, selected_colors_vbo, texcoords_vbo,
-      normals_vbo, ubo, model_mat_idx_vbo;
+   GLuint points_vbo, colors_vbo, texcoords_vbo, normals_vbo, ubo, model_mat_idx_vbo;
 
    initializeBuffers(
       &points_vbo,
       &colors_vbo,
-      &selected_colors_vbo,
       &texcoords_vbo,
       &normals_vbo,
@@ -491,5 +479,4 @@
       points_vbo,
       colors_vbo,
-      selected_colors_vbo,
       texcoords_vbo,
       normals_vbo,
@@ -498,7 +485,7 @@
       asteroid_sp);
 
-   GLuint color_vao = 0;
-   glGenVertexArrays(1, &color_vao);
-   glBindVertexArray(color_vao);
+   GLuint ship_vao = 0;
+   glGenVertexArrays(1, &ship_vao);
+   glBindVertexArray(ship_vao);
 
    glEnableVertexAttribArray(0);
@@ -534,25 +521,4 @@
    glBindBuffer(GL_ARRAY_BUFFER, colors_vbo);
    glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, NULL);
-
-   glBindBuffer(GL_ARRAY_BUFFER, normals_vbo);
-   glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, NULL);
-
-   glBindBuffer(GL_ARRAY_BUFFER, model_mat_idx_vbo);
-   glVertexAttribIPointer(3, 1, GL_UNSIGNED_INT, 0, NULL);
-
-   GLuint texture_vao = 0;
-   glGenVertexArrays(1, &texture_vao);
-   glBindVertexArray(texture_vao);
-
-   glEnableVertexAttribArray(0);
-   glEnableVertexAttribArray(1);
-   glEnableVertexAttribArray(2);
-   glEnableVertexAttribArray(3);
-
-   glBindBuffer(GL_ARRAY_BUFFER, points_vbo);
-   glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
-
-   glBindBuffer(GL_ARRAY_BUFFER, texcoords_vbo);
-   glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, NULL);
 
    glBindBuffer(GL_ARRAY_BUFFER, normals_vbo);
@@ -616,5 +582,4 @@
       points_vbo,
       colors_vbo,
-      selected_colors_vbo,
       texcoords_vbo,
       normals_vbo,
@@ -624,16 +589,11 @@
    GLuint ub_binding_point = 0;
 
-   // TODO: Replace test_loc and mat_loc with more descriptive names
-   GLuint view_test_loc = glGetUniformLocation(color_sp, "view");
-   GLuint proj_test_loc = glGetUniformLocation(color_sp, "proj");
-   GLuint color_sp_models_ub_index = glGetUniformBlockIndex(color_sp, "models");
+   GLuint ship_view_mat_loc = glGetUniformLocation(ship_sp, "view");
+   GLuint ship_proj_mat_loc = glGetUniformLocation(ship_sp, "proj");
+   GLuint ship_sp_models_ub_index = glGetUniformBlockIndex(ship_sp, "models");
 
    GLuint asteroid_view_mat_loc = glGetUniformLocation(asteroid_sp, "view");
    GLuint asteroid_proj_mat_loc = glGetUniformLocation(asteroid_sp, "proj");
    GLuint asteroid_sp_models_ub_index = glGetUniformBlockIndex(asteroid_sp, "models");
-
-   GLuint view_mat_loc = glGetUniformLocation(texture_sp, "view");
-   GLuint proj_mat_loc = glGetUniformLocation(texture_sp, "proj");
-   GLuint texture_sp_models_ub_index = glGetUniformBlockIndex(texture_sp, "models");
 
    GLuint laser_view_mat_loc = glGetUniformLocation(laser_sp, "view");
@@ -647,9 +607,9 @@
 
 
-   glUseProgram(color_sp);
-   glUniformMatrix4fv(view_test_loc, 1, GL_FALSE, value_ptr(view_mat));
-   glUniformMatrix4fv(proj_test_loc, 1, GL_FALSE, value_ptr(proj_mat));
-
-   glUniformBlockBinding(color_sp, color_sp_models_ub_index, ub_binding_point);
+   glUseProgram(ship_sp);
+   glUniformMatrix4fv(ship_view_mat_loc, 1, GL_FALSE, value_ptr(view_mat));
+   glUniformMatrix4fv(ship_proj_mat_loc, 1, GL_FALSE, value_ptr(proj_mat));
+
+   glUniformBlockBinding(ship_sp, ship_sp_models_ub_index, ub_binding_point);
    glBindBufferRange(GL_UNIFORM_BUFFER, ub_binding_point, ubo, 0, GL_MAX_UNIFORM_BLOCK_SIZE);
 
@@ -660,12 +620,4 @@
 
    glUniformBlockBinding(asteroid_sp, asteroid_sp_models_ub_index, ub_binding_point);
-   glBindBufferRange(GL_UNIFORM_BUFFER, ub_binding_point, ubo, 0, GL_MAX_UNIFORM_BLOCK_SIZE);
-
-
-   glUseProgram(texture_sp);
-   glUniformMatrix4fv(view_mat_loc, 1, GL_FALSE, value_ptr(view_mat));
-   glUniformMatrix4fv(proj_mat_loc, 1, GL_FALSE, value_ptr(proj_mat));
-
-   glUniformBlockBinding(texture_sp, texture_sp_models_ub_index, ub_binding_point);
    glBindBufferRange(GL_UNIFORM_BUFFER, ub_binding_point, ubo, 0, GL_MAX_UNIFORM_BLOCK_SIZE);
 
@@ -756,5 +708,4 @@
                points_vbo,
                colors_vbo,
-               selected_colors_vbo,
                texcoords_vbo,
                normals_vbo,
@@ -816,5 +767,4 @@
                points_vbo,
                colors_vbo,
-               selected_colors_vbo,
                texcoords_vbo,
                normals_vbo,
@@ -834,5 +784,4 @@
                points_vbo,
                colors_vbo,
-               selected_colors_vbo,
                texcoords_vbo,
                normals_vbo,
@@ -955,9 +904,6 @@
          //printVector("cam pos", cam_pos);
 
-         glUseProgram(color_sp);
-         glUniformMatrix4fv(view_test_loc, 1, GL_FALSE, value_ptr(view_mat));
-
-         glUseProgram(texture_sp);
-         glUniformMatrix4fv(view_mat_loc, 1, GL_FALSE, value_ptr(view_mat));
+         glUseProgram(ship_sp);
+         glUniformMatrix4fv(ship_view_mat_loc, 1, GL_FALSE, value_ptr(view_mat));
 
          glUseProgram(laser_sp);
@@ -981,8 +927,7 @@
          case STATE_GAME:
             renderScene(shaderBufferInfo,
-               color_sp, asteroid_sp, texture_sp, laser_sp, explosion_sp,
-               color_vao, asteroid_vao, texture_vao, laser_vao, explosion_vao,
-               colors_vbo, selected_colors_vbo, ubo,
-               selectedObject);
+               ship_sp, asteroid_sp, laser_sp, explosion_sp,
+               ship_vao, asteroid_vao, laser_vao, explosion_vao,
+               colors_vbo, ubo, selectedObject);
             renderSceneGui();
             break;
@@ -1338,5 +1283,4 @@
    GLuint points_vbo,
    GLuint colors_vbo,
-   GLuint selected_colors_vbo,
    GLuint texcoords_vbo,
    GLuint normals_vbo,
@@ -1363,5 +1307,4 @@
          points_vbo,
          colors_vbo,
-         selected_colors_vbo,
          texcoords_vbo,
          normals_vbo,
@@ -1373,5 +1316,4 @@
          points_vbo,
          colors_vbo,
-         selected_colors_vbo,
          texcoords_vbo,
          normals_vbo,
@@ -1818,5 +1760,4 @@
    };
    ship->texcoords = { 0.0f };
-   ship->selected_colors = { 0.0f };
 
    mat4 T_model = translate(mat4(1.0f), vec3(0.0f, -1.2f, 1.65f));
@@ -1923,5 +1864,4 @@
                   GLuint* points_vbo,
                   GLuint* colors_vbo,
-                  GLuint* selected_colors_vbo,
                   GLuint* texcoords_vbo,
                   GLuint* normals_vbo,
@@ -1934,7 +1874,4 @@
    glGenBuffers(1, colors_vbo);
 
-   *selected_colors_vbo = 0;
-   glGenBuffers(1, selected_colors_vbo);
-
    *texcoords_vbo = 0;
    glGenBuffers(1, texcoords_vbo);
@@ -1954,5 +1891,4 @@
                   GLuint points_vbo,
                   GLuint colors_vbo,
-                  GLuint selected_colors_vbo,
                   GLuint texcoords_vbo,
                   GLuint normals_vbo,
@@ -2015,5 +1951,4 @@
       points_vbo,
       colors_vbo,
-      selected_colors_vbo,
       texcoords_vbo,
       normals_vbo,
@@ -2029,5 +1964,4 @@
                   GLuint points_vbo,
                   GLuint colors_vbo,
-                  GLuint selected_colors_vbo,
                   GLuint texcoords_vbo,
                   GLuint normals_vbo,
@@ -2110,7 +2044,4 @@
    glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
 
-   glBindBuffer(GL_ARRAY_BUFFER, selected_colors_vbo);
-   glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
-
    glBindBuffer(GL_ARRAY_BUFFER, texcoords_vbo);
    glBufferData(GL_ARRAY_BUFFER, num_points * sizeof(GLfloat) * 2, NULL, GL_DYNAMIC_DRAW);
@@ -2129,5 +2060,4 @@
          points_vbo,
          colors_vbo,
-         selected_colors_vbo,
          texcoords_vbo,
          normals_vbo,
@@ -2142,5 +2072,4 @@
                   GLuint points_vbo,
                   GLuint colors_vbo,
-                  GLuint selected_colors_vbo,
                   GLuint texcoords_vbo,
                   GLuint normals_vbo,
@@ -2172,7 +2101,4 @@
          glBindBuffer(GL_ARRAY_BUFFER, colors_vbo);
          glBufferSubData(GL_ARRAY_BUFFER, obj.vertex_vbo_offset * sizeof(GLfloat) * 3, obj.colors.size() * sizeof(GLfloat), &obj.colors[0]);
-
-         glBindBuffer(GL_ARRAY_BUFFER, selected_colors_vbo);
-         glBufferSubData(GL_ARRAY_BUFFER, obj.vertex_vbo_offset * sizeof(GLfloat) * 3, obj.selected_colors.size() * sizeof(GLfloat), &obj.selected_colors[0]);
 
          glBindBuffer(GL_ARRAY_BUFFER, normals_vbo);
@@ -2358,26 +2284,12 @@
 
 void renderScene(map<GLuint, BufferInfo>& shaderBufferInfo,
-                  GLuint color_sp, GLuint asteroid_sp, GLuint texture_sp, GLuint laser_sp, GLuint explosion_sp,
-                  GLuint color_vao, GLuint asteroid_vao, GLuint texture_vao, GLuint laser_vao, GLuint explosion_vao,
-                  GLuint colors_vbo, GLuint selected_colors_vbo, GLuint ubo,
-                  SceneObject* selectedObject) {
-
-   glUseProgram(color_sp);
-   glBindVertexArray(color_vao);
-
-   /*
-   if (selectedObject != NULL) {
-      glBindBuffer(GL_ARRAY_BUFFER, selected_colors_vbo);
-      glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, NULL);
-
-      glDrawArrays(GL_TRIANGLES, selectedObject->vertex_vbo_offset, selectedObject->num_points);
-   }
-   */
-
-   // Uncomment this code when I want to use selected colors again
-   // glBindBuffer(GL_ARRAY_BUFFER, colors_vbo);
-   // glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, NULL);
-
-   glDrawArrays(GL_TRIANGLES, shaderBufferInfo[color_sp].vbo_base, shaderBufferInfo[color_sp].vbo_offset);
+                  GLuint ship_sp, GLuint asteroid_sp, GLuint laser_sp, GLuint explosion_sp,
+                  GLuint ship_vao, GLuint asteroid_vao, GLuint laser_vao, GLuint explosion_vao,
+                  GLuint colors_vbo, GLuint ubo, SceneObject* selectedObject) {
+
+   glUseProgram(ship_sp);
+   glBindVertexArray(ship_vao);
+
+   glDrawArrays(GL_TRIANGLES, shaderBufferInfo[ship_sp].vbo_base, shaderBufferInfo[ship_sp].vbo_offset);
 
    glUseProgram(asteroid_sp);
@@ -2386,9 +2298,4 @@
    glDrawArrays(GL_TRIANGLES, shaderBufferInfo[asteroid_sp].vbo_base, shaderBufferInfo[asteroid_sp].vbo_offset);
 
-   glUseProgram(texture_sp);
-   glBindVertexArray(texture_vao);
-
-   glDrawArrays(GL_TRIANGLES, shaderBufferInfo[texture_sp].vbo_base, shaderBufferInfo[texture_sp].vbo_offset);
-
    glEnable(GL_BLEND);
 
@@ -2397,4 +2304,7 @@
 
    glDrawArrays(GL_TRIANGLES, shaderBufferInfo[laser_sp].vbo_base, shaderBufferInfo[laser_sp].vbo_offset);
+
+   // To render explosions, my new shader descriptor object needs to have a refernece to the shader and the vao
+   // and know the number of points to render.
 
    glUseProgram(explosion_sp);
@@ -2616,5 +2526,4 @@
    };
    obj->texcoords = { 0.0f };
-   obj->selected_colors = { 0.0f };
 
    mat4 T = translate(mat4(1.0f), pos);
