本文整理汇总了C++中Fixture::CreateProxies方法的典型用法代码示例。如果您正苦于以下问题:C++ Fixture::CreateProxies方法的具体用法?C++ Fixture::CreateProxies怎么用?C++ Fixture::CreateProxies使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Fixture
的用法示例。
在下文中一共展示了Fixture::CreateProxies方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetActive
void Body::SetActive(bool flag)
{
assert(m_world->IsLocked() == false);
if (flag == IsActive())
{
return;
}
if (flag)
{
m_flags |= activeFlag;
// Create all proxies.
BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase;
for (Fixture* f = m_fixtureList; f; f = f->m_next)
{
f->CreateProxies(broadPhase, m_xf);
}
// Contacts are created the next time step.
}
else
{
m_flags &= ~activeFlag;
// Destroy all proxies.
BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase;
for (Fixture* f = m_fixtureList; f; f = f->m_next)
{
f->DestroyProxies(broadPhase);
}
// Destroy the attached contacts.
ContactEdge* ce = m_contactList;
while (ce)
{
ContactEdge* ce0 = ce;
ce = ce->next;
m_world->m_contactManager.Destroy(ce0->contact);
}
m_contactList = NULL;
}
}
示例2: CreateFixture
Fixture* Body::CreateFixture(const FixtureDef* def)
{
assert(m_world->IsLocked() == false);
if (m_world->IsLocked() == true)
{
return NULL;
}
BlockAllocator* allocator = &m_world->m_blockAllocator;
void* memory = allocator->Allocate(sizeof(Fixture));
Fixture* fixture = new (memory) Fixture;
fixture->Create(allocator, this, def);
if (m_flags & activeFlag)
{
BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase;
fixture->CreateProxies(broadPhase, m_xf);
}
fixture->m_next = m_fixtureList;
m_fixtureList = fixture;
++m_fixtureCount;
fixture->m_body = this;
// Adjust mass properties if needed.
if (fixture->m_density > 0.0f)
{
ResetMassData();
}
// Let the world know we have a new fixture. This will cause new contacts
// to be created at the beginning of the next time step.
m_world->m_flags |= World::newFixture;
return fixture;
}