Пример #1
0
        public override void Construct()
        {
            Demo.Window.Title = "Friction Demo";

            Demo.Camera3D.Position = new Vector3(-46.62277f, 105.9008f, 79.68979f);
            Demo.Camera3D.Target   = new Vector3(-46.25956f, 105.3427f, 78.94375f);

            ConstructGround(23);
            Body3D body3D =
                Body3DFactory.CreateBody3D(
                    _leftBlock,
                    Demo.World3D.World2D,
                    Demo.GraphicsDevice,
                    new Vector2(-59.15f, 5.9f),
                    BodyType.Static);

            body3D.Body2D.SetCollisionCategories(Category.Cat31);
            Demo.World3D.AddBody3D(body3D);

            body3D =
                Body3DFactory.CreateBody3D(
                    _rightBlock,
                    Demo.World3D.World2D,
                    Demo.GraphicsDevice,
                    new Vector2(59.15f, 5.9f),
                    BodyType.Static);
            body3D.Body2D.SetCollisionCategories(Category.Cat31);
            Demo.World3D.AddBody3D(body3D);

            ConstructRamps();
        }
Пример #2
0
        protected override void LoadContent()
        {
            arch   = Content.Load <Model>("arch");
            sphere = Content.Load <Model>("sphere");

            Vector2 archPosition = new Vector2(0f, -1f);
            Body3D  arch3D       =
                Body3DFactory.CreateBody3D(
                    arch,
                    world3D.World2D,
                    GraphicsDevice,
                    archPosition,
                    BodyType.Static,
                    basicEffectParams: effectParams);

            world3D.AddBody3D(arch3D);

            Vector2 spherePosition = new Vector2(0f, 5f);
            Body3D  sphere3D       =
                Body3DFactory.CreateBody3D(
                    sphere,
                    world3D.World2D,
                    GraphicsDevice,
                    spherePosition,
                    basicEffectParams: effectParams);

            sphere3D.Body2D.SetRestitution(0.8f);
            sphere3D.Body2D.ApplyAngularImpulse(14f);

            world3D.AddBody3D(sphere3D);
        }
        private void ConstructEnvironment()
        {
            int groundLength = 51;

            ConstructGround(groundLength);

            Body3D blockLeft =
                Body3DFactory.CreateBody3D(
                    Demo.Content.Load <Model>("Models/groundBlockLongLeft"),
                    Demo.World3D.World2D,
                    Demo.GraphicsDevice,
                    new Vector2(-129.15f, 5.9f),
                    BodyType.Static);

            Demo.World3D.AddBody3D(blockLeft);

            Body3D blockRight =
                Body3DFactory.CreateBody3D(
                    Demo.Content.Load <Model>("Models/groundBlockLongRight"),
                    Demo.World3D.World2D,
                    Demo.GraphicsDevice,
                    new Vector2(129.15f, 5.9f),
                    BodyType.Static);

            Demo.World3D.AddBody3D(blockRight);

            _backgroundWall = Demo.Content.Load <Model>("Models/Decorations/goldWall");

            for (int i = -groundLength / 3; i < groundLength / 3; i++)
            {
                Demo.World3D.AddBackdrop3D(new Backdrop3D(_backgroundWall, new Vector3(i * 15f, 0f, -15f)));
            }
        }
Пример #4
0
        private void AddBall(float restitution, float positionZ, float positionX, Category collisionCategory)
        {
            Body body = new Body();

            body.CreateCircle(1f, 1f);
            body.SetRestitution(restitution);
            body.SetCollidesWith(collisionCategory);

            Body3D body3D =
                Body3DFactory.CreateBody3D(_ballModel, Demo.World3D.World2D, body, new Vector2(positionX, 5f));

            body3D.PositionZ = positionZ;

            body3D.Body2D.ApplyLinearImpulse(Vector2.One * 10f);
            body3D.Body2D.ApplyAngularImpulse(-40f);

            Demo.World3D.AddBody3D(body3D);
        }
Пример #5
0
        private void AddCube(float friction, float positionZ, float positionX, Category collisionCategory)
        {
            Body body = new Body();

            body.CreateRectangle(2f, 2f, 1f, Vector2.Zero);
            body.SetFriction(friction);
            body.SetCollidesWith(collisionCategory);

            Body3D body3D =
                Body3DFactory.CreateBody3D(
                    _cubeModel,
                    Demo.World3D.World2D,
                    body,
                    new Vector2(positionX, 100f));

            body3D.PositionZ = positionZ;

            Demo.World3D.AddBody3D(body3D);
        }
Пример #6
0
        protected override void LoadContent()
        {
            ground   = Content.Load <Model>("ground");
            cilinder = Content.Load <Model>("cilinder");

            Vector2 groundPosition = new Vector2(0f, -1f);
            Body3D  ground3D       =
                Body3DFactory.CreateBody3D(
                    ground, world3D.World2D, GraphicsDevice, groundPosition, BodyType.Static);

            world3D.AddBody3D(ground3D);

            Vector2 cilinderPosition = new Vector2(0f, 5f);
            Body3D  cilinder3D       =
                Body3DFactory.CreateBody3D(
                    cilinder, world3D.World2D, GraphicsDevice, cilinderPosition);

            world3D.AddBody3D(cilinder3D);
        }
Пример #7
0
        public override void Construct()
        {
            Demo.Window.Title = "Restitution Demo";

            Demo.Camera3D.Position = new Vector3(22.12281f, 0.4714419f, 5.708819f);
            Demo.Camera3D.Target   = new Vector3(21.21403f, 0.5188365f, 5.294256f);

            ConstructGround();

            Body3D leftBlock =
                Body3DFactory.CreateBody3D(
                    Demo.Content.Load <Model>("Models/groundBlockLongLeft"),
                    Demo.World3D.World2D,
                    Demo.GraphicsDevice,
                    new Vector2(-24.15f, 5.9f),
                    BodyType.Static);

            leftBlock.Body2D.SetCollisionCategories(Category.Cat31);
            Demo.World3D.AddBody3D(leftBlock);

            Body3D rightBlock =
                Body3DFactory.CreateBody3D(
                    Demo.Content.Load <Model>("Models/groundBlockLongRight"),
                    Demo.World3D.World2D,
                    Demo.GraphicsDevice,
                    new Vector2(24.15f, 5.9f),
                    BodyType.Static);

            rightBlock.Body2D.SetCollisionCategories(Category.Cat31);
            Demo.World3D.AddBody3D(rightBlock);

            AddBall(0.70f, -6f, -6f, Category.Cat31);
            AddBall(0.75f, -4f, -4f, Category.Cat31);
            AddBall(0.80f, -2f, -2f, Category.Cat31);
            AddBall(0.85f, 0f, 0f, Category.Cat31);
            AddBall(0.90f, 2f, 2f, Category.Cat31);
            AddBall(0.95f, 4f, 4f, Category.Cat31);
            AddBall(1.00f, 6f, 6f, Category.Cat31);
        }
Пример #8
0
        public override void Construct()
        {
            Demo.Window.Title = "Game Scene Demo";

            Demo.Camera3D.Position = new Vector3(17f, 9f, 19f);
            Vector2 defaultPositionShift = new Vector2(-100f, 5f);

            Demo.Camera3D.Target = new Vector3(defaultPositionShift.X, defaultPositionShift.Y, 18f);
            _positionStart       = Demo.Camera3D.Target;

            ConstructBusStop();
            ConstructBackground();

            PolygonShape shape = new PolygonShape(1f)
            {
                Vertices = PolygonTools.CreateRoundedRectangle(25f, 6.45566f, 1.5f, 1.5f, 4)
            };

            _chassis3D =
                Body3DFactory.CreateBody3D(
                    _bodyModel,
                    Demo.World3D.World2D,
                    Demo.GraphicsDevice,
                    defaultPositionShift,
                    BodyType.Dynamic,
                    new Vector2(25f, 6.45566f));

            Demo.World3D.AddBody3D(_chassis3D);

            #region Přední náprava

            Vector2 frontPosition = new Vector2(6.996475f, -2.9f) + defaultPositionShift;
            Vector2 axis          = new Vector2(0f, 1.2f);

            _frontWheels = new Body();
            _frontWheels.CreateCircle(1.3163165f, 1f);

            _frontWheels3D =
                Body3DFactory.CreateBody3D(
                    _frontWheelsModel,
                    Demo.World3D.World2D,
                    _frontWheels,
                    frontPosition);

            _springFront = new WheelJoint(_chassis3D.Body2D, _frontWheels, frontPosition, axis, true)
            {
                MotorSpeed     = 0f,
                MaxMotorTorque = 10f,
                MotorEnabled   = false,
                Frequency      = 4f,
                DampingRatio   = 0.7f
            };
            Demo.World3D.World2D.Add(_springFront);

            Demo.World3D.AddBody3D(_frontWheels3D);

            #endregion Přední náprava

            #region Zadní náprava

            Vector2 backPosition = new Vector2(-5.973385f, -2.9f) + defaultPositionShift;

            _backWheels = new Body();
            _backWheels.CreateCircle(1.364622f, 1f);

            _backWheels3D =
                Body3DFactory.CreateBody3D(
                    _backWheelsModel,
                    Demo.World3D.World2D,
                    _backWheels,
                    backPosition);

            _springBack = new WheelJoint(_chassis3D.Body2D, _backWheels, backPosition, axis, true)
            {
                MotorSpeed     = DEFAULT_MOTOR_SPEED,
                MaxMotorTorque = MAX_MOTOR_TORQUE,
                MotorEnabled   = true,
                Frequency      = 4f,
                DampingRatio   = 0.7f
            };
            Demo.World3D.World2D.Add(_springBack);

            Demo.World3D.AddBody3D(_backWheels3D);

            #endregion Zadní náprava

            #region Rampa

            _ramp3D = Body3DFactory.CreateBody3D(
                _rampModel,
                Demo.World3D.World2D,
                Demo.GraphicsDevice,
                new Vector2(0f, 5f));
            Demo.World3D.AddBody3D(_ramp3D);

            #endregion Rampa
        }
Пример #9
0
        public override void Construct()
        {
            Demo.Window.Title = "Path Demo";

            Demo.Camera3D.Position = new Vector3(16.36052f, 7.006462f, 1.119595f);
            Demo.Camera3D.Target   = new Vector3(15.43861f, 6.659885f, 0.9464932f);

            HiddenBody = Demo.World3D.World2D.CreateBody(Vector2.Zero);

            Path bridgePath = new Path();

            bridgePath.Add(new Vector2(-17, 5));
            bridgePath.Add(new Vector2(17, 5));

            bridgePath.Closed = false;

            Model plankModel = Demo.Content.Load <Model>("Models/bridge");

            PolygonShape shape = new PolygonShape(PolygonTools.CreateRectangle(0.125f, 0.5f), 20f);

            List <Body> bodies =
                PathManager.EvenlyDistributeShapesAlongPath(Demo.World3D.World2D,
                                                            bridgePath, shape,
                                                            BodyType.Dynamic,
                                                            34);

            JointFactory.CreateRevoluteJoint(
                Demo.World3D.World2D,
                HiddenBody,
                bodies[0],
                new Vector2(0f, 0.5f));
            JointFactory.CreateRevoluteJoint(
                Demo.World3D.World2D,
                HiddenBody,
                bodies[bodies.Count - 1],
                new Vector2(0f, -0.5f));

            PathManager.AttachBodiesWithRevoluteJoint(
                Demo.World3D.World2D,
                bodies,
                new Vector2(0f, 0.5f),
                new Vector2(0f, -0.5f),
                false,
                true);

            foreach (Body b in bodies)
            {
                Demo.World3D.AddBody3D(new Body3D(plankModel, b));
            }

            Body body = new Body();

            body.CreateCircle(1f, 1f);
            body.SetRestitution(0.7f);

            Body3D body3D =
                Body3DFactory.CreateBody3D(
                    Demo.Content.Load <Model>("Models/Primitives/goldBall"),
                    Demo.World3D.World2D,
                    body,
                    new Vector2(8f, 8f));

            Demo.World3D.AddBody3D(body3D);
            body.ApplyAngularImpulse(5f);
        }