/// <summary> /// Initializes the <see cref="Komodo.Core.Engine.Graphics.GraphicsManager"/> and all <see cref="Komodo.Core.ECS.Systems.ISystem"/> objects. /// </summary> public void Initialize() { GraphicsManager.Initialize(); DefaultSpriteShader = new BasicEffect(GraphicsManager.GraphicsDeviceManager.GraphicsDevice) { TextureEnabled = true, VertexColorEnabled = true, }; GraphicsManager.VSync = false; CameraSystem.Initialize(); SoundSystem.Initialize(); var physicsSystems = PhysicsSystems.ToArray(); foreach (var system in physicsSystems) { system.Initialize(); } var render3DSystems = Render3DSystems.ToArray(); foreach (var system in render3DSystems) { system.Initialize(); } var render2DSystems = Render2DSystems.ToArray(); foreach (var system in render2DSystems) { system.Initialize(); } BehaviorSystem.Initialize(); }
/// <summary> /// Creates and begins tracking a new <see cref="Komodo.Core.ECS.Systems.Render2DSystem"/>. /// </summary> public Render2DSystem CreateRender2DSystem() { var system = new Render2DSystem(this); Render2DSystems.Add(system); return(system); }
/// <summary> /// Updates <see cref="Komodo.Core.ECS.Systems.ISystem"/> objects. /// </summary> /// <param name="gameTime">Time passed since last <see cref="Update(GameTime)"/>.</param> public void Update(GameTime gameTime) { InputManager.Update(); BehaviorSystem.PreUpdate(gameTime); CameraSystem.PreUpdate(gameTime); SoundSystem.PreUpdate(gameTime); var physicsSystems = PhysicsSystems.ToArray(); foreach (var system in physicsSystems) { system.PreUpdate(gameTime); } var render3DSystems = Render3DSystems.ToArray(); foreach (var system in render3DSystems) { system.PreUpdate(gameTime); } var render2DSystems = Render2DSystems.ToArray(); foreach (var system in render2DSystems) { system.PreUpdate(gameTime); } BehaviorSystem.UpdateComponents(gameTime); CameraSystem.UpdateComponents(gameTime); SoundSystem.UpdateComponents(gameTime); foreach (var system in physicsSystems) { system.UpdateComponents(gameTime); } BehaviorSystem.PostUpdate(gameTime); CameraSystem.PostUpdate(gameTime); SoundSystem.PostUpdate(gameTime); foreach (var system in physicsSystems) { system.PostUpdate(gameTime); } foreach (var system in render3DSystems) { system.PostUpdate(gameTime); } foreach (var system in render2DSystems) { system.PostUpdate(gameTime); } }
/// <summary> /// Draws a frame with a provided clear color. /// </summary> /// <param name="_">Time passed since last <see cref="Draw(GameTime)"/>.</param> /// <param name="clearColor"><see cref="Microsoft.Xna.Framework.Color"/> to clear the screen with.</param> public void Draw(GameTime _, Color clearColor) { GraphicsManager.Clear(clearColor); var render2DSystems = Render2DSystems.ToArray(); var render3DSystems = Render3DSystems.ToArray(); // 3D must render before 2D or else the 2D sprites will fail to render in the Z dimension properly foreach (var system in render3DSystems) { system.DrawComponents(); } var spriteBatch = GraphicsManager.SpriteBatch; foreach (var system in render2DSystems) { system.DrawComponents(spriteBatch); } }