void GameLayer::onEnter() { Layer::onEnter(); createParticleManager(); createStreakManager(); createCollisionManager(); createKeyboardManager(); createTouchManager(); }
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)); } } }
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); }