Example #1
0
        public Engine(Windowing.IWindowProvider windowProvider, SharpFileSystem.IFileSystem fileSystem)
        {
            WindowProvider = windowProvider;

            // Initialize file system and resource manager
            FileSystem = new Common.IO.FileSystem(fileSystem);

            ResourceGroupManager = new Common.ResourceGroupManager(FileSystem);
            CoreResources = ResourceGroupManager.Add("core", 100);
            GameResources = ResourceGroupManager.Add("game", 10);

            // Setup graphics core
            GraphicsBackend = new Graphics.Backend(CoreResources, WindowProvider.Width, WindowProvider.Height, WindowProvider.WindowInfo);

            // Init resource loaders
            RegisterResourceLoaders(CoreResources);
            RegisterResourceLoaders(GameResources);

            // High level renderer (deferred + hdr)
            Renderer = new RendererImplementation(FileSystem, CoreResources, GraphicsBackend);

            // The input stuff
            InputManager = new Input.InputManager(WindowProvider.Bounds);

            // Setup game world
            GameWorld = new GameWorld(GameResources, GraphicsBackend);
        }
Example #2
0
        private void RenderLoop()
        {
            var graphicsMode = new GraphicsMode(new ColorFormat(32), 24, 0, 0);
            Window = new NativeWindow(RequestedWidth, RequestedHeight, Name, GameWindowFlags.Default, graphicsMode, DisplayDevice.Default);
            Window.Visible = true;
            Window.CursorVisible = false;

            using (GraphicsBackend = new Triton.Graphics.Backend(CoreResources, Window.Width, Window.Height, Window.WindowInfo))
            {
                Triton.Graphics.Resources.ResourceLoaders.Init(CoreResources, GraphicsBackend, FileSystem);
                Triton.Graphics.Resources.ResourceLoaders.Init(GameResources, GraphicsBackend, FileSystem);

                RendererReady.Set();

                while (Running)
                {
                    Window.ProcessEvents();

                    if (!Window.Exists)
                        break;

                    CoreResources.TickResourceLoading(100);
                    GameResources.TickResourceLoading(10);

                    if (!GraphicsBackend.Process())
                        break;

                    Thread.Sleep(1);
                }

                Running = false;
            }
        }