Index: new-game.cpp
===================================================================
--- new-game.cpp	(revision 92b1e905717bfee4d6224c425a682082b6309252)
+++ new-game.cpp	(revision 6877ef354ff33fcdc2172e9c02a4a0e016a4df57)
@@ -41,4 +41,5 @@
  *    -The laser shader should take an input color to blend with the texture to give the lasers color
  * -The lasers should be SceneObjects and drawn like all other objects
+ *    -DONE
  * -Make lasers shoot from the ends of the ship's wings when the user presses a button and disappear after a second or so
  */
@@ -116,7 +117,5 @@
                   GLuint normals_vbo,
                   GLuint ubo,
-                  GLuint model_mat_idx_vbo,
-                  GLuint laser_points_vbo,
-                  GLuint laser_colors_vbo);
+                  GLuint model_mat_idx_vbo);
 void removeObjectFromScene(SceneObject& obj, GLuint ubo);
 
@@ -132,7 +131,5 @@
                   GLuint* normals_vbo,
                   GLuint* ubo,
-                  GLuint* model_mat_idx_vbo,
-                  GLuint* laser_points_vbo,
-                  GLuint* laser_colors_vbo);
+                  GLuint* model_mat_idx_vbo);
 
 void populateBuffers(vector<SceneObject>& objects,
@@ -144,7 +141,5 @@
                   GLuint normals_vbo,
                   GLuint ubo,
-                  GLuint model_mat_idx_vbo,
-                  GLuint laser_points_vbo,
-                  GLuint laser_colors_vbo);
+                  GLuint model_mat_idx_vbo);
 
 void copyObjectDataToBuffers(SceneObject& obj,
@@ -156,7 +151,5 @@
                   GLuint normals_vbo,
                   GLuint ubo,
-                  GLuint model_mat_idx_vbo,
-                  GLuint laser_points_vbo,
-                  GLuint laser_colors_vbo);
+                  GLuint model_mat_idx_vbo);
 
 void transformObject(SceneObject& obj, const mat4& transform, GLuint ubo);
@@ -167,5 +160,5 @@
 void renderScene(map<GLuint, BufferInfo>& shaderBufferInfo,
                   GLuint color_sp, GLuint texture_sp, GLuint laser_sp,
-                  GLuint color_vao, GLuint texture_vao, GLuint laser_vao,
+                  GLuint color_vao, GLuint texture_vao,
                   GLuint colors_vbo, GLuint selected_colors_vbo,
                   SceneObject* selectedObject);
@@ -180,7 +173,5 @@
                   GLuint normals_vbo,
                   GLuint ubo,
-                  GLuint model_mat_idx_vbo,
-                  GLuint laser_points_vbo,
-                  GLuint laser_colors_vbo);
+                  GLuint model_mat_idx_vbo);
 
 float getRandomNum(float low, float high);
@@ -850,5 +841,5 @@
 
    GLuint points_vbo, colors_vbo, selected_colors_vbo, texcoords_vbo,
-      normals_vbo, ubo, model_mat_idx_vbo, laser_points_vbo, laser_colors_vbo;
+      normals_vbo, ubo, model_mat_idx_vbo;
 
    initializeBuffers(
@@ -859,7 +850,5 @@
       &normals_vbo,
       &ubo,
-      &model_mat_idx_vbo,
-      &laser_points_vbo,
-      &laser_colors_vbo);
+      &model_mat_idx_vbo);
 
    populateBuffers(objects,
@@ -871,7 +860,5 @@
       normals_vbo,
       ubo,
-      model_mat_idx_vbo,
-      laser_points_vbo,
-      laser_colors_vbo);
+      model_mat_idx_vbo);
 
    GLuint color_vao = 0;
@@ -913,17 +900,4 @@
    glBindBuffer(GL_ARRAY_BUFFER, model_mat_idx_vbo);
    glVertexAttribIPointer(3, 1, GL_UNSIGNED_INT, 0, 0);
-
-   GLuint laser_vao = 0;
-   glGenVertexArrays(1, &laser_vao);
-   glBindVertexArray(laser_vao);
-
-   glEnableVertexAttribArray(0);
-   glEnableVertexAttribArray(1);
-
-   glBindBuffer(GL_ARRAY_BUFFER, laser_points_vbo);
-   glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
-
-   glBindBuffer(GL_ARRAY_BUFFER, laser_colors_vbo);
-   glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, 0);
 
    float cam_speed = 1.0f;
@@ -1066,7 +1040,5 @@
                normals_vbo,
                ubo,
-               model_mat_idx_vbo,
-               laser_points_vbo,
-               laser_colors_vbo);
+               model_mat_idx_vbo);
 
             elapsed_seconds_spawn -= 0.5f;
@@ -1201,5 +1173,5 @@
             renderScene(shaderBufferInfo,
                color_sp, texture_sp, laser_sp,
-               color_vao, texture_vao, laser_vao,
+               color_vao, texture_vao,
                colors_vbo, selected_colors_vbo,
                selectedObject);
@@ -1457,7 +1429,5 @@
                   GLuint normals_vbo,
                   GLuint ubo,
-                  GLuint model_mat_idx_vbo,
-                  GLuint laser_points_vbo,
-                  GLuint laser_colors_vbo) {
+                  GLuint model_mat_idx_vbo) {
    addObjectToSceneDuringInit(obj);
 
@@ -1475,7 +1445,5 @@
          normals_vbo,
          ubo,
-         model_mat_idx_vbo,
-         laser_points_vbo,
-         laser_colors_vbo);
+         model_mat_idx_vbo);
    } else {
       copyObjectDataToBuffers(objects.back(), shaderBufferInfo,
@@ -1486,7 +1454,5 @@
          normals_vbo,
          ubo,
-         model_mat_idx_vbo,
-         laser_points_vbo,
-         laser_colors_vbo);
+         model_mat_idx_vbo);
    }
 }
@@ -1621,7 +1587,5 @@
                   GLuint* normals_vbo,
                   GLuint* ubo,
-                  GLuint* model_mat_idx_vbo,
-                  GLuint* laser_points_vbo,
-                  GLuint* laser_colors_vbo) {
+                  GLuint* model_mat_idx_vbo) {
    *points_vbo = 0;
    glGenBuffers(1, points_vbo);
@@ -1644,10 +1608,4 @@
    *model_mat_idx_vbo = 0;
    glGenBuffers(1, model_mat_idx_vbo);
-
-   *laser_points_vbo = 0;
-   glGenBuffers(1, laser_points_vbo);
-
-   *laser_colors_vbo = 0;
-   glGenBuffers(1, laser_colors_vbo);
 }
 
@@ -1660,7 +1618,5 @@
                   GLuint normals_vbo,
                   GLuint ubo,
-                  GLuint model_mat_idx_vbo,
-                  GLuint laser_points_vbo,
-                  GLuint laser_colors_vbo) {
+                  GLuint model_mat_idx_vbo) {
    GLsizeiptr points_buffer_size = 0;
    GLsizeiptr textures_buffer_size = 0;
@@ -1721,9 +1677,4 @@
       shaderBufferInfo[shaderIt->first].ubo_base = lastShaderUboCount * 2;
 
-      if (shaderIt->first == 9) { // hack to check for laser_sp
-         shaderBufferInfo[shaderIt->first].vbo_base = 0;
-         shaderBufferInfo[shaderIt->first].ubo_base = 0; // unused now anyway
-      }
-
       cout << "shader: " << shaderIt->first << endl;
       cout << "point counts: " << shaderCounts[shaderIt->first] << endl;
@@ -1764,12 +1715,4 @@
    glBindBuffer(GL_ARRAY_BUFFER, model_mat_idx_vbo);
    glBufferData(GL_ARRAY_BUFFER, model_mat_idx_buffer_size, NULL, GL_DYNAMIC_DRAW);
-
-   unsigned int max_num_lasers = 20;
-
-   glBindBuffer(GL_ARRAY_BUFFER, laser_points_vbo);
-   glBufferData(GL_ARRAY_BUFFER, max_num_lasers * 18 * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
-
-   glBindBuffer(GL_ARRAY_BUFFER, laser_colors_vbo);
-   glBufferData(GL_ARRAY_BUFFER, max_num_lasers * 18 * sizeof(GLfloat) * 3, NULL, GL_DYNAMIC_DRAW);
 
    for (it = objects.begin(); it != objects.end(); it++) {
@@ -1781,7 +1724,5 @@
          normals_vbo,
          ubo,
-         model_mat_idx_vbo,
-         laser_points_vbo,
-         laser_colors_vbo);
+         model_mat_idx_vbo);
    }
 }
@@ -1795,7 +1736,5 @@
                   GLuint normals_vbo,
                   GLuint ubo,
-                  GLuint model_mat_idx_vbo,
-                  GLuint laser_points_vbo,
-                  GLuint laser_colors_vbo) {
+                  GLuint model_mat_idx_vbo) {
    BufferInfo* bufferInfo = &shaderBufferInfo[obj.shader_program];
 
@@ -1803,17 +1742,12 @@
    obj.ubo_offset = bufferInfo->ubo_base + bufferInfo->ubo_offset;
 
-   if (obj.type == TYPE_LASER) {
-      glBindBuffer(GL_ARRAY_BUFFER, laser_points_vbo);
-      glBufferSubData(GL_ARRAY_BUFFER, obj.vertex_vbo_offset * sizeof(GLfloat) * 3, obj.points.size() * sizeof(GLfloat), &obj.points[0]);
-
-      glBindBuffer(GL_ARRAY_BUFFER, laser_colors_vbo);
-      glBufferSubData(GL_ARRAY_BUFFER, obj.vertex_vbo_offset * sizeof(GLfloat) * 3, obj.points.size() * sizeof(GLfloat), &obj.colors[0]);
-   } else {
-      glBindBuffer(GL_ARRAY_BUFFER, points_vbo);
-      glBufferSubData(GL_ARRAY_BUFFER, obj.vertex_vbo_offset * sizeof(GLfloat) * 3, obj.points.size() * sizeof(GLfloat), &obj.points[0]);
-
-      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, points_vbo);
+   glBufferSubData(GL_ARRAY_BUFFER, obj.vertex_vbo_offset * sizeof(GLfloat) * 3, obj.points.size() * sizeof(GLfloat), &obj.points[0]);
+
+   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]);
+
+
+   if (obj.type != TYPE_LASER) {
       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]);
@@ -1851,5 +1785,5 @@
 void renderScene(map<GLuint, BufferInfo>& shaderBufferInfo,
                   GLuint color_sp, GLuint texture_sp, GLuint laser_sp,
-                  GLuint color_vao, GLuint texture_vao, GLuint laser_vao,
+                  GLuint color_vao, GLuint texture_vao,
                   GLuint colors_vbo, GLuint selected_colors_vbo,
                   SceneObject* selectedObject) {
@@ -1876,5 +1810,5 @@
 
    glUseProgram(laser_sp);
-   glBindVertexArray(laser_vao);
+   glBindVertexArray(color_vao);
 
    glDrawArrays(GL_TRIANGLES, shaderBufferInfo[laser_sp].vbo_base, shaderBufferInfo[laser_sp].vbo_offset);
@@ -1980,7 +1914,5 @@
                   GLuint normals_vbo,
                   GLuint ubo,
-                  GLuint model_mat_idx_vbo,
-                  GLuint laser_points_vbo,
-                  GLuint laser_colors_vbo) {
+                  GLuint model_mat_idx_vbo) {
    SceneObject obj = SceneObject();
    obj.type = TYPE_ASTEROID;
@@ -2101,7 +2033,5 @@
                   normals_vbo,
                   ubo,
-                  model_mat_idx_vbo,
-                  laser_points_vbo,
-                  laser_colors_vbo);
+                  model_mat_idx_vbo);
 }
 
