Exemplo n.º 1
0
        async void CreateScene()
        {
            scene = new Scene();
            scene.CreateComponent <Octree>();

            var physics = scene.CreateComponent <PhysicsWorld>();

            physics.SetGravity(new Vector3(0, 0, 0));

            // Camera
            var cameraNode = scene.CreateChild();

            cameraNode.Position = (new Vector3(0.0f, 0.0f, -10.0f));
            cameraNode.CreateComponent <Camera>();
            Viewport = new Viewport(Context, scene, cameraNode.GetComponent <Camera>(), null);

            if (Platform != Platforms.Android && Platform != Platforms.iOS)
            {
                RenderPath effectRenderPath = Viewport.RenderPath.Clone();
                var        fxaaRp           = ResourceCache.GetXmlFile(Assets.PostProcess.FXAA3);
                effectRenderPath.Append(fxaaRp);
                Viewport.RenderPath = effectRenderPath;
            }
            Renderer.SetViewport(0, Viewport);

            var zoneNode = scene.CreateChild();
            var zone     = zoneNode.CreateComponent <Zone>();

            zone.SetBoundingBox(new BoundingBox(-300.0f, 300.0f));
            zone.AmbientColor = new Color(1f, 1f, 1f);

            // UI
            coinsText = new Text();
            coinsText.HorizontalAlignment = HorizontalAlignment.Right;
            coinsText.SetFont(ResourceCache.GetFont(Assets.Fonts.Font), Graphics.Width / 20);
            UI.Root.AddChild(coinsText);
            Input.SetMouseVisible(true, false);

            // Background
            var background = new Background();

            scene.AddComponent(background);
            background.Start();

            // Lights:
            var lightNode = scene.CreateChild();

            lightNode.Position = new Vector3(0, -5, -40);
            lightNode.AddComponent(new Light {
                Range = 120, Brightness = 0.8f
            });

            // Game logic cycle
            bool firstCycle = true;

            while (true)
            {
                var startMenu = scene.CreateComponent <StartMenu>();
                await startMenu.ShowStartMenu(!firstCycle); //wait for "start"

                startMenu.Remove();
                await StartGame();

                firstCycle = false;
            }
        }