Search in sources :

Example 6 with BroadPhase

use of com.almasb.fxgl.physics.box2d.collision.broadphase.BroadPhase in project FXGL by AlmasB.

the class Body method setActive.

/**
 * Set the active state of the body.
 * An inactive body is not simulated and cannot be collided with or woken up.
 * If you pass a flag of true, all fixtures will be added to the broad-phase.
 * If you pass a flag of false, all fixtures will be removed from the broad-phase and all contacts will be destroyed.
 * Fixtures and joints are otherwise unaffected.
 * You may continue to create/destroy fixtures and joints on inactive bodies.
 * Fixtures on an inactive body are implicitly inactive
 * and will not participate in collisions, ray-casts, or queries.
 * Joints connected to an inactive body are implicitly inactive.
 * An inactive body is still owned by a World object and remains in the body list.
 *
 * @param flag active flag
 */
public void setActive(boolean flag) {
    world.assertNotLocked();
    if (flag == isActive()) {
        return;
    }
    if (flag) {
        m_flags |= e_activeFlag;
        // Create all proxies.
        BroadPhase broadPhase = world.getContactManager().broadPhase;
        for (Fixture f : fixtures) {
            f.createProxies(broadPhase, m_xf);
        }
    // Contacts are created the next time step.
    } else {
        m_flags &= ~e_activeFlag;
        // Destroy all proxies.
        BroadPhase broadPhase = world.getContactManager().broadPhase;
        for (Fixture f : fixtures) {
            f.destroyProxies(broadPhase);
        }
        destroyAttachedContacts();
    }
}
Also used : BroadPhase(com.almasb.fxgl.physics.box2d.collision.broadphase.BroadPhase)

Aggregations

BroadPhase (com.almasb.fxgl.physics.box2d.collision.broadphase.BroadPhase)6 Contact (com.almasb.fxgl.physics.box2d.dynamics.contacts.Contact)2 ContactEdge (com.almasb.fxgl.physics.box2d.dynamics.contacts.ContactEdge)2