void Spaceman::updateAction(const vector<GravObject*> *g_objs) { switch (_action) { case Action::STILL: { _action = Action::RUNNING; break; } case Action::RUNNING: { if (_on_planet_region == -1) { // FIXME // float speed = ((_facing == RIGHT) ? _running_speed : -_running_speed)/((_on_planet->getWidth()/150)*2); // Point2D pt = Math::rotatePtAroundPt(_on_planet->getCentre(), getCentre(), speed); // // setX(pt.getX() - (getWidth()/2)); // setY(pt.getY() - (getHeight()/2)); } else { if (_facing == RIGHT) { setX(getX() + (_running_speed*_running_unit_vector.getX())); setY(getY() + (_running_speed*_running_unit_vector.getY())); } else { setX(getX() + (_running_speed*-_running_unit_vector.getX())); setY(getY() + (_running_speed*-_running_unit_vector.getY())); } } break; } case Action::FLYING: case Action::LANDING: { // Convert angle to anti-clockwise direction float angle = Math::normalizeAngle(180 - getRotAngle(), 0, 360); // Thrust up Physics::genInitVel(*this, angle, PLAYER_THRUST_MIN_INIT_V, PLAYER_THRUST_MAX_INIT_V, PLAYER_THRUST_OFFSET); resetTime(Game::getElapsedTime()); _trail.buildTrail(_base.getX(), _base.getY(), 360 - getRotAngle(), _colour_theme); break; } } // Animate if (_frame < 29) _frame++; else _frame = 0; }
void Spaceman::draw(PlayerRenderer* rend, TextureHandler *tex) { // Render rend->render(getVerticeData(), Colour::getColour(_colour_theme), TextureHandler::calcTexVerticesFromSpritesheet(1925, 2760, 5, 6, _frame, (_facing != RIGHT)), tex->getTex(TEX_SPACEMAN), getRotAngle(), GL_TRIANGLE_STRIP); }
void RigidBody::processBodyRot_() { if(!body_) { return; } float rx = getRotX(); float ry = getRotY(); float rz = getRotZ(); float ra = getRotAngle(); // Stop setting invalid rotations that crash bullet... if(rx == 0.0 && ry == 0.0 && rz == 0.0) { rx = 1.0; } btTransform xform; xform = getBody().getWorldTransform(); xform.setRotation(btQuaternion (btVector3(rx, ry, rz), ra*(PI/180))); //((btPairCachingGhostObject*)body_)->setWorldTransform (xform); body_->setWorldTransform (xform); }
void cSphere::render(float rotAngle) { glMatrixMode(GL_MODELVIEW); glPushMatrix(); glEnable(GL_TEXTURE_2D); glEnable(GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); glBindTexture(GL_TEXTURE_2D, m_TextureID); glTranslatef(m_Position.x, m_Position.y, m_Position.z); glRotatef(90.0f, 1.0f, 0.0f, 0.0f); // Rotate Sphere to take account of gluSphere caps glRotatef(getRotAngle(), 0, 0, 1); // Rotation is now on z rather than Y to make sphere spin gluSphere(quad, sRadius, sSlices, sStacks); glDisable(GL_NORMALIZE); glDisable(GL_COLOR_MATERIAL); glDisable(GL_TEXTURE_2D); glPopMatrix(); }
task main() { initializeRobot(); // waitForStart(); ClearTimer(T1); ClearTimer(T2); while (true) { getJoyValues(); DriveUpdate(); //dangerous //motor[Mtr_ParaLift] = armjy1; //motor[Mtr_RingSlider] = armjy2; //if(armButton4) putPullSliderAllOut(); //if(armButton2) putPullSliderAllIn(); //if(armButton3) adjustPullSlider(-1.0); //if(armButton1) adjustPullSlider(1.0); //slider control on arm right joystick //pulling forward backward if(abs(armjy2)>0) { f_pullTarget+=0.002*armjy2; putPullSliderTo(f_pullTarget); B_adjustingPull=true; } else { f_pullTarget=getPullSliderPosition(); B_adjustingPull=false; } if(abs(armjx2)>0) { f_rotTarget+=0.002*armjx2; putRotServoTo(f_rotTarget); B_adjustingRot=true; } else { f_rotTarget=getRotAngle(); B_adjustingRot=false; } //arm control of ringslider //would be better with encoder! motor[Mtr_RingSlider] = armjy1; //driver control of parallel lifter and emergency if(driveButton9) globalAbort();//!!!!!!!!!!!!!! /////////////////////////////////////////////////////// if(driveButton4) { B_liftTargetSet=true; f_targetHeight=36.0; } if(driveButton3) { B_liftTargetSet=true; f_targetHeight=18.0; } if(driveButton2) { B_liftTargetSet=true; f_targetHeight=0.0; } if(driveButton1) { B_liftTargetSet=false; } //actual control of lift motors is here if(B_liftTargetSet){ if(PL_set_height_target(f_targetHeight)==0){ B_liftTargetSet=false; //reached target }; } else{ if(driveTopHat==0) motor[Mtr_ParaLift]= 100; if(driveTopHat==4) motor[Mtr_ParaLift]=-100; if(driveTopHat==-1) motor[Mtr_ParaLift]= 0; } } }