예제 #1
0
 Primitive* Schlange::createSegment(int index, const OdeHandle& odeHandle){
   Primitive* p;
   p = new Capsule(conf.segmDia * 0.8, conf.segmLength);
   // if (index==0) 
   //   p = new Box(conf.segmLength*.1,conf.segmLength*.9, conf.segmLength*.6);
   p->setTexture("Images/whitemetal_farbig_small.rgb");
   p->init(odeHandle, conf.segmMass, osgHandle);
   if(index==0)
     p->setColor(conf.headColor);
   else
     p->setColor(conf.bodyColor);
   return p;
 }
예제 #2
0
파일: commands.cpp 프로젝트: jjoo172/CS171
bool Commands::prmSetColor(int argc, char** argv) {
    const Line* cur_state = CommandLine::getState();

    // if state is blank we have nothing selected
    // print error message and skip
    if (cur_state) {
        if (cur_state->toCommandID() == Commands::primitive_get_cmd_id) {
            float r = atof(argv[1]);
            float g = atof(argv[2]);
            float b = atof(argv[3]);
            if (r >= 0.0 && g >= 0.0 && b >= 0.0 &&
                r <= 1.0 && g <= 1.0 && b <= 1.0)
            {
                Primitive* prm = dynamic_cast<Primitive*>(
                    Renderable::get(cur_state->tokens[1]));
                prm->setColor(r, g, b);
                return true;
            } else {
                fprintf(stderr, "ERROR input values for %s must be 3 numerical values between 0.0 and 1.0 (inclusive)\n",
                    argv[0]);
            }
        } else {
            fprintf(stderr, "ERROR %s requires that you have a Primitive selected\n",
                argv[0]);
        }
    } else {
        fprintf(stderr, "ERROR %s requires that you have a Primitive selected\n",
            argv[0]);
    }
    return false;
}