Пример #1
0
void GameLayer::onEnter() {
  Layer::onEnter();

  createParticleManager();
  createStreakManager();
  createCollisionManager();
  createKeyboardManager();
  createTouchManager();
}
Пример #2
0
void View::initStatue(){
    //whee different shader progs
    //ResourceLoader::initializeGlew();
    m_statueShaderProgramID = ResourceLoader::createShaderProgram(":/shaders/statue.vert", ":/shaders/statue.frag");

    m_uniformLocs["p"]= glGetUniformLocation(m_statueShaderProgramID, "p");
    m_uniformLocs["m"]= glGetUniformLocation(m_statueShaderProgramID, "m");
    m_uniformLocs["v"]= glGetUniformLocation(m_statueShaderProgramID, "v");
    m_uniformLocs["allBlack"]= glGetUniformLocation(m_statueShaderProgramID, "allBlack");
    m_uniformLocs["ambient_color"] = glGetUniformLocation(m_statueShaderProgramID, "ambient_color");
    m_uniformLocs["diffuse_color"] = glGetUniformLocation(m_statueShaderProgramID, "diffuse_color");
    m_uniformLocs["specular_color"] = glGetUniformLocation(m_statueShaderProgramID, "specular_color");
    m_uniformLocs["shininess"] = glGetUniformLocation(m_statueShaderProgramID, "shininess");
    m_uniformLocs["useTexture"] = glGetUniformLocation(m_statueShaderProgramID, "useTexture");
    m_uniformLocs["tex"] = glGetUniformLocation(m_statueShaderProgramID, "tex");
    m_uniformLocs["blend"] = glGetUniformLocation(m_statueShaderProgramID, "blend");

    CS123SceneLightData light;
    light.color = CS123SceneColor{.6, .6, .6, 1};
    light.function = glm::vec3(1, 0, 0);
    light.id = 0;
    light.pos = glm::vec4(0, 20, 0, 1);
    light.type = LIGHT_POINT;
    addLight(light);
    light.pos = glm::vec4(10, -10, 0, 1);
    addLight(light);
    m_global.ka = .5;
    m_global.kd = .5;
    m_global.ks = .25;

    int detail = 10;
    for (int i = 0; i < 5; i++){
        primitives[i]->init();
        primitives[i]->setT1(detail);
        primitives[i]->setT2(detail);
        primitives[i]->setT3(detail);
        primitives[i]->bufferVerts(m_statueShaderProgramID);
    }

    int num_statues = rand() % 6 + 1;
    for (int i = 0; i < num_statues; i++){
        float x = Statue::floatRange(-14, 14);
        float quote_y_unquote = Statue::floatRange(-14, 14);
        if (i == 0){
            x = 0.01;
            quote_y_unquote = 0.01;
        }
        {
            glm::vec3 xyz = glm::vec3(x, m_terrain.getHeight(quote_y_unquote, x), quote_y_unquote);
            glm::mat4 transform = glm::translate(xyz)
                    * glm::scale(glm::vec3(.2, .2, .2))
                    * Statue::rotateTo(glm::vec4(0, 1, 0, 0), glm::vec4(m_terrain.getNormalVec(quote_y_unquote, x), 0))
                    * glm::rotate(static_cast<float>(Statue::floatRange(0, 2) * M_PI), glm::vec3(0, 1, 0));
            Statue *s = new Statue(transform);
            m_statues.push_back(s);
        }
        x += Statue::intRange(0, 1) * 4 - 2;
        quote_y_unquote += Statue::intRange(0, 1) * 4 - 2;
        {
            glm::vec3 xyz = glm::vec3(x, m_terrain.getHeight(quote_y_unquote, x), quote_y_unquote);
            glm::mat4 transform = glm::translate(xyz)
                    * glm::scale(glm::vec3(.2, .2, .2))
                    * Statue::rotateTo(glm::vec4(0, 1, 0, 0), glm::vec4(m_terrain.getNormalVec(quote_y_unquote, x), 0))
                    * glm::rotate(static_cast<float>(Statue::floatRange(0, 2) * M_PI), glm::vec3(0, 1, 0));
            Statue *s = new Statue(transform);
            m_statues.push_back(s);
        }
    }

    for (std::vector<Statue*>::const_iterator iter = m_statues.begin();
         iter != m_statues.end(); iter++){
        Statue* stat = *iter;
        int particleNum = Statue::intRange(0, 5);
        for (std::vector<Statue::DoubleVec>::const_iterator iter = stat->getParticles()->begin();
             iter != stat->getParticles()->end(); iter++){
            Statue::DoubleVec db = *iter;

            std::string particlePath;
            switch (particleNum){
            case 0:
                particlePath = ":/images/particle1.bmp";
                break;
            case 1:
                particlePath = ":/images/particle2.bmp";
                break;
            case 2:
                particlePath = ":/images/acid-front.jpg";
                break;
            case 3:
                particlePath = ":/images/fireball-front.jpg";
                break;
            case 4:
                particlePath = ":/images/starfield-300x300.jpg";
                break;
            default:
            case 5:
                particlePath = ":/images/particle3.jpg";
                break;
            }

            createParticleManager(glm::vec3(db.point),300,0.05f,particlePath,glm::vec3(1.0f,0.5f,0.2f),glm::vec3(0.0f,0.0001f,0.0f),(80.0f/100000.f),25.0f,glm::vec3(db.dir));
        }
    }
}
Пример #3
0
		RID ParticleManagerParser::parse(JSONReader& reader, int childIndex) {
			ParticleSystemsDescriptor descriptor;
			reader.get(childIndex, "sprite_buffer", &descriptor.spriteBuffer);
			const char* name = reader.get_string(childIndex, "name");
			return createParticleManager(descriptor);
		}