void Camera::update(UNUSED gdl::Clock const& clock, Binput& input) { bomber::Event event; if (input._default.getMouseWheel().y) zoom(0.05 * input._default.getMouseWheel().y); if (input._default.getKey(SDL_BUTTON_LEFT)) rotate(glm::vec3(0, 1, 0), static_cast<float>(input._default.getMouseDelta().x)); if (input._default.getKey(SDL_BUTTON_RIGHT)) { glm::vec3 delta(input._default.getMouseDelta().x * -0.1, input._default.getMouseDelta().y * 0.1, 0); _target += delta; } if (input._default.getKey(SDLK_KP_PLUS) || input.handleEvent(event, bomber::Event::TriggerLT)) rotate(glm::vec3(-1, 0, 0), 0.10f); if (input._default.getKey(SDLK_KP_MINUS) || input.handleEvent(event, bomber::Event::TriggerRT)) rotate(glm::vec3(1, 0, 0), 0.10f); if (input._default.getKey(SDLK_UP) || input.handleEvent(event, bomber::Event::JoyRightUp)) move(glm::vec3(0, 0, 1)); if (input._default.getKey(SDLK_DOWN) || input.handleEvent(event, bomber::Event::JoyRightDown)) move(glm::vec3(0, 0, -1)); if (input._default.getKey(SDLK_LEFT) || input.handleEvent(event, bomber::Event::JoyRightLeft)) move(glm::vec3(1, 0, 0)); if (input._default.getKey(SDLK_RIGHT) || input.handleEvent(event, bomber::Event::JoyRightRight)) move(glm::vec3(-1, 0, 0)); if (_position == _target) _target += glm::vec3(1, 1, 1); refreshPosition(); }
void sewClothModel() { M3DVector3f temp, displacement; for (int i = 0; i < PTCAMT; i ++) { m3dLoadVector3(displacement, 0.0f, 0.0f, 0.0f); clearForce(i); getInternalForce(i); //sew together getTensionForce(i, ClothCenter, 0.01f); m3dScaleVector3(ClothLnk[i].force, TensionCoefficient); nextPosition(i); m3dSubtractVectors3(temp, ClothLnk[i].next_position, ClothLnk[i].position); m3dAddVectors3(displacement, displacement, temp); } m3dScaleVector3(displacement, (GLfloat)800000/PTCAMT); //printf(" total displace: %.1f %.1f %.1f\n", displacement[0], displacement[1], displacement[2]); m3dAddVectors3(ClothCenter, ClothCenter, displacement); //m3dLoadVector3(TotalDisplacement, 0.0f, 0.0f, 0.0f); refreshPosition(); }
void simulation(void) { //if (true) { // sewClothModel(); //} else if (stepCount == 200){ // for (int i = 0; i < PTCAMT; i ++) { // clearForce(i); // m3dCopyVector3(ClothLnk[i].next_position, ClothLnk[i].position); // } //} else { for (int i = 0; i < PTCAMT; i ++) { clearForce(i); getForce(i); //if ((i>=44 && i<=46)||(i>=54 && i<=56)||(i>=64 && i<=66)) // printf("[%d].force {%.1f, %.1f, %.1f} \n", i, ClothLnk[i].force[0], ClothLnk[i].force[1], ClothLnk[i].force[2]); //printf(" ClothLnk[%d].force = {%f, %f, %f} \n", i, ClothLnk[i].force[0], ClothLnk[i].force[1], ClothLnk[i].force[2]); } //} for (int i = 0; i < PTCAMT; i ++) { nextPosition(i); } refreshPosition(); stepCount ++; }
void AOverlay::updatePosition(Ogre::Vector2 const &pos) { _currentPos.x = pos.x / _winSize.x; _currentPos.y = pos.y / _winSize.y; refreshPosition(); }