コード例 #1
0
        /// <summary>
        /// creates a overlay scene to display status text.
        /// </summary>
        /// <param name="window"></param>
        /// <param name="scene"></param>
        private static void SetupStatus(Window window, Scene scene)
        {
            Scene         scene2         = new Scene();
            PhysicsEngine physicsEngine2 = scene2.Engine;

            physicsEngine2.BroadPhase = new Physics2DDotNet.Detectors.SelectiveSweepDetector();
            //physicsEngine.BroadPhase = new Physics2DDotNet.Detectors.SpatialHashDetector();
            Physics2DDotNet.Solvers.SequentialImpulsesSolver solver = new Physics2DDotNet.Solvers.SequentialImpulsesSolver();
            solver.Iterations = 1;

            physicsEngine2.Solver = solver;

            Viewport viewport2 = new Viewport(
                new Rectangle(0, 0, window.Size.Width, window.Size.Height), //where
                Matrix2x3.Identity,                                         //how
                scene2,                                                     //who
                new Lifespan());                                            // how long

            window.AddViewport(viewport2);


            window.Resized += delegate(object sender, SizeEventArgs e)
            {
                viewport2.Width  = e.Width;
                viewport2.Height = e.Height;
            };

            numbers  = new IShape[10];
            numbers2 = new SurfacePolygons[10];
            for (int index = 0; index < numbers.Length; ++index)
            {
                numbers2[index] = Cache <SurfacePolygons> .GetItem(numberString[index] + "|FreeSans.ttf:20", Color.Black);

                numbers[index] = ShapeFactory.CreateSprite(numbers2[index], 0, 8, 2);
                SpriteDrawable s = numbers[index].Tag as SpriteDrawable;
                s.Color = new ScalarColor4(.1f, .1f, 1, 1);
            }

            DoBodyCount(window, viewport2, scene, scene2, new Vector2D(100, 2));
            DoJointCount(window, viewport2, scene, scene2, new Vector2D(100, 30));
            DoLogicsCount(window, viewport2, scene, scene2, new Vector2D(270, 2));
            DoFPS(window, viewport2, scene, scene2, new Vector2D(2, 2));
            DoUPS(window, viewport2, scene, scene2, new Vector2D(2, 30));
        }
コード例 #2
0
ファイル: Demo.cs プロジェクト: bsvercl/physics2d
        /// <summary>
        /// initializes the PhysicsEngine
        /// </summary>
        void CreateEngine()
        {
            //creates it
            engine = new PhysicsEngine();

            //sets the broadphase
            //engine.BroadPhase = new Physics2DDotNet.Detectors.BruteForceDetector();
            //engine.BroadPhase = new Physics2DDotNet.Detectors.SweepAndPruneDetector();
            engine.BroadPhase = new Physics2DDotNet.Detectors.SelectiveSweepDetector();
            //engine.BroadPhase = new Physics2DDotNet.Detectors.FrameCoherentSAPDetector();
            //engine.BroadPhase = new Physics2DDotNet.Detectors.SpatialHashDetector();
            //engine.BroadPhase = new Physics2DDotNet.Detectors.SpatialHashDetector2();
            
            //setups the Solver and sets it.
            Physics2DDotNet.Solvers.SequentialImpulsesSolver solver = new Physics2DDotNet.Solvers.SequentialImpulsesSolver();
            solver.Iterations = 12;
            solver.SplitImpulse = true;
            solver.BiasFactor = .7f;
            //solver.BiasFactor = .3f;
            solver.AllowedPenetration = .1f;
            engine.Solver = solver;

            engine.BodiesAdded += new EventHandler<CollectionEventArgs<Body>>(engine_BodiesAdded);
            engine.BodiesRemoved += new EventHandler<CollectionEventArgs<Body>>(engine_BodiesRemoved);
        }
コード例 #3
0
        /// <summary>
        /// Call this to start the demo
        /// (Entry Point)
        /// </summary>
        public static void Run()
        {
            //do this becuase .Net has been erroring with file permissions
            //just leave this line it.
            string dir = Settings.DataDir;


            //create a new window to display stuff
            Window window = new Window(new System.Drawing.Size(1000, 750));
            window.Title = "Physics2D.Net Demo";


            //Create a new Scene 
            Scene scene = new Scene();

            //Get the scene's physics engine
            PhysicsEngine physicsEngine = scene.Engine;
            //initialize the engine 
            physicsEngine.BroadPhase = new Physics2DDotNet.Detectors.SweepAndPruneDetector();
            //physicsEngine.BroadPhase = new Physics2DDotNet.Detectors.SpatialHashDetector();
            Physics2DDotNet.Solvers.SequentialImpulsesSolver solver= new Physics2DDotNet.Solvers.SequentialImpulsesSolver();
            //solver.Iterations = 3;
            solver.Freezing = true;
            physicsEngine.Solver = solver;
            //physicsEngine.Solver = new Physics2DDotNet.Solvers.Box2DSolver();



            Viewport viewport = new Viewport(
                new Rectangle(0, 0, window.Size.Width, window.Size.Height), //where
                Matrix2x3.Identity, //how
                scene, //who
                new Lifespan()); // how long 
            window.AddViewport(viewport);

            // you can change the veiwport via this 
            viewport.ToScreen = Matrix2x3.FromTransformation(.09f, new Vector2D(40, 0));

            //make it so the veiwport will be resized whn the window is
            window.Resized += delegate(object sender, SizeEventArgs e)
            {
                viewport.Width = e.Width;
                viewport.Height = e.Height;
            };
            System.Windows.Forms.Application.EnableVisualStyles();
            //create the GUI
            DemoSelector selector = new DemoSelector();
            //initialize the GUI
            selector.Initialize(window, viewport, scene);
            //Create the window
            window.Intialize();
            window.DrawingInterval = .02f;
            //Add some intro text
            AddIntroText(window, viewport, scene);

            SetupStatus(window, scene);


            //Show the GUI
            selector.Show();
            //start the physicstimer for Layer.PhysicsEngine
            scene.Timer.IsRunning = true;
            //Begin the rendering loop. 
            window.Run();
            return;
        }
コード例 #4
0
        /// <summary>
        /// creates a overlay scene to display status text.
        /// </summary>
        /// <param name="window"></param>
        /// <param name="scene"></param>
        private static void SetupStatus(Window window, Scene scene)
        {

            Scene scene2 = new Scene();
            PhysicsEngine physicsEngine2 = scene2.Engine;
            physicsEngine2.BroadPhase = new Physics2DDotNet.Detectors.SelectiveSweepDetector();
            //physicsEngine.BroadPhase = new Physics2DDotNet.Detectors.SpatialHashDetector();
            Physics2DDotNet.Solvers.SequentialImpulsesSolver solver = new Physics2DDotNet.Solvers.SequentialImpulsesSolver();
            solver.Iterations = 1;
            
            physicsEngine2.Solver = solver;

            Viewport viewport2 = new Viewport(
                    new Rectangle(0, 0, window.Size.Width, window.Size.Height), //where
                    Matrix2x3.Identity, //how
                    scene2, //who
                    new Lifespan()); // how long
            window.AddViewport(viewport2);


            window.Resized += delegate(object sender, SizeEventArgs e)
            {
                viewport2.Width = e.Width;
                viewport2.Height = e.Height;
            };

            numbers = new IShape[10];
            numbers2 = new SurfacePolygons[10];
            for (int index = 0; index < numbers.Length; ++index)
            {
                numbers2[index] = Cache<SurfacePolygons>.GetItem(numberString[index] + "|FreeSans.ttf:20", Color.Black);
                numbers[index] = ShapeFactory.CreateSprite(numbers2[index], 0, 8, 2);
                SpriteDrawable s = numbers[index].Tag as SpriteDrawable;
                s.Color = new ScalarColor4(.1f, .1f, 1, 1);
            }

            DoBodyCount(window, viewport2, scene, scene2, new Vector2D(100, 2));
            DoJointCount(window, viewport2, scene, scene2, new Vector2D(100, 30));
            DoLogicsCount(window, viewport2, scene, scene2, new Vector2D(270, 2));
            DoFPS(window, viewport2, scene, scene2, new Vector2D(2, 2));
            DoUPS(window, viewport2, scene, scene2, new Vector2D(2, 30));
        }
コード例 #5
0
ファイル: Demo.cs プロジェクト: homoluden/Phisics2D.Net
        void InitializePhysicsEngine()
        {
            //create a new PhysicsEngine.
            engine = new PhysicsEngine();

            //set its broad phase to SweepAndPrune.
            engine.BroadPhase = new Physics2DDotNet.Detectors.SweepAndPruneDetector();

            //create a new solver.
            Physics2DDotNet.Solvers.SequentialImpulsesSolver solver = new Physics2DDotNet.Solvers.SequentialImpulsesSolver();
            //optionaly set its options.
            solver.SplitImpulse = true;
            solver.Iterations = 13;
            solver.BiasFactor = .7f;
            solver.AllowedPenetration = .01f;
            //set the engines solver to it.
            engine.Solver = solver;
        }
コード例 #6
0
        /// <summary>
        /// Call this to start the demo
        /// (Entry Point)
        /// </summary>
        public static void Run()
        {
            //do this becuase .Net has been erroring with file permissions
            //just leave this line it.
            string dir = Settings.DataDir;


            //create a new window to display stuff
            Window window = new Window(new System.Drawing.Size(1000, 750));

            window.Title = "Physics2D.Net Demo";


            //Create a new Scene
            Scene scene = new Scene();

            //Get the scene's physics engine
            PhysicsEngine physicsEngine = scene.Engine;

            //initialize the engine
            physicsEngine.BroadPhase = new Physics2DDotNet.Detectors.SweepAndPruneDetector();
            //physicsEngine.BroadPhase = new Physics2DDotNet.Detectors.SpatialHashDetector();
            Physics2DDotNet.Solvers.SequentialImpulsesSolver solver = new Physics2DDotNet.Solvers.SequentialImpulsesSolver();
            //solver.Iterations = 3;
            solver.Freezing      = true;
            physicsEngine.Solver = solver;
            //physicsEngine.Solver = new Physics2DDotNet.Solvers.Box2DSolver();



            Viewport viewport = new Viewport(
                new Rectangle(0, 0, window.Size.Width, window.Size.Height), //where
                Matrix2x3.Identity,                                         //how
                scene,                                                      //who
                new Lifespan());                                            // how long

            window.AddViewport(viewport);

            // you can change the veiwport via this
            viewport.ToScreen = Matrix2x3.FromTransformation(.09f, new Vector2D(40, 0));

            //make it so the veiwport will be resized whn the window is
            window.Resized += delegate(object sender, SizeEventArgs e)
            {
                viewport.Width  = e.Width;
                viewport.Height = e.Height;
            };
            System.Windows.Forms.Application.EnableVisualStyles();
            //create the GUI
            DemoSelector selector = new DemoSelector();

            //initialize the GUI
            selector.Initialize(window, viewport, scene);
            //Create the window
            window.Intialize();
            window.DrawingInterval = .02f;
            //Add some intro text
            AddIntroText(window, viewport, scene);

            SetupStatus(window, scene);


            //Show the GUI
            selector.Show();
            //start the physicstimer for Layer.PhysicsEngine
            scene.Timer.IsRunning = true;
            //Begin the rendering loop.
            window.Run();
            return;
        }