Java 类com.badlogic.gdx.physics.box2d.ContactImpulse 实例源码

项目:CodeBase    文件:ImpactSoundListener.java   
private Sound play(PhysixBodyComponent component, ContactImpulse impulse, Sound ignore) {
    if (component != null) {
        ImpactSoundComponent isc = ComponentMappers.impactSound.get(component.getEntity());
        if (isc != null && isc.sound != ignore && isc.lastPlayed.get() > isc.minDelay) {
            float impulseStrength = Math.abs(impulse.getNormalImpulses()[0]);
            if (impulseStrength > isc.minImpulseStrength) {
                float speed = component.getLinearVelocity().len();
                if (speed > isc.minSpeed) {
                    isc.lastPlayed.reset();
                    SoundEmitter.playGlobal(isc.sound, false, component.getX(), component.getY(), 0);
                    return isc.sound;
                }
            }
        }
    }
    return null;
}
项目:flixel-gdx-box2d    文件:TestBreakable.java   
@Override
public void onContact(B2FlxShape sprite1, B2FlxShape sprite2, Contact contact, Manifold oldManifold, ContactImpulse impulse)
{
    if(_broke)
    {
        // The body already broke.
        return;
    }

    // Should the body break?
    int count = contact.getWorldManifold().getNumberOfContactPoints();

    float maxImpulse = 0.0f;
    for(int i = 0; i < count; i++)
    {
        maxImpulse = B2FlxMath.max(maxImpulse, impulse.getNormalImpulses()[i]);
    }

    if(maxImpulse > 40.0f)
    {
        _break = true;
    }
}
项目:angr    文件:ModelContactListener.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    if(impulse.getNormalImpulses()[0] > 0.01)
    {
        /* If body A was hit */
        if(contact.getFixtureA() != null)
        {
            if (Actor.class.isInstance(contact.getFixtureA().getBody().getUserData())) {
                Actor a = (Actor) contact.getFixtureA().getBody().getUserData();
                evalDamage(a, impulse);

            }
        }

        /* If body B was hit */
        if(contact.getFixtureB() != null)
        {
            if (Actor.class.isInstance(contact.getFixtureB().getBody().getUserData())) {
                Actor b = (Actor) contact.getFixtureB().getBody().getUserData();
                evalDamage(b, impulse);
            }
        }
    }
}
项目:angr    文件:ModelContactListener.java   
/**
 * Evaluate damage and score, and check if actor needs to be destroyed
 * @param actor Current actor
 * @param impulse Impulse
 */
private void evalDamage(Actor actor, ContactImpulse impulse) {
    if (Destructible.class.isInstance(actor)) {
        /* Hit and check final health status */
        if (((Destructible)actor).getDatamageModel() == null)
            return;
        ((Destructible)actor).getDatamageModel().hit(impulse.getNormalImpulses()[0]);
        if (((Destructible)actor).getDatamageModel().getHealth() < 0.01f) {

            if (!((Destructible)actor).isDestroyed()) {
                /* Update score counter */
                gameState.addPoints(((Destructible)actor).getDatamageModel().getPoints(),
                        ((Destructible)actor).getDatamageModel().isEnemy());

                /* Destroy actor */
                ((Destructible)actor).setDestroyed();
            }
        }
    }
}
项目:rebel-invader    文件:PhysicsListener.java   
/**
 * Called every time step while the fixtures are overlapping
 * Gives you a chance to find out what impulses were caused by the collision response after it has been applied
 *
 * @param contact
 * @param impulse
 */
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    //Gdx.app.log(this.getClass().getSimpleName(), "postSolve() called");

    Body a = contact.getFixtureA().getBody();
    Body b = contact.getFixtureB().getBody();

    // If a is a player
    if (a.getUserData().getClass() == PlayerSystem.class) {
        // If b is a structure
        if (b.getUserData().getClass() == StructureSystem.class) {
            a.setUserData(BodyComponent.PLAYER_STRUCTURE_COLLISION);
        }
        // If b is an enemy
        if (b.getUserData().getClass() == EnemySystem.class) {
            a.setUserData(BodyComponent.PLAYER_ENEMY_COLLISION);
        }
    }

    // If b is a player
    if (b.getUserData().getClass() == PlayerSystem.class) {
        // If a is a structure
        if (a.getUserData().getClass() == StructureSystem.class) {
            b.setUserData(BodyComponent.PLAYER_STRUCTURE_COLLISION);
        }
        // If a is an enemy
        if (a.getUserData().getClass() == EnemySystem.class) {
            b.setUserData(BodyComponent.PLAYER_ENEMY_COLLISION);
        }
    }
}
项目:libgdxjam    文件:CollisionHandler.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    Fixture fixtureA = contact.getFixtureA();
    Fixture fixtureB = contact.getFixtureB();

    ContactListener listener = get(
        fixtureA.getFilterData().categoryBits,
        fixtureB.getFilterData().categoryBits
    );

    if (listener != null) {
        listener.postSolve(contact, impulse);
    }
}
项目:ZombieCopter    文件:PhysicsSystem.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    Body bodyA = contact.getFixtureA().getBody(), bodyB = contact.getFixtureB().getBody();
    PhysicsComponent physA = (PhysicsComponent)bodyA.getUserData(), 
                     physB = (PhysicsComponent)bodyB.getUserData();
    if (physA == null || physB == null) return;
    physA.addCollisionNormal(impulse.getNormalImpulses()[0]);
    physB.addCollisionNormal(impulse.getNormalImpulses()[0]);
}
项目:sioncore    文件:CollisionHandler.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    Fixture fixtureA = contact.getFixtureA();
    Fixture fixtureB = contact.getFixtureB();

    ContactListener listener = getListener(fixtureA.getFilterData().categoryBits,
                                           fixtureB.getFilterData().categoryBits);

    if (listener != null) {
        listener.postSolve(contact, impulse);
    }
}
项目:CodeBase    文件:PhysixComponentAwareContactListener.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    if (contact.getFixtureA() != null && contact.getFixtureB() != null) {
        for (ComponentContactListener listener : listenerMap.values()) {
            listener.postSolve(contact, impulse);
        }
    }
}
项目:flixel-gdx-box2d    文件:TestCollisionDetection.java   
@Override
public void onContact(B2FlxShape sprite1, B2FlxShape sprite2, Contact contact, Manifold oldManifold, ContactImpulse impulse)
{
    _ghost2.removeOverlap();
    if(!_ghost2.gotOverlaps())
        _ghost2.setAlpha(1f);
}
项目:flixel-gdx-box2d    文件:B2FlxContactListener.java   
/**
 * Internal: This lets you inspect a contact after the solver is finished. This is useful for inspecting impulses. Note: the contact
 * manifold does not include time of impact impulses, which can be arbitrarily large if the sub-step is small. Hence the
 * impulse is provided explicitly in a separate data structure. Note: this is only called for contacts that are touching,
 * solid, and awake.
 */
@Override
public void postSolve(Contact contact, ContactImpulse impulse)
{
    if(_event == null)
        return;
    _event.oldManifold = null;
    _event.impulse = impulse;
    dispatch(contact, B2FlxContactEvent.POST_SOLVE);
}
项目:DreamsLibGdx    文件:WorldController.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    AbstractWorldManager managerA=getManager(((Box2DPhysicsObject) contact.getFixtureA().getUserData()).getGrupo());
    AbstractWorldManager managerB=getManager(((Box2DPhysicsObject) contact.getFixtureB().getUserData()).getGrupo());

    if(managerA!=null) managerA.handlePostSolve(contact, impulse);
    if(managerB!=null) managerB.handlePostSolve(contact, impulse);

}
项目:homescreenarcade    文件:Field.java   
@Override public void postSolve(Contact arg0, ContactImpulse arg1) {
    // Not used.
}
项目:feup-lpoo-armadillo    文件:WorldContactListener.java   
/**
 * {@inheritDoc}
 */
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
项目:water2d-libgdx    文件:MyContactListener.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    // TODO Auto-generated method stub

}
项目:libGdx-xiyou    文件:Box2DContactListener.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
项目:JavityEngine    文件:JComponent.java   
@Override
public void onCollisionStay(Contact contact, ContactImpulse impulse) {
}
项目:Undertailor    文件:CollisionHandler.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {}
项目:M-M    文件:ContactService.java   
@Override
public void postSolve(final Contact contact, final ContactImpulse impulse) {
}
项目:advio    文件:ContactListener.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
项目:libgdxjam    文件:ContactAdapter.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {}
项目:libgdxGP    文件:ContactMultiListener.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    for (ContactListener contactListener : contactListeners) {
        contactListener.postSolve(contact, impulse);
    }
}
项目:Pacman_libGdx    文件:WorldContactListener.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
项目:BlockBunny    文件:BBContactListener.java   
public void postSolve(Contact c, ContactImpulse ci) {
}
项目:Dodgy-Dot    文件:GameScreen.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    // TODO Auto-generated method stub
}
项目:Vector-Pinball-Editor    文件:Field.java   
@Override public void postSolve(Contact arg0, ContactImpulse arg1) {
    // Not used.
}
项目:KillTheNerd    文件:MyContactListener.java   
@Override
public void postSolve(final Contact contact, final ContactImpulse impulse) {
    //
}
项目:Pong-Tutorial    文件:Ball.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    // TODO Auto-generated method stub

}
项目:Pong-Tutorial    文件:Bounds.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    // TODO Auto-generated method stub

}
项目:Pong-Tutorial    文件:Player.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    // TODO Auto-generated method stub

}
项目:GDXJam    文件:GameContactListener.java   
@Override
public void postSolve (Contact contact, ContactImpulse impulse) {
    // TODO Auto-generated method stub

}
项目:tilt-game-android    文件:ContactListenerAdapter.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
项目:Bomberman_libGdx    文件:B2DWorldContactListener.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
项目:practicos    文件:AdministradorColisiones.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
    // TODO Auto-generated method stub

}
项目:CodeBase    文件:ImpactSoundListener.java   
@Override
public void postSolve(PhysixContact contact, ContactImpulse impulse) {
    Sound ignore = play(contact.getMyComponent(), impulse, null);
    play(contact.getOtherComponent(), impulse, ignore);
}
项目:CodeBase    文件:PhysixContactAdapter.java   
public void postSolve(PhysixContact contact, ContactImpulse impulse) {
}
项目:CodeBase    文件:PhysixComponentAwareContactListener.java   
public void postSolve(Contact contact, ContactImpulse impulse) {
    testAndRun(contact, (PhysixContact physixContact) -> postSolve(physixContact, impulse));
}
项目:CodeBase    文件:PhysixComponentAwareContactListener.java   
public void postSolve(PhysixContact contact, ContactImpulse impulse) {
    listeners.forEach((PhysixContactListener listener) -> listener.postSolve(contact, impulse));
}
项目:Little-Nibolas    文件:Lanza.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}
项目:Little-Nibolas    文件:Soldado.java   
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
}