示例#1
0
void addTrees() {
    for(int i = 0; i < 150; i++) {
        Part * trunk = new Part(ID_TREE_BARK, textureMapCylinder, cylMesh, -1);
        Part * top = new Part(treeTopMesh, -1);
        parts.push_back(trunk);
        trunk->addChild(top);
        
        int area = WORLD_SZ;
        int xLoc = (rand() % area*2) - area;
        int zLoc = (rand() % area * 0.2) - area;
        int yLoc = -10;
        
        float scaleRand = getRandFloat01() - 0.3;
        
        float scale1 = 1.75f + scaleRand;
        float scale2 = scale1*3;
        trunk->addScale(scale1/4.0, scale1*3, scale1/4.0);
        trunk->addTranslation(xLoc, yLoc, zLoc);
        float trunkG = 0.05;
        float trunkR = 0.1;
        trunk->setMaterialAmbient(trunkR, trunkG, 0.0, 1.0);
        trunk->setMaterialDiffuse(trunkR, trunkG, 0.0, 1.0);
        trunk->setMaterialSpecular(0, 0, 0, 1.0);
        trunk->setMaterialShininess(0);
        
        float topR = 0.05;
        float topG = 0.2;
        float topB = 0.05;
        top->addScale(scale2, scale2/4, scale2);
        top->addTranslation(0, 150, 0);
        top->setMaterialAmbient(topR, topG, topB, 1.0);
        top->setMaterialDiffuse(topR, topG, topB, 1.0);
        top->setMaterialSpecular(0, 0, 0, 1.0);
        top->setMaterialShininess(0);
    }
}
示例#2
0
void addDeathStar() {
    Part * deathStar = new Part(ID_METAL, textureMapSphere1, sphereMesh, -1);
    int dsScale = 15;
    
    float amb = 1.0;
    float diff = 1.0;
    float spec = 1.0;
    deathStar->addScale(dsScale, dsScale, dsScale);
    deathStar->addTranslation(-7000, 4000, -19250);
    deathStar->setMaterialAmbient(amb, amb, amb, 1.0);
    deathStar->setMaterialDiffuse(diff, diff, diff, 1.0);
    deathStar->setMaterialSpecular(spec, spec, spec, 1.0);
    deathStar->setMaterialShininess(1.0);
    parts.push_back(deathStar);
}
示例#3
0
void addMoon() {
    Part * moon = new Part(sphereMesh, -1);
    int scale = 4;
    
    float amb = 1.0;
    float diff = 0.9;
    float spec = 1.0;
    moon->addScale(0.75 * scale, scale, scale);
    moon->addTranslation(7000, 5000, -18000);
    moon->setMaterialAmbient(amb, amb, amb*0.3, 1.0);
    moon->setMaterialDiffuse(diff, diff, diff, 1.0);
    moon->setMaterialSpecular(spec, spec, spec, 1.0);
    moon->setMaterialShininess(1.0);
    parts.push_back(moon);
    
}
示例#4
0
void addNightStars() {
    for(int i = 0; i < 150; i++) {
        Part * star = new Part(starMesh, -1);
        int area = WORLD_SZ * 0.5;
        int xLoc = (rand() % area) - area/2;
        int zLoc = (rand() % area) - area;
        int yLoc = (rand() % 5000) + 1000;
        float starScale = 0.25*getRandFloat01();
        star->addScale(starScale, starScale, starScale);
        star->addTranslation(xLoc, yLoc, zLoc);
        star->setMaterialAmbient(getRandFloat01(), getRandFloat01(), getRandFloat01(), 1.0);
        star->setMaterialDiffuse(getRandFloat01(), getRandFloat01(), getRandFloat01(), 1.0);
        star->setMaterialSpecular(1.0, 1.0, 1.0, 1.0);
        star->setMaterialShininess(1.0);
        parts.push_back(star);
    }
}