Search in sources :

Example 6 with Ray

use of com.badlogic.gdx.math.collision.Ray in project libgdx by libgdx.

the class RayPickRagdollTest method touchDragged.

@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
    boolean result = false;
    if (pickConstraint != null) {
        Ray ray = camera.getPickRay(screenX, screenY);
        tmpV1.set(ray.direction).scl(pickDistance).add(camera.position);
        pickConstraint.setPivotB(tmpV1);
        result = true;
    }
    return result ? result : super.touchDragged(screenX, screenY, pointer);
}
Also used : Ray(com.badlogic.gdx.math.collision.Ray)

Example 7 with Ray

use of com.badlogic.gdx.math.collision.Ray in project libgdx by libgdx.

the class RayPickRagdollTest method touchDown.

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    boolean result = false;
    if (button == Buttons.LEFT) {
        Ray ray = camera.getPickRay(screenX, screenY);
        tmpV1.set(ray.direction).scl(10f).add(ray.origin);
        ClosestRayResultCallback cb = new ClosestRayResultCallback(ray.origin, tmpV1);
        world.collisionWorld.rayTest(ray.origin, tmpV1, cb);
        if (cb.hasHit()) {
            btRigidBody body = (btRigidBody) (cb.getCollisionObject());
            if (body != null && !body.isStaticObject() && !body.isKinematicObject()) {
                pickedBody = body;
                body.setActivationState(Collision.DISABLE_DEACTIVATION);
                cb.getHitPointWorld(tmpV);
                tmpV.mul(body.getCenterOfMassTransform().inv());
                pickConstraint = new btPoint2PointConstraint(body, tmpV);
                btConstraintSetting setting = pickConstraint.getSetting();
                setting.setImpulseClamp(30f);
                setting.setTau(0.001f);
                pickConstraint.setSetting(setting);
                ((btDynamicsWorld) world.collisionWorld).addConstraint(pickConstraint);
                pickDistance = tmpV1.sub(camera.position).len();
                result = true;
            }
        }
        cb.dispose();
    }
    return result ? result : super.touchDown(screenX, screenY, pointer, button);
}
Also used : com.badlogic.gdx.physics.bullet.dynamics.btRigidBody(com.badlogic.gdx.physics.bullet.dynamics.btRigidBody) com.badlogic.gdx.physics.bullet.dynamics.btDynamicsWorld(com.badlogic.gdx.physics.bullet.dynamics.btDynamicsWorld) com.badlogic.gdx.physics.bullet.dynamics.btPoint2PointConstraint(com.badlogic.gdx.physics.bullet.dynamics.btPoint2PointConstraint) Ray(com.badlogic.gdx.math.collision.Ray) com.badlogic.gdx.physics.bullet.dynamics.btConstraintSetting(com.badlogic.gdx.physics.bullet.dynamics.btConstraintSetting) ClosestRayResultCallback(com.badlogic.gdx.physics.bullet.collision.ClosestRayResultCallback)

Aggregations

Ray (com.badlogic.gdx.math.collision.Ray)7 com.badlogic.gdx.physics.bullet.dynamics.btRigidBody (com.badlogic.gdx.physics.bullet.dynamics.btRigidBody)3 Mesh (com.badlogic.gdx.graphics.Mesh)1 Vector2 (com.badlogic.gdx.math.Vector2)1 Vector3 (com.badlogic.gdx.math.Vector3)1 BoundingBox (com.badlogic.gdx.math.collision.BoundingBox)1 Body (com.badlogic.gdx.physics.box2d.Body)1 ClosestRayResultCallback (com.badlogic.gdx.physics.bullet.collision.ClosestRayResultCallback)1 com.badlogic.gdx.physics.bullet.collision.btCollisionObject (com.badlogic.gdx.physics.bullet.collision.btCollisionObject)1 com.badlogic.gdx.physics.bullet.dynamics.btConstraintSetting (com.badlogic.gdx.physics.bullet.dynamics.btConstraintSetting)1 com.badlogic.gdx.physics.bullet.dynamics.btDynamicsWorld (com.badlogic.gdx.physics.bullet.dynamics.btDynamicsWorld)1 com.badlogic.gdx.physics.bullet.dynamics.btPoint2PointConstraint (com.badlogic.gdx.physics.bullet.dynamics.btPoint2PointConstraint)1 Viewport (com.nilunder.bdx.gl.Viewport)1 FloatBuffer (java.nio.FloatBuffer)1 ShortBuffer (java.nio.ShortBuffer)1 Vector3f (javax.vecmath.Vector3f)1