Commit ff30ab00 authored by Benjamin Castel's avatar Benjamin Castel
Browse files

feat: Enabled asteroid/missile collision, killing missilles when beyond skybox

parent bbd29ed6
Loading
Loading
Loading
Loading
+26 −0
Changes for src/GlApplication.cpp: 26 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -275,6 +275,19 @@ void GlApplication::updateGame() {
                didP2Die = true;
            }
        }

        for (int asteroidIndex = 0; asteroidIndex < this->m_entities[ModelKeys::ASTEROID].size(); ++asteroidIndex) {
            std::shared_ptr<Entity> asteroid = this->m_entities[ModelKeys::ASTEROID][asteroidIndex];
            if (missile->check_box_intersection(this->m_models[ModelKeys::LASER_1], *asteroid.get(), this->m_models[ModelKeys::ASTEROID])) {
                this->m_entities[ModelKeys::LASER_1].erase(this->m_entities[ModelKeys::LASER_1].begin()+index);
                std::cout << "A missile hit an asteroid !" << std::endl;
            }
        }

        if (!missile->check_box_intersection(this->m_models[ModelKeys::LASER_1], *this->m_entities[ModelKeys::SKYBOX][0], this->m_models[ModelKeys::SKYBOX])) {
                this->m_entities[ModelKeys::LASER_1].erase(this->m_entities[ModelKeys::LASER_1].begin()+index);
                std::cout << "A missile went beyond the limits" << std::endl;
        }
    }

    for (int index = this->m_entities[ModelKeys::LASER_2].size()-1; index != -1; --index) {
@@ -289,6 +302,19 @@ void GlApplication::updateGame() {
                didP1Die = true;
            }
        }

        for (int asteroidIndex = 0; asteroidIndex < this->m_entities[ModelKeys::ASTEROID].size(); ++asteroidIndex) {
            std::shared_ptr<Entity> asteroid = this->m_entities[ModelKeys::ASTEROID][asteroidIndex];
            if (missile->check_box_intersection(this->m_models[ModelKeys::LASER_2], *asteroid.get(), this->m_models[ModelKeys::ASTEROID])) {
                this->m_entities[ModelKeys::LASER_2].erase(this->m_entities[ModelKeys::LASER_2].begin()+index);
                std::cout << "A missile hit an asteroid !" << std::endl;
            }
        }

        if (!missile->check_box_intersection(this->m_models[ModelKeys::LASER_2], *this->m_entities[ModelKeys::SKYBOX][0], this->m_models[ModelKeys::SKYBOX])) {
                this->m_entities[ModelKeys::LASER_2].erase(this->m_entities[ModelKeys::LASER_2].begin()+index);
                std::cout << "A missile went beyond the limits" << std::endl;
        }
    }
    
    GLFWwindow *window = glfwGetCurrentContext();