package info.u250.c2d.box2deditor.gdx; import info.u250.c2d.box2d.model.b2BodyDefModel; import info.u250.c2d.box2d.model.fixture.b2RectangleFixtureDefModel; import info.u250.c2d.box2deditor.Main; import info.u250.c2d.box2deditor.adapter.SceneModelAdapter; import info.u250.c2d.box2deditor.gdx.scenes.MainScene; import info.u250.c2d.box2deditor.gdx.support.BuildWorld; import info.u250.c2d.box2deditor.io.IO; import info.u250.c2d.engine.Engine; import info.u250.c2d.engine.EngineDrive; import java.io.File; import com.badlogic.gdx.math.Vector2; public class EditorGdx extends Engine { @Override protected EngineDrive onSetupEngineDrive() { return new EditorEngineDrive(); } float tScale = 1; Vector2 m_offset = new Vector2(320.0f , 250 ); SceneModelAdapter model = new SceneModelAdapter(); b2BodyDefModel m_wheel; b2BodyDefModel m_chassis; void make(){ SceneModelAdapter model = new SceneModelAdapter(); b2RectangleFixtureDefModel def = new b2RectangleFixtureDefModel(); def.width = def.height = 20; model.addFixture(def); for(int i=0;i<10;i++){ for(int j=0;j<15;j++){ b2BodyDefModel body = new b2BodyDefModel(); body.fixtures.add(def); model.addBody(body); body.position.set(400+30*i,10+20*j); } } PhysicalWorld.MODEL = model; IO.INSTANCE.save(new File("D:\\test.txt")); IO.INSTANCE.read(new File("D:\\test.txt")); MainScene.INSTANCE.callUI.setupModel(); BuildWorld.buildBodys(); try{ Main.bind(PhysicalWorld.MODEL.bodyDefModels.get(0)); }catch(Exception ex){ ex.printStackTrace(); } } // void test(){ // // // // Vector2 pivot = new Vector2(0.0f, -24.0f / tScale); // // // // { // b2RectangleFixtureDefModel pd = new b2RectangleFixtureDefModel(); //// pd.density = 1.0; // pd.width = 75*2/tScale; // pd.height = 30*2 /tScale; //// pd.filter.groupIndex = -1; // m_chassis = new b2BodyDefModel(); // //bd.position = pivot + m_offset; // m_chassis.fixedRotation = true; // m_chassis.position .set( pivot.cpy().add(m_offset)); // m_chassis.fixtures.add(pd); // model.bodyDefModels.add(m_chassis); // } // // { // b2CircleFixtureDefModel cd = new b2CircleFixtureDefModel(); // cd.density = 1.0f; // cd.radius = 48 / tScale; //// cd.filter.groupIndex = -1; // m_wheel = new b2BodyDefModel(); // //bd.position = pivot + m_offset; // m_wheel.position .set( pivot.cpy().add(m_offset )); // m_wheel.fixtures.add(cd); // model.bodyDefModels.add(m_wheel); // } // // { // RevoluteJointDefModel jd = new RevoluteJointDefModel(); // jd.bodyA = m_wheel; // jd.bodyB = m_chassis; // jd.anchor = pivot.cpy().add(m_offset); // model.jointDefModels.add(jd); // } // // Vector2 wheelAnchor = new Vector2(); // // //wheelAnchor = pivot + b2Vec2(0.0f, -0.8); // wheelAnchor = new Vector2(0.0f, 24f/ tScale); // wheelAnchor.add(pivot); // // CreateLeg(-1.0f, wheelAnchor); // CreateLeg(1.0f, wheelAnchor); // // wheelAnchor.x = MathUtils.sin(120)*24; // wheelAnchor.y = MathUtils.cos(120)*24; // //// m_wheel.SetXForm(m_wheel.GetPosition(), 120.0 * Math.PI / 180.0); // CreateLeg(-1.0f, wheelAnchor); // CreateLeg(1.0f, wheelAnchor); // // wheelAnchor.x = MathUtils.sin(-120)*24; // wheelAnchor.y = MathUtils.cos(-120)*24; //// m_wheel.SetXForm(m_wheel.GetPosition(), -120.0 * Math.PI / 180.0); // CreateLeg(-1.0f, wheelAnchor); // CreateLeg(1.0f, wheelAnchor); // ((SerializableIO)IO.INSTANCE).model = this.model; // IO.INSTANCE.save(new File("D:\\test.txt")); // } // private void CreateLeg(float s, Vector2 wheelAnchor) // { // // Vector2 p1 = new Vector2(162 * s / tScale, 183 / tScale); // Vector2 p2 = new Vector2(216 * s / tScale, 36 / tScale); // Vector2 p3 = new Vector2(129 * s / tScale, 57 / tScale); // Vector2 p4 = new Vector2(93 * s / tScale, -24 / tScale); // Vector2 p5 = new Vector2(180 * s / tScale, -45 / tScale); // Vector2 p6 = new Vector2(75 * s / tScale, -111 / tScale); // // //b2PolygonDef sd1, sd2; // PolygonFixtureDefModel sd1 = new PolygonFixtureDefModel(); // PolygonFixtureDefModel sd2 = new PolygonFixtureDefModel(); //// sd1.vertexCount = 3; //// sd2.vertexCount = 3; //// sd1.filter.groupIndex = -1; //// sd2.filter.groupIndex = -1; //// sd1.density = 1.0; //// sd2.density = 1.0; // // Vector2 x = new Vector2(0,0); // if (s > 0.0f) // { // sd1.polygon.clear(); // sd2.polygon.clear(); // sd1.polygon.add(p3.cpy().add(x)); // sd1.polygon.add(p2.cpy().add(x)); // sd1.polygon.add(p1.cpy().add(x)); // sd2.polygon.add(p6.cpy().sub(p4).add(x)); // sd2.polygon.add(p5.cpy().sub(p4).add(x)); // sd2.polygon.add(new Vector2().add(x)); // } // else // { // sd1.polygon.clear(); // sd2.polygon.clear(); // sd1.polygon.add(p2.cpy().add(x)); // sd1.polygon.add(p3.cpy().add(x)); // sd1.polygon.add(p1.cpy().add(x)); // sd2.polygon.add(p5.cpy().sub(p4).add(x)); // sd2.polygon.add(p6.cpy().sub(p4).add(x)); // sd2.polygon.add(new Vector2().add(x)); // } // // //b2BodyDef bd1, bd2; // b2BodyDefModel bd1 = new b2BodyDefModel(); // b2BodyDefModel bd2 = new b2BodyDefModel(); // // bd1.position.set(m_offset); // bd2.position .set( p4.cpy().add(m_offset) ); // //// bd1.angularDamping = 10.0; //// bd2.angularDamping = 10.0; // // bd1.fixtures.add(sd1); // bd2.fixtures.add(sd2); // // model.fixtureDefModels.add(sd1); // model.fixtureDefModels.add(sd2); // model.bodyDefModels.add(bd1); // model.bodyDefModels.add(bd2); // BuildWorld.buildBody(bd1); // BuildWorld.buildBody(bd2); // // DistanceJointDefModel djd = new DistanceJointDefModel(); // djd.bodyA = bd1; // djd.bodyB = bd2; // djd.localAnchorA.set( bd1.body.getLocalPoint(p2.cpy().add(m_offset).div(Box2dObject.RADIO)).mul(Box2dObject.RADIO)); // djd.localAnchorB.set( bd2.body.getLocalPoint(p5.cpy().add(m_offset).div(Box2dObject.RADIO)).mul(Box2dObject.RADIO)); // // model.jointDefModels.add(djd); // // djd = new DistanceJointDefModel(); // djd.bodyA = bd1; // djd.bodyB = bd2; // djd.localAnchorA.set( bd1.body.getLocalPoint(p3.cpy().add(m_offset).div(Box2dObject.RADIO)).mul(Box2dObject.RADIO)); // djd.localAnchorB.set( bd2.body.getLocalPoint(p4.cpy().add(m_offset).div(Box2dObject.RADIO)).mul(Box2dObject.RADIO)); // // model.jointDefModels.add(djd); // // djd = new DistanceJointDefModel(); // djd.bodyA = bd1; // djd.bodyB = m_wheel; // djd.localAnchorA.set( bd1.body.getLocalPoint(p3.cpy().add(m_offset).div(Box2dObject.RADIO)).mul(Box2dObject.RADIO)); // djd.localAnchorB.set( bd2.body.getLocalPoint(wheelAnchor.cpy().add(m_offset).div(Box2dObject.RADIO)).mul(Box2dObject.RADIO)); // // model.jointDefModels.add(djd); // // djd = new DistanceJointDefModel(); // djd.bodyA = bd2; // djd.bodyB = m_wheel; // djd.localAnchorA.set( bd1.body.getLocalPoint(p6.cpy().add(m_offset).div(Box2dObject.RADIO)).mul(Box2dObject.RADIO)); // djd.localAnchorB.set( bd2.body.getLocalPoint(wheelAnchor.cpy().add(m_offset).div(Box2dObject.RADIO)).mul(Box2dObject.RADIO)); // // model.jointDefModels.add(djd); // // RevoluteJointDefModel rjd = new RevoluteJointDefModel(); // rjd.bodyA = bd2; // rjd.bodyB = m_chassis; // rjd.anchor.set( p4.cpy().add(m_offset)); // model.jointDefModels.add(djd); // // } }