Exemplo n.º 1
0
        /// <summary>
        /// This is a javascript application.
        /// </summary>
        /// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
        public Application(IApp page)
        {

            Console.WriteLine("InitializeContent");

            //, b2Fixture = Box2D.Dynamics.b2Fixture

            //, b2MassData = Box2D.Collision.Shapes.b2MassData




            ;
            var world = new Box2D.Dynamics.b2World(
               new Box2D.Common.Math.b2Vec2(0, 10)    //gravity
            , true                 //allow sleep
         );
            var fixDef = new Box2D.Dynamics.b2FixtureDef();
            fixDef.density = 1.0;
            fixDef.friction = 0.5;
            fixDef.restitution = 0.2;

            var bodyDef = new Box2D.Dynamics.b2BodyDef();

            //create ground
            const int b2Body_b2_staticBody = 0;
            bodyDef.type = b2Body_b2_staticBody;

            bodyDef.position.x = 9;
            bodyDef.position.y = 13;
            fixDef.shape = new Box2D.Collision.Shapes.b2PolygonShape();
            ((Box2D.Collision.Shapes.b2PolygonShape)fixDef.shape).SetAsBox(10, 0.5);
            world.CreateBody(bodyDef).CreateFixture(fixDef);
            //var x = world.CreateBody(bodyDef);
            //new IFunction("x", "alert(typeof x);").apply(null, x);
            var __random = new IFunction("return Math.random();");
            Func<double> Math_random = () => (double)__random.apply(null);
            //create some objects

            const int b2Body_b2_dynamicBody = 2;
            bodyDef.type = b2Body_b2_dynamicBody;
            for (var i = 0; i < 10; i++)
            {
                if (Math_random() > 0.5)
                {
                    fixDef.shape = new Box2D.Collision.Shapes.b2PolygonShape();
                    ((Box2D.Collision.Shapes.b2PolygonShape)fixDef.shape).SetAsBox(
                          Math_random() + 0.1 //half width
                       , Math_random() + 0.1 //half height
                    );
                }
                else
                {
                    fixDef.shape = new Box2D.Collision.Shapes.b2CircleShape(
                       Math_random() + 0.1 //radius
                    );
                }
                bodyDef.position.x = Math_random() * 10;
                bodyDef.position.y = Math_random() * 10;
                world.CreateBody(bodyDef).CreateFixture(fixDef);
            }
            //setup debug draw
            var debugDraw = new Box2D.Dynamics.b2DebugDraw();
            var context = page.canvas1.getContext("2d");
            debugDraw.SetSprite(context);
            debugDraw.SetDrawScale(30.0);
            debugDraw.SetFillAlpha(0.3);
            debugDraw.SetLineThickness(1.0);
            const int b2DebugDraw_e_shapeBit = 0x1;
            const int b2DebugDraw_e_jointBit = 0x2;
            debugDraw.SetFlags(b2DebugDraw_e_shapeBit | b2DebugDraw_e_jointBit);
            world.SetDebugDraw(debugDraw);

            var c = 0;
            Native.window.onframe += delegate
            {
                c++;
                Native.document.title = "" + c;
                world.Step(
                       1.0 / 60   //frame-rate
                    , 10       //velocity iterations
                    , 10       //position iterations
                        );
                world.DrawDebugData();
                world.ClearForces();



            };

            Console.WriteLine("InitializeContent done");

            //new IFunction("alert(Box2D);").apply(null);
            //Native.Window.alert("bodyDef=" + bodyDef);
        }
Exemplo n.º 2
0
        /// <summary>
        /// This is a javascript application.
        /// </summary>
        /// <param name="page">HTML document rendered by the web server which can now be enhanced.</param>
        public Application(IApp page)
        {
            Console.WriteLine("InitializeContent");

            //, b2Fixture = Box2D.Dynamics.b2Fixture

            //, b2MassData = Box2D.Collision.Shapes.b2MassData



            ;
            var world = new Box2D.Dynamics.b2World(
                new Box2D.Common.Math.b2Vec2(0, 10) //gravity
                , true                              //allow sleep
                );
            var fixDef = new Box2D.Dynamics.b2FixtureDef();

            fixDef.density     = 1.0;
            fixDef.friction    = 0.5;
            fixDef.restitution = 0.2;

            var bodyDef = new Box2D.Dynamics.b2BodyDef();

            //create ground
            const int b2Body_b2_staticBody = 0;

            bodyDef.type = b2Body_b2_staticBody;

            bodyDef.position.x = 9;
            bodyDef.position.y = 13;
            fixDef.shape       = new Box2D.Collision.Shapes.b2PolygonShape();
            ((Box2D.Collision.Shapes.b2PolygonShape)fixDef.shape).SetAsBox(10, 0.5);
            world.CreateBody(bodyDef).CreateFixture(fixDef);
            //var x = world.CreateBody(bodyDef);
            //new IFunction("x", "alert(typeof x);").apply(null, x);
            var           __random    = new IFunction("return Math.random();");
            Func <double> Math_random = () => (double)__random.apply(null);
            //create some objects

            const int b2Body_b2_dynamicBody = 2;

            bodyDef.type = b2Body_b2_dynamicBody;
            for (var i = 0; i < 10; i++)
            {
                if (Math_random() > 0.5)
                {
                    fixDef.shape = new Box2D.Collision.Shapes.b2PolygonShape();
                    ((Box2D.Collision.Shapes.b2PolygonShape)fixDef.shape).SetAsBox(
                        Math_random() + 0.1   //half width
                        , Math_random() + 0.1 //half height
                        );
                }
                else
                {
                    fixDef.shape = new Box2D.Collision.Shapes.b2CircleShape(
                        Math_random() + 0.1 //radius
                        );
                }
                bodyDef.position.x = Math_random() * 10;
                bodyDef.position.y = Math_random() * 10;
                world.CreateBody(bodyDef).CreateFixture(fixDef);
            }
            //setup debug draw
            var debugDraw = new Box2D.Dynamics.b2DebugDraw();
            var context   = page.canvas1.getContext("2d");

            debugDraw.SetSprite(context);
            debugDraw.SetDrawScale(30.0);
            debugDraw.SetFillAlpha(0.3);
            debugDraw.SetLineThickness(1.0);
            const int b2DebugDraw_e_shapeBit = 0x1;
            const int b2DebugDraw_e_jointBit = 0x2;

            debugDraw.SetFlags(b2DebugDraw_e_shapeBit | b2DebugDraw_e_jointBit);
            world.SetDebugDraw(debugDraw);

            var c = 0;

            Native.window.onframe += delegate
            {
                c++;
                Native.document.title = "" + c;
                world.Step(
                    1.0 / 60   //frame-rate
                    , 10       //velocity iterations
                    , 10       //position iterations
                    );
                world.DrawDebugData();
                world.ClearForces();
            };

            Console.WriteLine("InitializeContent done");

            //new IFunction("alert(Box2D);").apply(null);
            //Native.Window.alert("bodyDef=" + bodyDef);
        }