Android Open Source - gameengine Manifold






From Project

Back to project page gameengine.

License

The source code is released under:

Apache License

If you think the Android project gameengine listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*******************************************************************************
 * Copyright 2011 See AUTHORS file./*from  ww  w.  j ava2s  .  c o  m*/
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/

package com.badlogic.gdx.physics.box2d;

import com.badlogic.gdx.math.Vector2;

public class Manifold {
    /*
     * JNI #include <Box2D/Box2D.h>
     */

    long addr;
    final ManifoldPoint[] points = new ManifoldPoint[] {
            new ManifoldPoint(),
            new ManifoldPoint() };
    final Vector2 localNormal = new Vector2();
    final Vector2 localPoint = new Vector2();

    final int[] tmpInt = new int[2];
    final float[] tmpFloat = new float[4];

    protected Manifold(long addr) {
        this.addr = addr;
    }

    public ManifoldType getType() {
        int type = jniGetType(addr);
        if (type == 0)
            return ManifoldType.Circle;
        if (type == 1)
            return ManifoldType.FaceA;
        if (type == 2)
            return ManifoldType.FaceB;
        return ManifoldType.Circle;
    }

    private native int jniGetType(long addr); /*
                                               * b2Manifold* manifold =
                                               * (b2Manifold*)addr; return
                                               * manifold->type;
                                               */

    public int getPointCount() {
        return jniGetPointCount(addr);
    }

    private native int jniGetPointCount(long addr); /*
                                                     * b2Manifold* manifold =
                                                     * (b2Manifold*)addr; return
                                                     * manifold->pointCount;
                                                     */

    public Vector2 getLocalNormal() {
        jniGetLocalNormal(addr, tmpFloat);
        localNormal.set(tmpFloat[0], tmpFloat[1]);
        return localNormal;
    }

    private native void jniGetLocalNormal(long addr, float[] values); /*
                                                                       * b2Manifold*
                                                                       * manifold
                                                                       * =
                                                                       * (b2Manifold
                                                                       * *)addr;
                                                                       * values
                                                                       * [0] =
                                                                       * manifold
                                                                       * ->
                                                                       * localNormal
                                                                       * .x;
                                                                       * values
                                                                       * [1] =
                                                                       * manifold
                                                                       * ->
                                                                       * localNormal
                                                                       * .y;
                                                                       */

    public Vector2 getLocalPoint() {
        jniGetLocalPoint(addr, tmpFloat);
        localPoint.set(tmpFloat[0], tmpFloat[1]);
        return localPoint;
    }

    private native void jniGetLocalPoint(long addr, float[] values); /*
                                                                      * b2Manifold*
                                                                      * manifold
                                                                      * =
                                                                      * (b2Manifold
                                                                      * *)addr;
                                                                      * values
                                                                      * [0] =
                                                                      * manifold
                                                                      * -
                                                                      * >localPoint
                                                                      * .x;
                                                                      * values
                                                                      * [1] =
                                                                      * manifold
                                                                      * -
                                                                      * >localPoint
                                                                      * .y;
                                                                      */

    public ManifoldPoint[] getPoints() {
        int count = jniGetPointCount(addr);

        for (int i = 0; i < count; i++) {
            int contactID = jniGetPoint(addr, tmpFloat, i);
            ManifoldPoint point = points[i];
            point.contactID = contactID;
            point.localPoint.set(tmpFloat[0], tmpFloat[1]);
            point.normalImpulse = tmpFloat[2];
            point.tangentImpulse = tmpFloat[3];
        }

        return points;
    }

    private native int jniGetPoint(long addr, float[] values, int idx); /*
                                                                         * b2Manifold
                                                                         * *
                                                                         * manifold
                                                                         * = (
                                                                         * b2Manifold
                                                                         * *
                                                                         * )addr
                                                                         * ;
                                                                         * 
                                                                         * values[
                                                                         * 0] =
                                                                         * manifold
                                                                         * -
                                                                         * >points
                                                                         * [
                                                                         * idx].
                                                                         * localPoint
                                                                         * .x;
                                                                         * values
                                                                         * [1] =
                                                                         * manifold
                                                                         * -
                                                                         * >points
                                                                         * [
                                                                         * idx].
                                                                         * localPoint
                                                                         * .y;
                                                                         * values
                                                                         * [2] =
                                                                         * manifold
                                                                         * -
                                                                         * >points
                                                                         * [
                                                                         * idx].
                                                                         * normalImpulse
                                                                         * ;
                                                                         * values
                                                                         * [3] =
                                                                         * manifold
                                                                         * -
                                                                         * >points
                                                                         * [
                                                                         * idx].
                                                                         * tangentImpulse
                                                                         * ;
                                                                         * 
                                                                         * return
                                                                         * (
                                                                         * jint)
                                                                         * manifold
                                                                         * -
                                                                         * >points
                                                                         * [
                                                                         * idx].
                                                                         * id
                                                                         * .key;
                                                                         */

    public class ManifoldPoint {
        public final Vector2 localPoint = new Vector2();
        public float normalImpulse;
        public float tangentImpulse;
        public int contactID = 0;

        public String toString() {
            return "id: " + contactID + ", " + localPoint + ", " + normalImpulse + ", " + tangentImpulse;
        }
    }

    public enum ManifoldType {
        Circle,
        FaceA,
        FaceB
    }
}




Java Source Code List

com.badlogic.gdx.math.MathUtils.java
com.badlogic.gdx.math.Matrix3.java
com.badlogic.gdx.math.Matrix4.java
com.badlogic.gdx.math.Quaternion.java
com.badlogic.gdx.math.Vector2.java
com.badlogic.gdx.math.Vector3.java
com.badlogic.gdx.physics.box2d.BodyDef.java
com.badlogic.gdx.physics.box2d.Body.java
com.badlogic.gdx.physics.box2d.ChainShape.java
com.badlogic.gdx.physics.box2d.CircleShape.java
com.badlogic.gdx.physics.box2d.ContactFilter.java
com.badlogic.gdx.physics.box2d.ContactImpulse.java
com.badlogic.gdx.physics.box2d.ContactListener.java
com.badlogic.gdx.physics.box2d.Contact.java
com.badlogic.gdx.physics.box2d.DestructionListener.java
com.badlogic.gdx.physics.box2d.EdgeShape.java
com.badlogic.gdx.physics.box2d.Filter.java
com.badlogic.gdx.physics.box2d.FixtureDef.java
com.badlogic.gdx.physics.box2d.Fixture.java
com.badlogic.gdx.physics.box2d.JointDef.java
com.badlogic.gdx.physics.box2d.JointEdge.java
com.badlogic.gdx.physics.box2d.Joint.java
com.badlogic.gdx.physics.box2d.Manifold.java
com.badlogic.gdx.physics.box2d.MassData.java
com.badlogic.gdx.physics.box2d.PolygonShape.java
com.badlogic.gdx.physics.box2d.QueryCallback.java
com.badlogic.gdx.physics.box2d.RayCastCallback.java
com.badlogic.gdx.physics.box2d.Shape.java
com.badlogic.gdx.physics.box2d.Transform.java
com.badlogic.gdx.physics.box2d.WorldManifold.java
com.badlogic.gdx.physics.box2d.World.java
com.badlogic.gdx.physics.box2d.joints.DistanceJointDef.java
com.badlogic.gdx.physics.box2d.joints.DistanceJoint.java
com.badlogic.gdx.physics.box2d.joints.FrictionJointDef.java
com.badlogic.gdx.physics.box2d.joints.FrictionJoint.java
com.badlogic.gdx.physics.box2d.joints.GearJointDef.java
com.badlogic.gdx.physics.box2d.joints.GearJoint.java
com.badlogic.gdx.physics.box2d.joints.MouseJointDef.java
com.badlogic.gdx.physics.box2d.joints.MouseJoint.java
com.badlogic.gdx.physics.box2d.joints.PrismaticJointDef.java
com.badlogic.gdx.physics.box2d.joints.PrismaticJoint.java
com.badlogic.gdx.physics.box2d.joints.PulleyJointDef.java
com.badlogic.gdx.physics.box2d.joints.PulleyJoint.java
com.badlogic.gdx.physics.box2d.joints.RevoluteJointDef.java
com.badlogic.gdx.physics.box2d.joints.RevoluteJoint.java
com.badlogic.gdx.physics.box2d.joints.RopeJointDef.java
com.badlogic.gdx.physics.box2d.joints.RopeJoint.java
com.badlogic.gdx.physics.box2d.joints.WeldJointDef.java
com.badlogic.gdx.physics.box2d.joints.WeldJoint.java
com.badlogic.gdx.physics.box2d.joints.WheelJointDef.java
com.badlogic.gdx.physics.box2d.joints.WheelJoint.java
com.badlogic.gdx.utils.Array.java
com.badlogic.gdx.utils.ComparableTimSort.java
com.badlogic.gdx.utils.Disposable.java
com.badlogic.gdx.utils.GdxRuntimeException.java
com.badlogic.gdx.utils.LongArray.java
com.badlogic.gdx.utils.LongMap.java
com.badlogic.gdx.utils.NumberUtils.java
com.badlogic.gdx.utils.Pool.java
com.badlogic.gdx.utils.Sort.java
com.badlogic.gdx.utils.StringBuilder.java
com.badlogic.gdx.utils.TimSort.java
com.garrapeta.MathUtils.java
com.garrapeta.gameengine.Actor.java
com.garrapeta.gameengine.AsyncGameMessage.java
com.garrapeta.gameengine.BitmapManager.java
com.garrapeta.gameengine.Box2DActor.java
com.garrapeta.gameengine.Box2DWorld.java
com.garrapeta.gameengine.GameMessage.java
com.garrapeta.gameengine.GameView.java
com.garrapeta.gameengine.GameWorld.java
com.garrapeta.gameengine.ShapeDrawer.java
com.garrapeta.gameengine.SyncGameMessage.java
com.garrapeta.gameengine.Viewport.java
com.garrapeta.gameengine.actor.Box2DAtomicActor.java
com.garrapeta.gameengine.actor.Box2DCircleActor.java
com.garrapeta.gameengine.actor.Box2DEdgeActor.java
com.garrapeta.gameengine.actor.Box2DLoopActor.java
com.garrapeta.gameengine.actor.Box2DOpenChainActor.java
com.garrapeta.gameengine.actor.Box2DPolygonActor.java
com.garrapeta.gameengine.actor.IAtomicActor.java
com.garrapeta.gameengine.actor.SimpleActor.java
com.garrapeta.gameengine.module.LevelActionsModule.java
com.garrapeta.gameengine.module.LoadedLevelActionsModule.java
com.garrapeta.gameengine.module.SoundModule.java
com.garrapeta.gameengine.module.VibrationModule.java
com.garrapeta.gameengine.utils.IOUtils.java
com.garrapeta.gameengine.utils.LogX.java
com.garrapeta.gameengine.utils.PhysicsUtils.java
com.garrapeta.gameengine.utils.Pool.java