Esempio n. 1
0
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();
}
Esempio n. 2
0
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();

}
Esempio n. 3
0
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 ++;
}
Esempio n. 4
0
void		AOverlay::updatePosition(Ogre::Vector2 const &pos)
{
  _currentPos.x = pos.x / _winSize.x;
  _currentPos.y = pos.y / _winSize.y;
  refreshPosition();
}