Beispiel #1
0
void Body::SynchronizeFixtures()
{
	Transform2D xf1;
	xf1.q.Set(m_sweep.a0);
	xf1.p = m_sweep.c0 - Rotation2D::Mul(xf1.q, m_sweep.localCenter);

	BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase;
	for (Fixture* f = m_fixtureList; f; f = f->m_next)
	{
		f->Synchronize(broadPhase, xf1, m_xf);
	}
}
Beispiel #2
0
void Body::SetTransform2D(const glm::vec2& position, real32 angle)
{
	assert(m_world->IsLocked() == false);
	if (m_world->IsLocked() == true)
	{
		return;
	}

	m_xf.q.Set(angle);
	m_xf.p = position;

	m_sweep.c = Transform2D::Mul(m_xf, m_sweep.localCenter);
	m_sweep.a = angle;

	m_sweep.c0 = m_sweep.c;
	m_sweep.a0 = angle;

	BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase;
	for (Fixture* f = m_fixtureList; f; f = f->m_next)
	{
		f->Synchronize(broadPhase, m_xf, m_xf);
	}
}