/******************************************************************************* * Copyright 2011 See AUTHORS file. * * 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.joints; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.Joint; import com.badlogic.gdx.physics.box2d.World; /** A weld joint essentially glues two bodies together. A weld joint may distort somewhat because the island constraint solver is * approximate. */ public class WeldJoint extends Joint { // @off /*JNI #include <Box2D/Box2D.h> */ private final float[] tmp = new float[2]; private final Vector2 localAnchorA = new Vector2(); private final Vector2 localAnchorB = new Vector2(); public WeldJoint (World world, long addr) { super(world, addr); } public Vector2 getLocalAnchorA () { jniGetLocalAnchorA(addr, tmp); localAnchorA.set(tmp[0], tmp[1]); return localAnchorA; } private native void jniGetLocalAnchorA (long addr, float[] anchor); /* b2WeldJoint* joint = (b2WeldJoint*)addr; anchor[0] = joint->GetLocalAnchorA().x; anchor[1] = joint->GetLocalAnchorA().y; */ public Vector2 getLocalAnchorB () { jniGetLocalAnchorB(addr, tmp); localAnchorB.set(tmp[0], tmp[1]); return localAnchorB; } private native void jniGetLocalAnchorB (long addr, float[] anchor); /* b2WeldJoint* joint = (b2WeldJoint*)addr; anchor[0] = joint->GetLocalAnchorB().x; anchor[1] = joint->GetLocalAnchorB().y; */ public float getReferenceAngle () { return jniGetReferenceAngle(addr); } private native float jniGetReferenceAngle (long addr); /* b2WeldJoint* joint = (b2WeldJoint*)addr; return joint->GetReferenceAngle(); */ public float getFrequency () { return jniGetFrequency(addr); } private native float jniGetFrequency (long addr); /* b2WeldJoint* joint = (b2WeldJoint*)addr; return joint->GetFrequency(); */ public void setFrequency (float hz) { jniSetFrequency(addr, hz); } private native void jniSetFrequency (long addr, float hz); /* b2WeldJoint* joint = (b2WeldJoint*)addr; joint->SetFrequency(hz); */ public float getDampingRatio () { return jniGetDampingRatio(addr); } private native float jniGetDampingRatio (long addr); /* b2WeldJoint* joint = (b2WeldJoint*)addr; return joint->GetDampingRatio(); */ public void setDampingRatio (float ratio) { jniSetDampingRatio(addr, ratio); } private native void jniSetDampingRatio (long addr, float ratio); /* b2WeldJoint* joint = (b2WeldJoint*)addr; joint->SetDampingRatio(ratio); */ }