![JAR search and dependency download from the Maven repository](/logo.png)
net.dermetfan.gdx.physics.box2d.kryo.serializers.FixtureDefSerializer Maven / Gradle / Ivy
/** Copyright 2014 Robin Stumm ([email protected], http://dermetfan.net)
*
* 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 net.dermetfan.gdx.physics.box2d.kryo.serializers;
import com.badlogic.gdx.physics.box2d.ChainShape;
import com.badlogic.gdx.physics.box2d.CircleShape;
import com.badlogic.gdx.physics.box2d.EdgeShape;
import com.badlogic.gdx.physics.box2d.FixtureDef;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.Shape.Type;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.Serializer;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
public class FixtureDefSerializer extends Serializer {
public static final FixtureDefSerializer instance = new FixtureDefSerializer();
/** singleton */
private FixtureDefSerializer() {}
@Override
public void write(Kryo kryo, Output output, FixtureDef fixtureDef) {
output.writeFloat(fixtureDef.density);
output.writeFloat(fixtureDef.friction);
output.writeFloat(fixtureDef.restitution);
output.writeBoolean(fixtureDef.isSensor);
output.writeShort(fixtureDef.filter.categoryBits);
output.writeShort(fixtureDef.filter.maskBits);
output.writeShort(fixtureDef.filter.groupIndex);
kryo.writeObject(output, fixtureDef.shape.getType());
switch(fixtureDef.shape.getType()) {
case Circle:
kryo.writeObject(output, fixtureDef.shape, CircleShapeSerializer.instance);
break;
case Edge:
kryo.writeObject(output, fixtureDef.shape, EdgeShapeSerializer.instance);
break;
case Chain:
kryo.writeObject(output, fixtureDef.shape, ChainShapeSerializer.instance);
break;
case Polygon:
kryo.writeObject(output, fixtureDef.shape, PolygonShapeSerializer.instance);
}
}
@Override
public FixtureDef read(Kryo kryo, Input input, Class type) {
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.density = input.readFloat();
fixtureDef.friction = input.readFloat();
fixtureDef.restitution = input.readFloat();
fixtureDef.isSensor = input.readBoolean();
fixtureDef.filter.categoryBits = input.readShort();
fixtureDef.filter.maskBits = input.readShort();
fixtureDef.filter.groupIndex = input.readShort();
Type shapeType = kryo.readObject(input, Type.class);
switch(shapeType) {
case Circle:
fixtureDef.shape = kryo.readObject(input, CircleShape.class, CircleShapeSerializer.instance);
break;
case Edge:
fixtureDef.shape = kryo.readObject(input, EdgeShape.class, EdgeShapeSerializer.instance);
break;
case Chain:
fixtureDef.shape = kryo.readObject(input, ChainShape.class, ChainShapeSerializer.instance);
break;
case Polygon:
fixtureDef.shape = kryo.readObject(input, PolygonShape.class, PolygonShapeSerializer.instance);
}
return fixtureDef;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy