Esempio n. 1
0
void PlayerObject::update(vec2 accel, float timeStep, std::vector<Object> worldObjects)
{
	speed += (accel * timeStep);
	desiredPos += (speed * timeStep);
	boundingCircle.center = desiredPos;
	bool collide = false;
	for (auto &object : worldObjects)
	{
		vec2 collisionVec = checkCollision(object.boundingBox, boundingCircle);
		if (collisionVec != vec2(0.f, 0.f)){
			collide = true;
			speed = speed - (collisionVec * dotProduct(speed, collisionVec)) * 1.85f;
            break;
		}
	}
	if (!collide){
		position = desiredPos;
		entity->setPos(desiredPos.x, desiredPos.y);
	}
	else{
		desiredPos = position;
		boundingCircle.center = position;
	}

	if (!isOnScreen(vec2(1280, 720), boundingCircle.center))
	{
		vec2 a(600, 0);
		entity->setPos(a.x, a.y);
		position = a;
		desiredPos = position;
		boundingCircle = BoundingCircle(position, size.x / 2);
		speed = vec2(0, 0);
	}
}
Esempio n. 2
0
BoundingCircle Tile::getBoundingCircle() {
  return BoundingCircle(position, hexRadius);
}
Esempio n. 3
0
BoundingCircle Virus::getTakeoverCircle() {
  return BoundingCircle(position, virusData->getTakeoverRadius());
}
Esempio n. 4
0
BoundingCircle Antibody::getBoundingCircle() {
  return BoundingCircle(position, 0.0);
}
Esempio n. 5
0
BoundingCircle Virus::getBoundingCircle() {
  return BoundingCircle(position, virusData->getRadius());
}