Exemple #1
0
        /// <summary>
        /// Konstruktor abstraktní třídy představující předka pro všechny demonstrační scény.
        /// </summary>
        /// <param name="demo">Hlavní třída demonstračního programu, do kterého scéna patří.</param>
        public Scene(SimulationDemo demo)
        {
            Demo = demo;
            MultipleBody3DCreator = new MultipleBody3DCreator(Demo.GraphicsDevice, Demo.World3D.World2D);
            DebugView             = null;

            Load();
        }
Exemple #2
0
        public FrictionScene(SimulationDemo demo) : base(demo)
        {
            _cubeModel  = Demo.Content.Load <Model>("Models/Primitives/cube");
            _rampAModel = Demo.Content.Load <Model>("Models/Obstacles/rampA");
            _rampBModel = Demo.Content.Load <Model>("Models/Obstacles/rampB");
            _leftBlock  = Demo.Content.Load <Model>("Models/groundBlockLongLeft");
            _rightBlock = Demo.Content.Load <Model>("Models/groundBlockLongRight");

            _creator = new MultipleBody3DCreator(Demo.GraphicsDevice, Demo.World3D.World2D);
        }
        public override void Construct()
        {
            Demo.Window.Title = "Simple Demo";

            //TODO: Co tato scéna demonstruje? Je na ní 5 židlí, neděje se nic dynamického.

            Demo.Camera3D.Position = new Vector3(-10.6053f, 7.946681f, 14.91888f);
            Demo.Camera3D.Target   = new Vector3(-10.17842f, 7.646306f, 14.06592f);

            ConstructGround();
            MultipleBody3DCreator.BuildRow(
                Demo.Content.Load <Model>("Models/chair"),
                Demo.World3D,
                5,
                new Vector2(0f, 10f),
                BodyType.Dynamic);
        }
        private void ConstructBusStop()
        {
            float roadYShift = 0.19f;
            int   roadCount  = 10;

            MultipleBody3DCreator multipleBody3DCreator =
                new MultipleBody3DCreator(Demo.GraphicsDevice, Demo.World3D.World2D);

            Demo.World3D.AddBody3D(
                multipleBody3DCreator.CreateBody3D(
                    _roadBlock,
                    new Vector2(BLOCK_SIZE * -(roadCount - 2), 2.6f),
                    BodyType.Static));
            Demo.World3D.AddBody3D(
                multipleBody3DCreator.CreateBody3D(
                    _roadBlock,
                    new Vector2(BLOCK_SIZE * (roadCount - 2), 2.6f),
                    BodyType.Static));

            BuildRoadBlock(new Vector2(-BLOCK_SIZE, 0f), true);
            BuildRoadBlock(Vector2.Zero, true);
            BuildRoadBlock(new Vector2(BLOCK_SIZE, 0f), true);

            BuildRoadBlock(new Vector2(2 * BLOCK_SIZE, 0f), false);
            BuildRoadBlock(new Vector2(-2 * BLOCK_SIZE, 0f), false);

            for (int i = 3; i < roadCount; i++)
            {
                BuildRoadBlock(new Vector2(BLOCK_SIZE * i, 0f), true);
            }
            for (int i = 3; i < roadCount; i++)
            {
                BuildRoadBlock(new Vector2(BLOCK_SIZE * -i, 0f), true);
            }

            #region Dekorační bloky

            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopA, new Vector3(-BLOCK_SIZE, roadYShift, -BLOCK_SIZE)));
            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopA, new Vector3(0f, roadYShift, -BLOCK_SIZE)));
            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopA, new Vector3(BLOCK_SIZE, roadYShift, -BLOCK_SIZE)));

            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopA1End, new Vector3(-2 * BLOCK_SIZE, roadYShift, -BLOCK_SIZE)));
            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopA1, new Vector3(2 * BLOCK_SIZE, roadYShift, -BLOCK_SIZE)));

            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopB, new Vector3(-BLOCK_SIZE, roadYShift, BLOCK_SIZE)));
            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopB, new Vector3(0f, roadYShift, BLOCK_SIZE)));
            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopB, new Vector3(BLOCK_SIZE, roadYShift, BLOCK_SIZE)));

            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopB1End, new Vector3(-2 * BLOCK_SIZE, roadYShift, BLOCK_SIZE)));
            Demo.World3D.AddBackdrop3D(
                new Backdrop3D(_roadStopB1, new Vector3(2 * BLOCK_SIZE, roadYShift, BLOCK_SIZE)));

            for (int i = 3; i < roadCount; i++)
            {
                Demo.World3D.AddBackdrop3D(
                    new Backdrop3D(_sideA, new Vector3(BLOCK_SIZE * i, roadYShift, -BLOCK_SIZE)));
            }
            for (int i = 3; i < roadCount; i++)
            {
                Demo.World3D.AddBackdrop3D(
                    new Backdrop3D(_sideB, new Vector3(BLOCK_SIZE * i, roadYShift, BLOCK_SIZE)));
            }

            for (int i = 3; i < roadCount; i++)
            {
                Demo.World3D.AddBackdrop3D(
                    new Backdrop3D(_sideA, new Vector3(BLOCK_SIZE * -i, roadYShift, -BLOCK_SIZE)));
            }
            for (int i = 3; i < roadCount; i++)
            {
                Demo.World3D.AddBackdrop3D(
                    new Backdrop3D(_sideB, new Vector3(BLOCK_SIZE * -i, roadYShift, BLOCK_SIZE)));
            }

            #endregion Dekorační bloky
        }