/// <summary> /// Initializes a new instance of the <see cref="Game"/> class. /// </summary> public Game() { // Register the logger backend before anything else logListener = GetLogListener(); if (logListener != null) { GlobalLogger.GlobalMessageLogged += logListener; } // Create all core services, except Input which is created during `Initialize'. // Registration takes place in `Initialize'. Script = new ScriptSystem(Services); SceneSystem = new SceneSystem(Services); Audio = new AudioSystem(Services); gameFontSystem = new GameFontSystem(Services); SpriteAnimation = new SpriteAnimationSystem(Services); DebugConsoleSystem = new DebugConsoleSystem(Services); ProfilerSystem = new GameProfilingSystem(Services); Content.Serializer.LowLevelSerializerSelector = ParameterContainerExtensions.DefaultSceneSerializerSelector; // Creates the graphics device manager GraphicsDeviceManager = new GraphicsDeviceManager(this); AutoLoadDefaultSettings = true; }
public SceneRenderer(GameSettingsAsset gameSettings) { if (gameSettings == null) { throw new ArgumentNullException(nameof(gameSettings)); } // Initialize services Services = new ServiceRegistry(); ContentManager = new ContentManager(Services); Services.AddService(typeof(IContentManager), ContentManager); Services.AddService(typeof(ContentManager), ContentManager); var renderingSettings = gameSettings.GetOrCreate <RenderingSettings>(); GraphicsDevice = GraphicsDevice.New(DeviceCreationFlags.Debug, new[] { renderingSettings.DefaultGraphicsProfile }); var graphicsDeviceService = new GraphicsDeviceServiceLocal(Services, GraphicsDevice); Services.AddService(typeof(IGraphicsDeviceService), graphicsDeviceService); EffectSystem = new EffectSystem(Services); Services.AddService(typeof(EffectSystem), EffectSystem); GraphicsContext = new GraphicsContext(GraphicsDevice); Services.AddService(typeof(GraphicsContext), GraphicsContext); SceneSystem = new SceneSystem(Services); Services.AddService(typeof(SceneSystem), SceneSystem); // Create game systems GameSystems = new GameSystemCollection(Services); Services.AddService(typeof(IGameSystemCollection), GameSystems); var gameFontSystem = new GameFontSystem(Services); Services.AddService(typeof(FontSystem), gameFontSystem.FontSystem); Services.AddService(typeof(IFontFactory), gameFontSystem.FontSystem); GameSystems.Add(gameFontSystem); var uiSystem = new UISystem(Services); Services.AddService(typeof(UISystem), uiSystem); GameSystems.Add(uiSystem); GameSystems.Add(EffectSystem); GameSystems.Add(SceneSystem); GameSystems.Initialize(); // Fake presenter // TODO GRAPHICS REFACTOR: This is needed be for render stage setup GraphicsDevice.Presenter = new RenderTargetGraphicsPresenter(GraphicsDevice, Texture.New2D(GraphicsDevice, renderingSettings.DefaultBackBufferWidth, renderingSettings.DefaultBackBufferHeight, renderingSettings.ColorSpace == ColorSpace.Linear ? PixelFormat.R8G8B8A8_UNorm_SRgb : PixelFormat.R8G8B8A8_UNorm, TextureFlags.ShaderResource | TextureFlags.RenderTarget), PixelFormat.D24_UNorm_S8_UInt); GraphicsContext.CommandList.SetRenderTarget(GraphicsDevice.Presenter.DepthStencilBuffer, GraphicsDevice.Presenter.BackBuffer); }
/// <summary> /// Initializes a new instance of the <see cref="Game"/> class. /// </summary> public Game() { // Register the logger backend before anything else logListener = GetLogListener(); if (logListener != null) { GlobalLogger.GlobalMessageLogged += logListener; } // Create and register all core services Input = new InputManager(Services); Script = new ScriptSystem(Services); SceneSystem = new SceneSystem(Services); Audio = new AudioSystem(Services); UI = new UISystem(Services); gameFontSystem = new GameFontSystem(Services); SpriteAnimation = new SpriteAnimationSystem(Services); ProfilerSystem = new GameProfilingSystem(Services); // --------------------------------------------------------- // Add common GameSystems - Adding order is important // (Unless overriden by gameSystem.UpdateOrder) // --------------------------------------------------------- // Add the input manager GameSystems.Add(Input); // Add the scheduler system // - Must be after Input, so that scripts are able to get latest input // - Must be before Entities/Camera/Audio/UI, so that scripts can apply // changes in the same frame they will be applied GameSystems.Add(Script); // Add the UI System GameSystems.Add(UI); // Add the Audio System GameSystems.Add(Audio); // Add the Font system GameSystems.Add(gameFontSystem); //Add the sprite animation System GameSystems.Add(SpriteAnimation); Asset.Serializer.LowLevelSerializerSelector = ParameterContainerExtensions.DefaultSceneSerializerSelector; // Creates the graphics device manager GraphicsDeviceManager = new GraphicsDeviceManager(this); GameSystems.Add(ProfilerSystem); AutoLoadDefaultSettings = true; }
/// <summary> /// Initializes a new instance of the <see cref="Game"/> class. /// </summary> public Game() { // Register the logger backend before anything else logListener = GetLogListener(); if (logListener != null) { GlobalLogger.GlobalMessageLogged += logListener; } // Create all core services, except Input which is created during `Initialize'. // Registration takes place in `Initialize'. Script = new ScriptSystem(Services); Services.AddService(Script); SceneSystem = new SceneSystem(Services); Services.AddService(SceneSystem); Streaming = new StreamingManager(Services); Audio = new AudioSystem(Services); Services.AddService(Audio); Services.AddService <IAudioEngineProvider>(Audio); gameFontSystem = new GameFontSystem(Services); Services.AddService(gameFontSystem.FontSystem); Services.AddService <IFontFactory>(gameFontSystem.FontSystem); SpriteAnimation = new SpriteAnimationSystem(Services); Services.AddService(SpriteAnimation); DebugTextSystem = new DebugTextSystem(Services); Services.AddService(DebugTextSystem); DebugRenderSystem = new DebugRenderSystem(Services); Services.AddService(DebugRenderSystem); ProfilingSystem = new GameProfilingSystem(Services); Services.AddService(ProfilingSystem); VRDeviceSystem = new VRDeviceSystem(Services); Services.AddService(VRDeviceSystem); // Creates the graphics device manager GraphicsDeviceManager = new GraphicsDeviceManager(this); Services.AddService <IGraphicsDeviceManager>(GraphicsDeviceManager); Services.AddService <IGraphicsDeviceService>(GraphicsDeviceManager); AutoLoadDefaultSettings = true; }
public ThumbnailGenerator(EffectCompilerBase effectCompiler) { // create base services Services = new ServiceRegistry(); Services.AddService(MicrothreadLocalDatabases.ProviderService); ContentManager = new ContentManager(Services); Services.AddService <IContentManager>(ContentManager); Services.AddService(ContentManager); GraphicsDevice = GraphicsDevice.New(); GraphicsContext = new GraphicsContext(GraphicsDevice); GraphicsCommandList = GraphicsContext.CommandList; Services.AddService(GraphicsContext); sceneSystem = new SceneSystem(Services); Services.AddService(sceneSystem); fontSystem = new GameFontSystem(Services); Services.AddService(fontSystem.FontSystem); Services.AddService <IFontFactory>(fontSystem.FontSystem); GraphicsDeviceService = new GraphicsDeviceServiceLocal(Services, GraphicsDevice); Services.AddService(GraphicsDeviceService); var uiSystem = new UISystem(Services); Services.AddService(uiSystem); var physicsSystem = new Bullet2PhysicsSystem(Services); Services.AddService <IPhysicsSystem>(physicsSystem); gameSystems = new GameSystemCollection(Services) { fontSystem, uiSystem, physicsSystem }; Services.AddService <IGameSystemCollection>(gameSystems); Simulation.DisableSimulation = true; //make sure we do not simulate physics within the editor // initialize base services gameSystems.Initialize(); // create remaining services EffectSystem = new EffectSystem(Services); Services.AddService(EffectSystem); gameSystems.Add(EffectSystem); gameSystems.Add(sceneSystem); EffectSystem.Initialize(); // Mount the same database for the cache EffectSystem.Compiler = EffectCompilerFactory.CreateEffectCompiler(effectCompiler.FileProvider, EffectSystem); // Deactivate the asynchronous effect compilation ((EffectCompilerCache)EffectSystem.Compiler).CompileEffectAsynchronously = false; // load game system content gameSystems.LoadContent(); // create the default fonts var fontItem = OfflineRasterizedSpriteFontFactory.Create(); fontItem.FontType.Size = 22; DefaultFont = OfflineRasterizedFontCompiler.Compile(fontSystem.FontSystem, fontItem, true); // create utility members nullGameTime = new GameTime(); SpriteBatch = new SpriteBatch(GraphicsDevice); UIBatch = new UIBatch(GraphicsDevice); // create the pipeline SetUpPipeline(); }