Beispiel #1
0
        private SimpleWindForceTest()
        {
            _simpleWind            = new SimpleWindForce();
            _simpleWind.Direction  = new Vector2(0.7f, 0.2f);
            _simpleWind.Variation  = 1.0f;
            _simpleWind.Strength   = 5;
            _simpleWind.Position   = new Vector2(0, 20);
            _simpleWind.DecayStart = 5f;
            _simpleWind.DecayEnd   = 10f;
            _simpleWind.DecayMode  = AbstractForceController.DecayModes.Step;
            _simpleWind.ForceType  = AbstractForceController.ForceTypes.Point;

            _strength = 1.0f;

            World.Add(_simpleWind);
            World.Gravity = Vector2.Zero;

            const int countX = 10;
            const int countY = 10;

            for (int x = 0; x < countX; x++)
            {
                for (int y = 0; y < countY; y++)
                {
                    Body currentBody    = World.CreateBody(new Vector2(x * 2 - countX, y * 2 + 5), 0.6f, BodyType.Dynamic);
                    var  currentFixture = currentBody.CreateRectangle(1f, 1f, 5f, Vector2.Zero);
                    //Body currentBody = World.CreateBody(new Vector2(x - countX, y + 5), 0.6f, BodyType.Dynamic);
                    //var currentFixture = currentBody.CreateCircle(0.2f, 10f);
                    currentFixture.Friction = 0.5f;
                    //currentFixture.CollidesWith = Category.Cat10;
                }
            }

            Body floor   = World.CreateRectangle(100, 1, 1, new Vector2(0, 0));
            Body ceiling = World.CreateRectangle(100, 1, 1, new Vector2(0, 40));
            Body right   = World.CreateRectangle(1, 100, 1, new Vector2(35, 0));
            Body left    = World.CreateRectangle(1, 100, 1, new Vector2(-35, 0));

            foreach (var fixture in floor.FixtureList)
            {
                fixture.Friction = 0.2f;
            }
            foreach (var fixture in ceiling.FixtureList)
            {
                fixture.Friction = 0.2f;
            }
            foreach (var fixture in right.FixtureList)
            {
                fixture.Friction = 0.2f;
            }
            foreach (var fixture in left.FixtureList)
            {
                fixture.Friction = 0.2f;
            }
        }
        private SimpleWindForceTest()
        {
            _simpleWind            = new SimpleWindForce();
            _simpleWind.Direction  = new Vector2(0.7f, 0.2f);
            _simpleWind.Variation  = 1.0f;
            _simpleWind.Strength   = 5;
            _simpleWind.Position   = new Vector2(0, 20);
            _simpleWind.DecayStart = 5f;
            _simpleWind.DecayEnd   = 10f;
            _simpleWind.DecayMode  = AbstractForceController.DecayModes.Step;
            _simpleWind.ForceType  = AbstractForceController.ForceTypes.Point;

            _strength = 1.0f;

            World.AddController(_simpleWind);
            World.Gravity = Vector2.Zero;

            const int countX = 10;
            const int countY = 10;

            for (int x = 0; x < countX; x++)
            {
                for (int y = 0; y < countY; y++)
                {
                    Body currentFixture = BodyFactory.CreateRectangle(World, 1f, 1f, 5f,
                                                                      new Vector2(x * 2 - countX, y * 2 + 5));

                    //Fixture currentFixture = BodyFactory.CreateCircle(World, 0.2f, 10f, new Vector2(x - countX, y  + 5));
                    currentFixture.BodyType = BodyType.Dynamic;
                    currentFixture.Friction = 0.5f;
                    currentFixture.SetTransform(currentFixture.Position, 0.6f);

                    //currentFixture.CollidesWith = Category.Cat10;
                }
            }

            Body floor   = BodyFactory.CreateRectangle(World, 100, 1, 1, new Vector2(0, 0));
            Body ceiling = BodyFactory.CreateRectangle(World, 100, 1, 1, new Vector2(0, 40));
            Body right   = BodyFactory.CreateRectangle(World, 1, 100, 1, new Vector2(35, 0));
            Body left    = BodyFactory.CreateRectangle(World, 1, 100, 1, new Vector2(-35, 0));

            floor.Friction   = 0.2f;
            ceiling.Friction = 0.2f;
            right.Friction   = 0.2f;
            left.Friction    = 0.2f;
        }