com.badlogic.gdx.physics.box2d.EdgeShape Maven / Gradle / Ivy
The newest version!
package com.badlogic.gdx.physics.box2d;
import com.badlogic.gdx.math.Vector2;
/** A line segment (edge) shape. These can be connected in chains or loops to other edge shapes. The connectivity information is
* used to ensure correct contact normals. */
public class EdgeShape extends Shape {
/*JNI
#include
*/
public EdgeShape () {
addr = newEdgeShape();
}
private native long newEdgeShape (); /*
return (jlong)(new b2EdgeShape());
*/
EdgeShape (long addr) {
this.addr = addr;
}
/** Set this as an isolated edge. */
public void set (Vector2 v1, Vector2 v2) {
set(v1.x, v1.y, v2.x, v2.y);
}
/** Set this as an isolated edge. */
public void set (float v1X, float v1Y, float v2X, float v2Y) {
jniSet(addr, v1X, v1Y, v2X, v2Y);
}
private native void jniSet (long addr, float v1x, float v1y, float v2x, float v2y); /*
b2EdgeShape* edge = (b2EdgeShape*)addr;
edge->Set(b2Vec2(v1x, v1y), b2Vec2(v2x, v2y));
*/
static final float[] vertex = new float[2];
public void getVertex1 (Vector2 vec) {
jniGetVertex1(addr, vertex);
vec.x = vertex[0];
vec.y = vertex[1];
}
private native void jniGetVertex1 (long addr, float[] vertex); /*
b2EdgeShape* edge = (b2EdgeShape*)addr;
vertex[0] = edge->m_vertex1.x;
vertex[1] = edge->m_vertex1.y;
*/
public void getVertex2 (Vector2 vec) {
jniGetVertex2(addr, vertex);
vec.x = vertex[0];
vec.y = vertex[1];
}
private native void jniGetVertex2 (long addr, float[] vertex); /*
b2EdgeShape* edge = (b2EdgeShape*)addr;
vertex[0] = edge->m_vertex2.x;
vertex[1] = edge->m_vertex2.y;
*/
// /// @see b2Shape::TestPoint
// bool TestPoint(const b2Transform& transform, const b2Vec2& p) const;
//
// /// Implement b2Shape.
// bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input,
// const b2Transform& transform, int32 childIndex) const;
//
// /// @see b2Shape::ComputeAABB
// void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const;
//
// /// @see b2Shape::ComputeMass
// void ComputeMass(b2MassData* massData, float32 density) const;
//
// /// These are the edge vertices
// b2Vec2 m_vertex1, m_vertex2;
//
// /// Optional adjacent vertices. These are used for smooth collision.
// b2Vec2 m_vertex0, m_vertex3;
// bool m_hasVertex0, m_hasVertex3;
@Override
public Type getType () {
return Type.Edge;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy