use of com.badlogic.gdx.physics.box2d.Joint in project RubeLoader by tescott.
the class JointSerializer method read.
@SuppressWarnings("rawtypes")
@Override
public Joint read(Json json, JsonValue jsonData, Class type) {
if (bodies == null || world == null)
return null;
int indexA = json.readValue("bodyA", int.class, bodies.size, jsonData);
int indexB = json.readValue("bodyB", int.class, bodies.size, jsonData);
if (indexA >= bodies.size || indexB >= bodies.size)
return null;
Joint joint = null;
JointDef jointDef = null;
String jointType = json.readValue("type", String.class, jsonData);
if (jointType == null)
return null;
// First pass
if (joints == null && !jointType.equals("gear")) {
if (jointType.equals("revolute")) {
jointDef = json.readValue(RevoluteJointDef.class, jsonData);
} else if (jointType.equals("prismatic")) {
jointDef = json.readValue(PrismaticJointDef.class, jsonData);
} else if (jointType.equals("distance")) {
jointDef = json.readValue(DistanceJointDef.class, jsonData);
} else if (jointType.equals("pulley")) {
jointDef = json.readValue(PulleyJointDef.class, jsonData);
} else if (jointType.equals("mouse")) {
jointDef = json.readValue(MouseJointDef.class, jsonData);
} else if (jointType.equals("wheel")) {
jointDef = json.readValue(WheelJointDef.class, jsonData);
} else if (jointType.equals("weld")) {
jointDef = json.readValue(WeldJointDef.class, jsonData);
} else if (jointType.equals("friction")) {
jointDef = json.readValue(FrictionJointDef.class, jsonData);
} else if (jointType.equals("rope")) {
jointDef = json.readValue(RopeJointDef.class, jsonData);
}
} else if (// Second pass
joints != null && jointType.equals("gear")) {
jointDef = json.readValue(GearJointDef.class, jsonData);
}
if (jointDef != null) {
jointDef.bodyA = bodies.get(indexA);
jointDef.bodyB = bodies.get(indexB);
jointDef.collideConnected = json.readValue("collideConnected", boolean.class, RubeDefaults.Joint.collideConnected, jsonData);
joint = world.createJoint(jointDef);
if (jointType.equals("mouse")) {
((MouseJoint) joint).setTarget(mouseJointDefSerializer.target);
}
}
scene.parseCustomProperties(json, joint, jsonData);
String name = json.readValue("name", String.class, jsonData);
if (name != null) {
scene.putNamed(name, joint);
}
return joint;
}
use of com.badlogic.gdx.physics.box2d.Joint in project RubeLoader by tescott.
the class WorldSerializer method read.
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public World read(Json json, JsonValue jsonData, Class type) {
World world = scene.getWorld();
if (world == null) {
boolean allowSleep = json.readValue("allowSleep", boolean.class, RubeDefaults.World.allowSleep, jsonData);
boolean autoClearForces = json.readValue("autoClearForces", boolean.class, RubeDefaults.World.autoClearForces, jsonData);
boolean continuousPhysics = json.readValue("continuousPhysics", boolean.class, RubeDefaults.World.continuousPhysics, jsonData);
boolean warmStarting = json.readValue("warmStarting", boolean.class, RubeDefaults.World.warmStarting, jsonData);
Vector2 gravity = json.readValue("gravity", Vector2.class, RubeDefaults.World.gravity, jsonData);
world = new World(gravity, allowSleep);
world.setAutoClearForces(autoClearForces);
world.setContinuousPhysics(continuousPhysics);
world.setWarmStarting(warmStarting);
}
// else ignore world settings and use the ones that were previously loaded
scene.parseCustomProperties(json, world, jsonData);
// Bodies
bodySerializer.setWorld(world);
Array<Body> bodies = json.readValue("body", Array.class, Body.class, jsonData);
if (bodies != null) {
if (scene.getBodies() == null) {
scene.setBodies(bodies);
} else {
scene.addBodies(bodies);
}
}
// Joints
// joints are done in two passes because gear joints reference other joints
// First joint pass
jointSerializer.init(world, bodies, null);
Array<Joint> joints = json.readValue("joint", Array.class, Joint.class, jsonData);
if (joints != null) {
if (scene.getJoints() == null) {
scene.setJoints(joints);
} else {
scene.getJoints().addAll(joints);
}
}
// Second joint pass
jointSerializer.init(world, bodies, joints);
joints = json.readValue("joint", Array.class, Joint.class, jsonData);
// Images
Array<RubeImage> images = json.readValue("image", Array.class, RubeImage.class, jsonData);
if (images != null) {
if (scene.getImages() == null) {
scene.setImages(images);
} else {
scene.getImages().addAll(images);
}
for (int i = 0; i < images.size; i++) {
RubeImage image = images.get(i);
scene.setMappedImage(image.body, image);
}
}
return world;
}
Aggregations