Android Open Source - gameengine Polygon Shape






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.//w w  w.  j  a v a  2 s.  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 PolygonShape extends Shape {
    /*
     * JNI #include <Box2D/Box2D.h>
     */

    /** Constructs a new polygon */
    public PolygonShape() {
        addr = newPolygonShape();
    }

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

    private native long newPolygonShape(); /*
                                            * b2PolygonShape* poly = new
                                            * b2PolygonShape(); return
                                            * (jlong)poly;
                                            */

    /** {@inheritDoc} */
    @Override
    public Type getType() {
        return Type.Polygon;
    }

    /**
     * Copy vertices. This assumes the vertices define a convex polygon. It is
     * assumed that the exterior is the the right of each edge.
     */
    public void set(Vector2[] vertices) {
        float[] verts = new float[vertices.length * 2];
        for (int i = 0, j = 0; i < vertices.length * 2; i += 2, j++) {
            verts[i] = vertices[j].x;
            verts[i + 1] = vertices[j].y;
        }
        jniSet(addr, verts, verts.length);
    }

    private native void jniSet(long addr, float[] verts, int len); /*
                                                                    * b2PolygonShape
                                                                    * * poly = (
                                                                    * b2PolygonShape
                                                                    * *)addr;
                                                                    * int
                                                                    * numVertices
                                                                    * = len / 2;
                                                                    * b2Vec2*
                                                                    * verticesOut
                                                                    * = new
                                                                    * b2Vec2
                                                                    * [numVertices
                                                                    * ]; for(int
                                                                    * i = 0; i <
                                                                    * numVertices
                                                                    * ; i++)
                                                                    * verticesOut
                                                                    * [i] =
                                                                    * b2Vec2
                                                                    * (verts
                                                                    * [i<<1],
                                                                    * verts
                                                                    * [(i<<1
                                                                    * )+1]);
                                                                    * poly->Set(
                                                                    * verticesOut
                                                                    * ,
                                                                    * numVertices
                                                                    * ); delete
                                                                    * verticesOut
                                                                    * ;
                                                                    */

    /**
     * Build vertices to represent an axis-aligned box.
     * 
     * @param hx
     *            the half-width.
     * @param hy
     *            the half-height.
     */
    public void setAsBox(float hx, float hy) {
        jniSetAsBox(addr, hx, hy);
    }

    private native void jniSetAsBox(long addr, float hx, float hy); /*
                                                                     * b2PolygonShape
                                                                     * * poly =
                                                                     * (
                                                                     * b2PolygonShape
                                                                     * *)addr;
                                                                     * poly
                                                                     * ->SetAsBox
                                                                     * (hx, hy);
                                                                     */

    /**
     * Build vertices to represent an oriented box.
     * 
     * @param hx
     *            the half-width.
     * @param hy
     *            the half-height.
     * @param center
     *            the center of the box in local coordinates.
     * @param angle
     *            the rotation in radians of the box in local coordinates.
     */
    public void setAsBox(float hx, float hy, Vector2 center, float angle) {
        jniSetAsBox(addr, hx, hy, center.x, center.y, angle);
    }

    private native void jniSetAsBox(long addr, float hx, float hy, float centerX, float centerY, float angle); /*
                                                                                                                * b2PolygonShape
                                                                                                                * *
                                                                                                                * poly
                                                                                                                * =
                                                                                                                * (
                                                                                                                * b2PolygonShape
                                                                                                                * *
                                                                                                                * )
                                                                                                                * addr
                                                                                                                * ;
                                                                                                                * poly
                                                                                                                * -
                                                                                                                * >
                                                                                                                * SetAsBox
                                                                                                                * (
                                                                                                                * hx
                                                                                                                * ,
                                                                                                                * hy
                                                                                                                * ,
                                                                                                                * b2Vec2
                                                                                                                * (
                                                                                                                * centerX
                                                                                                                * ,
                                                                                                                * centerY
                                                                                                                * )
                                                                                                                * ,
                                                                                                                * angle
                                                                                                                * )
                                                                                                                * ;
                                                                                                                */

    /** @return the number of vertices */
    public int getVertexCount() {
        return jniGetVertexCount(addr);
    }

    private native int jniGetVertexCount(long addr); /*
                                                      * b2PolygonShape* poly =
                                                      * (b2PolygonShape*)addr;
                                                      * return
                                                      * poly->GetVertexCount();
                                                      */

    private static float[] verts = new float[2];

    /**
     * Returns the vertex at the given position.
     * 
     * @param index
     *            the index of the vertex 0 <= index < getVertexCount( )
     * @param vertex
     *            vertex
     */
    public void getVertex(int index, Vector2 vertex) {
        jniGetVertex(addr, index, verts);
        vertex.x = verts[0];
        vertex.y = verts[1];
    }

    private native void jniGetVertex(long addr, int index, float[] verts); /*
                                                                            * b2PolygonShape
                                                                            * *
                                                                            * poly
                                                                            * =
                                                                            * (
                                                                            * b2PolygonShape
                                                                            * *
                                                                            * )addr
                                                                            * ;
                                                                            * const
                                                                            * b2Vec2
                                                                            * v
                                                                            * =
                                                                            * poly
                                                                            * ->
                                                                            * GetVertex
                                                                            * (
                                                                            * index
                                                                            * );
                                                                            * verts
                                                                            * [
                                                                            * 0]
                                                                            * =
                                                                            * v
                                                                            * .x
                                                                            * ;
                                                                            * verts
                                                                            * [
                                                                            * 1]
                                                                            * =
                                                                            * v
                                                                            * .y
                                                                            * ;
                                                                            */
}




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