/// <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); }
/// <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); }