Haxe Physics Engine

Physaxe is a 2D Rigid Body Physics engine written in Haxe. It can be compiled on all platforms but has been optimized for Flash Player 9. See http://code.google.com/p/physaxe

install:


haxelib install physaxe

Here's the demo, please use 1-9 keys to change the demo and click to fire a block and press space to vew the collisions :

[phxdemo.swf]

example:


class Test {

        static var world : phx.World;

        static function main() {
                // define the size of the world
                var size = new phx.col.AABB(-1000,-1000,1000,1000);
                // create the broadphase : this is the algorithm used to optimize collision detection
                var bf = new phx.col.SortedList();
                // initialize the world
                world = new phx.World(size,bf);
                // create one 50x50 box body at x=210,y=-50
                var b1 = new phx.Body(210,-50);
                b1.addShape( phx.Shape.makeBox(50,50) );
                // create one 30 radius circle at x=200,y=250
                var b2 = new phx.Body(200,250);
                b2.addShape( new phx.Circle(30,new phx.Vector(0,0)) );
                // create one 20x20 box body at x=100,y=270
                var b3 = new phx.Body(100,270);
                b3.addShape( phx.Shape.makeBox(20,20) );
                // add the created bodies to the world
                world.addBody(b1);
                world.addBody(b2);
                world.addBody(b3);
                // creates a 270x50 box at x=0,y=280
                var floor = phx.Shape.makeBox(270,50,0,280);
                // the floor is static, it can't move
                world.addStaticShape(floor);
                // setup gravity
                world.gravity = new phx.Vector(0,0.9);

                // for every frame, call the loop method
                flash.Lib.current.addEventListener(flash.events.Event.ENTER_FRAME,loop);
        }

        static function loop(_) {
                // update the world
                world.step(1,20);
                // clear the graphics
                var g = flash.Lib.current.graphics;
                g.clear();
                // draw the world
                var fd = new phx.FlashDraw(g);
                fd.drawCircleRotation = true;
                fd.drawWorld(world);
        }

}

compile:


You can compile this code with the following test.hxml file :
-swf test.swf
-swf-version 9
-swf-header 400:300:30
-main Test
-lib physaxe
version #10599, modified 2011-06-05 15:26:03 by commanderz