Exemplo n.º 1
0
Object::Object(b2World& w, sf::Vector2f pos)
{
	bodyDef.type = b2_dynamicBody;

	fixtureDef.restitution = 0.0f;
	fixtureDef.shape = &dynamicBody;
	fixtureDef.density = 0.3f;
	fixtureDef.friction = 0.5f;

	//TODO Find a way to get rid of this. We want it to be dynamic.
	dynamicBody.SetAsBox(toB2(34/2), toB2(97/2));

	//bodyDef.position = b2Vec2(toB2(0), toB2(10000));

	bodyDef.fixedRotation = true;

	body = w.CreateBody(&bodyDef);
	body->CreateFixture(&fixtureDef);

}
Exemplo n.º 2
0
Object::Object(sf::Vector2f s, sf::Color c, b2World& w, sf::Vector2f p)
{

	objectType t = player;
	m_type = t;

	n++;

	shape.setSize(s);
	shape.setOrigin(s.x/2, s.y/2);

	shape.setFillColor(c);

	bodyDef.type = b2_dynamicBody;

	if(p.x == 0)
		bodyDef.position.Set(toB2(300), -toB2(300.0f/30-n*5));
	else
		bodyDef.position.Set(toB2(p.x), -toB2(p.y));

	dynamicBody.SetAsBox(toB2(10.0f), toB2(10.0f));

	fixtureDef.shape = &dynamicBody;
	fixtureDef.density = 0.3f;
	fixtureDef.friction = 0.5f;

	body = w.CreateBody(&bodyDef);
	body->CreateFixture(&fixtureDef);

	hitbox.setSize(shape.getSize());
	hitbox.setOutlineColor(sf::Color::Red);
	hitbox.setPosition(shape.getPosition());
	hitbox.setOutlineThickness(1);
}
Exemplo n.º 3
0
void FrictionJoint::attach(Object& a, Object& b){
	ensure(	a.getTypeId() == Object::TypeId::Rigid && 
			b.getTypeId() == Object::TypeId::Rigid);
	
	detach();
	
	b2Body* aa= static_cast<RigidObject*>(&a)->getB2Body(),
		  * bb= static_cast<RigidObject*>(&b)->getB2Body();
	ensure(aa && bb);
	
	def.Initialize(aa, bb, toB2(a.getPosition()));

	addObject(a);
	addObject(b);
	createB2Joint();
	OnAttachCb::trigger();
}
Exemplo n.º 4
0
Object::Object(std::string pa, b2World& w, b2Shape::Type, sf::Vector2f pos)
{

	static bool isLoaded = false;

	if(!isLoaded)
	{
		isLoaded = true;
		objectTexture.loadFromFile(pa);
	}

	shape.setPosition(pos);

	shape.setSize(sf::Vector2f(objectTexture.getSize().x, objectTexture.getSize().y));
	shape.setTexture(&objectTexture);

	shape.setOrigin(objectTexture.getSize().x/2, objectTexture.getSize().y/2);

	bodyDef.type = b2_dynamicBody;

	if(pos.x == 0)
		bodyDef.position.Set(toB2(300), -toB2(300));
	else
		bodyDef.position.Set(toB2(pos.x), -toB2(pos.y));

	dynamicBody.SetAsBox(toB2((objectTexture.getSize().x/2)-1), toB2((objectTexture.getSize().y/2)));

	fixtureDef.shape = &dynamicBody;
	fixtureDef.density = 0.85f;
	//fixtureDef.restitution = 0.01f;
	fixtureDef.friction = 0.5f;

	body = w.CreateBody(&bodyDef);
	body->CreateFixture(&fixtureDef);

	body->SetUserData(this);

}