Example #1
0
void GameEngine::spawnProjectile(Vector3 dir) {
    //Creates a projectile!
    Projectile* obj;
    bool foundProjectile = false;

    for (unsigned int i = 0; i < m_projectiles->size(); i ++) {
        if (!m_projectiles->at(i)->getIsAlive()) {
               obj= m_projectiles->at(i);
               foundProjectile = true;
               break;
        }
    }
    if (!foundProjectile)
        return;

    obj->setIsAlive(true);
    obj->resetLifetime();

    obj->getEmitter()->setPosition(m_camera->center);
    obj->getEmitter()->initParticles();
    obj->getEmitter()->setIsAlive(true);

    //setting up rotation angle for drawing
    Vector3 orthVec = dir.cross(Vector3(5,0,0));
    float angle = -acos(dir.dot(Vector3(1,0,0)) / dir.length()) * 180.0 / 3.14 + 180.0;
    obj->setRotation(orthVec, angle);

    obj->setPosition(m_camera->center);
    obj->setVelocity(dir);
    obj->setIsProjectile();
}