Search in sources :

Example 26 with Vec2

use of spacegraph.space2d.phys.common.Vec2 in project narchy by automenta.

the class TestQueryCallback method init.

public void init(TestbedState model) {
    this.model = model;
    Vec2 gravity = new Vec2(0, -10f);
    world = model.getWorldCreator().createWorld(gravity);
    bomb = null;
    mouseJoint = null;
    mouseTracing = false;
    mouseTracerPosition.setZero();
    mouseTracerVelocity.setZero();
    BodyDef bodyDef = new BodyDef();
    groundBody = world.createBody(bodyDef);
    init(world, false);
}
Also used : Vec2(spacegraph.space2d.phys.common.Vec2)

Example 27 with Vec2

use of spacegraph.space2d.phys.common.Vec2 in project narchy by automenta.

the class Sim method initTest.

@Override
public void initTest(boolean deserialized) {
    getWorld().setGravity(new Vec2());
    getWorld().setAllowSleep(false);
}
Also used : Vec2(spacegraph.space2d.phys.common.Vec2)

Example 28 with Vec2

use of spacegraph.space2d.phys.common.Vec2 in project narchy by automenta.

the class TopDownViewWheeledPhysicsComponent method stop.

public void stop() {
    if (cachedPhysics2dBody == null) {
        return;
    }
    cachedPhysics2dBody.body.setAngularVelocity(0);
    cachedPhysics2dBody.body.setLinearVelocity(new Vec2());
}
Also used : Vec2(spacegraph.space2d.phys.common.Vec2)

Example 29 with Vec2

use of spacegraph.space2d.phys.common.Vec2 in project narchy by automenta.

the class TopDownViewWheeledPhysicsComponent method thrust.

public void thrust(float angle, float force) {
    if (cachedPhysics2dBody == null) {
        return;
    }
    // + Math.PI / 2; //compensate for initial orientation
    angle += cachedPhysics2dBody.body.getAngle();
    // cachedPhysics2dBody.body..applyForceToCenter(new Vec2((float) Math.cos(angle) * force, (float) Math.sin(angle) * force));
    Vec2 v = new Vec2((float) Math.cos(angle) * force, (float) Math.sin(angle) * force);
    cachedPhysics2dBody.body.setLinearVelocity(v);
    if (setRotationOfPhysics2dBody) {
        cachedPhysics2dBody.body.setTransform(cachedPhysics2dBody.body.getPosition(), angle);
    }
}
Also used : Vec2(spacegraph.space2d.phys.common.Vec2)

Example 30 with Vec2

use of spacegraph.space2d.phys.common.Vec2 in project narchy by automenta.

the class Test method main.

public static void main(String[] args) {
    Environment environment = new Environment();
    JavascriptDescriptor javascriptDescriptor = new JavascriptDescriptor();
    javascriptDescriptor.engine = new JavascriptEngine();
    javascriptDescriptor.environmentScriptingAccessor = new EnvironmentScriptingAccessor(environment);
    javascriptDescriptor.helperScriptingAccessor = new HelperScriptingAccessor();
    javascriptDescriptor.componentManipulationScriptingAccessor = new ComponentManipulationScriptingAccessor();
    // execute the initialisation script
    final String worldInitialisationScript = "function initializeWorld(environment) {" + "   environmentScriptingAccessor.physics2dCreateWorld();" + "}";
    WorldInitialisation.executeWorldInitialisationScript(environment, javascriptDescriptor, worldInitialisationScript);
    final String spawnScript = "function spawn() {" + "   var resultEntity = environmentScriptingAccessor.createNewEntity(helperScriptingAccessor.create2dArrayRealVector(0.0, 0.0));\n" + "   // create physics body of a rover body and set physics parameters\n" + "   var verticesPoints = helperScriptingAccessor.createList();\n" + "   verticesPoints.add(helperScriptingAccessor.create2dArrayRealVector(3.0, 0.0));\n" + "   verticesPoints.add(helperScriptingAccessor.create2dArrayRealVector(-1.0, 2.0));\n" + "   verticesPoints.add(helperScriptingAccessor.create2dArrayRealVector(-1.0, -2.0));\n" + "   var linearDamping = 0.9;\n" + "   var angularDamping = 0.6;\n" + "   var restitution = 0.9; // bounciness\n" + "   var friction = 0.5;\n" + "   var mass = 5.0;\n" + "   var static = false;\n" + "   var position = helperScriptingAccessor.create2dArrayRealVector(0.0, 0.0);\n" + "   resultEntity.physics2dBody = environmentScriptingAccessor.physics2dCreateBodyWithShape(static, position, verticesPoints, linearDamping, angularDamping, mass, restitution, friction);\n" + "   " + "   var physicsComponent = componentManipulationScriptingAccessor.createTopDownViewWheeledPhysicsComponent(8.0, 0.44 * 0.25);" + "   resultEntity.components.addComponent(physicsComponent);\n" + "   var controllerComponent = componentManipulationScriptingAccessor.createTopDownViewWheeledControllerComponent(1.0);" + "   controllerComponent.physicsComponent = physicsComponent;" + "   resultEntity.components.addComponent(controllerComponent);\n" + "   var biasedRandomAIComponent = componentManipulationScriptingAccessor.createBiasedRandomAIComponent(3.0, 0.5, 0.5);" + "   biasedRandomAIComponent.topDownViewWheeledControllerComponent = controllerComponent;" + "   resultEntity.components.addComponent(biasedRandomAIComponent);\n" + "   " + "   return resultEntity;\n" + "}\n";
    EntityDescriptor entityDescriptor = EntitySpawner.spawn(javascriptDescriptor, spawnScript, new ArrayList<>());
    environment.entities.add(entityDescriptor);
    // spawn testboxes manually
    final List<ArrayRealVector> boxPositions = RandomSampler.sample(new ArrayRealVector(new double[] { 10.0, 10.0 }), 10);
    for (final ArrayRealVector boxPosition : boxPositions) {
        EntityDescriptor createdEntity = javascriptDescriptor.environmentScriptingAccessor.createNewEntity(javascriptDescriptor.helperScriptingAccessor.create2dArrayRealVector(0.0f, 0.0f));
        // create physics body of a rover body and set physics parameters
        List verticesPoints = javascriptDescriptor.helperScriptingAccessor.createList();
        verticesPoints.add(javascriptDescriptor.helperScriptingAccessor.create2dArrayRealVector(-.5f, 0.5f));
        verticesPoints.add(javascriptDescriptor.helperScriptingAccessor.create2dArrayRealVector(0.5f, 0.5f));
        verticesPoints.add(javascriptDescriptor.helperScriptingAccessor.create2dArrayRealVector(0.5f, -0.5f));
        verticesPoints.add(javascriptDescriptor.helperScriptingAccessor.create2dArrayRealVector(-0.5f, -0.5f));
        float linearDamping = 0.9f;
        float angularDamping = 0.6f;
        float restitution = 0.9f;
        float friction = 0.5f;
        float mass = 5.0f;
        boolean isStatic = false;
        ArrayRealVector position = boxPosition;
        createdEntity.physics2dBody = javascriptDescriptor.environmentScriptingAccessor.physics2dCreateBodyWithShape(isStatic, position, verticesPoints, linearDamping, angularDamping, mass, restitution, friction);
        environment.entities.add(createdEntity);
    }
    final float timeDelta = 0.1f;
    final float cameraZoomScaleDiff = 2.0f;
    final float initScale = 50.0f;
    final Vec2 initPosition = new Vec2(-10.0f, -10.0f);
    PhysicsCamera physicsCamera = new PhysicsCamera(initPosition, initScale, cameraZoomScaleDiff);
    JoglAbstractDraw debugDraw = new JoglDraw(physicsCamera);
    GLCapabilities config = new GLCapabilities(GLProfile.getDefault());
    config.setHardwareAccelerated(true);
    config.setAlphaBits(8);
    config.setAccumAlphaBits(8);
    config.setAccumRedBits(8);
    config.setAccumGreenBits(8);
    config.setAccumBlueBits(8);
    config.setNumSamples(1);
    // config.setBackgroundOpaque(false);
    JoglPanel panel = new JoglPanel(environment.physicsWorld2d, debugDraw, null, config);
    debugDraw.setPanel(panel);
    DrawerRunnable drawerRunnable = new DrawerRunnable();
    drawerRunnable.panel = panel;
    JFrame window = new JFrame();
    window.setTitle("Testbed");
    window.setLayout(new BorderLayout());
    window.add(panel, "Center");
    window.pack();
    window.setVisible(true);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    for (; ; ) {
        environment.stepFrame(timeDelta, javascriptDescriptor);
        for (EntityDescriptor iterationEntity : environment.entities) {
            if (iterationEntity.physics2dBody == null) {
                continue;
            }
        }
        // draw
        SwingUtilities.invokeLater(drawerRunnable);
        try {
            Thread.sleep((int) (timeDelta * 1000.0f));
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
    }
}
Also used : ArrayRealVector(org.apache.commons.math3.linear.ArrayRealVector) PhysicsCamera(nars.rover.physics.PhysicsCamera) JavascriptEngine(ptrman.difficultyEnvironment.JavascriptEngine) EnvironmentScriptingAccessor(ptrman.difficultyEnvironment.scriptAccessors.EnvironmentScriptingAccessor) JoglDraw(ptrman.difficultyEnvironment.view.JoglDraw) DrawerRunnable(ptrman.difficultyEnvironment.view.DrawerRunnable) ComponentManipulationScriptingAccessor(ptrman.difficultyEnvironment.scriptAccessors.ComponentManipulationScriptingAccessor) EntityDescriptor(ptrman.difficultyEnvironment.EntityDescriptor) GLCapabilities(com.jogamp.opengl.GLCapabilities) HelperScriptingAccessor(ptrman.difficultyEnvironment.scriptAccessors.HelperScriptingAccessor) Vec2(spacegraph.space2d.phys.common.Vec2) JoglPanel(ptrman.difficultyEnvironment.view.JoglPanel) JavascriptDescriptor(ptrman.difficultyEnvironment.JavascriptDescriptor) Environment(ptrman.difficultyEnvironment.Environment) ArrayList(java.util.ArrayList) List(java.util.List) JoglAbstractDraw(nars.rover.physics.gl.JoglAbstractDraw)

Aggregations

Vec2 (spacegraph.space2d.phys.common.Vec2)41 Body (spacegraph.space2d.phys.dynamics.Body)9 PolygonShape (spacegraph.space2d.phys.collision.shapes.PolygonShape)6 Tuple2f (spacegraph.util.math.Tuple2f)6 MouseJoint (spacegraph.space2d.phys.dynamics.joints.MouseJoint)4 JoglAbstractDraw (nars.rover.physics.gl.JoglAbstractDraw)3 ArrayRealVector (org.apache.commons.math3.linear.ArrayRealVector)3 Color3f (spacegraph.space2d.phys.common.Color3f)3 BodyDef (spacegraph.space2d.phys.dynamics.BodyDef)3 Fixture (spacegraph.space2d.phys.dynamics.Fixture)3 VisionRay (nars.rover.obj.VisionRay)2 Physics2dBody (ptrman.difficultyEnvironment.physics.Physics2dBody)2 CircleShape (spacegraph.space2d.phys.collision.shapes.CircleShape)2 DistanceJoint (spacegraph.space2d.phys.dynamics.joints.DistanceJoint)2 GLCapabilities (com.jogamp.opengl.GLCapabilities)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Material (nars.rover.Material)1 PhysicsModel (nars.rover.PhysicsModel)1 Sim (nars.rover.Sim)1