Change folder structure, add solution to the root.
This commit is contained in:
82
DaggerFramework/Source/SceneGraph/Scene.cs
Executable file
82
DaggerFramework/Source/SceneGraph/Scene.cs
Executable file
@@ -0,0 +1,82 @@
|
||||
using System.Drawing;
|
||||
using System.Numerics;
|
||||
using DaggerFramework.Audio;
|
||||
using DaggerFramework.Rendering;
|
||||
|
||||
|
||||
namespace DaggerFramework.SceneGraph
|
||||
{
|
||||
public class Scene : IMainLoop
|
||||
{
|
||||
public Renderer Renderer { get => _renderer; set => _renderer = value; }
|
||||
public InputHandler Input { get => _input; set => _input = value; }
|
||||
public AudioBackend Audio => _audioBackend;
|
||||
|
||||
public double DeltaTime => Renderer.GetFrameTime();
|
||||
|
||||
public Scene(Renderer renderer, InputHandler input, AudioBackend audioBackend)
|
||||
{
|
||||
_renderer = renderer;
|
||||
_input = input;
|
||||
_audioBackend = audioBackend;
|
||||
_layers = new Dictionary<string, Layer>();
|
||||
}
|
||||
|
||||
public Scene(Renderer renderer)
|
||||
{
|
||||
_renderer = renderer;
|
||||
}
|
||||
|
||||
public void Init() => SetupRenderer();
|
||||
public void Start()
|
||||
{
|
||||
foreach (var layer in _layers.Values)
|
||||
{
|
||||
layer.Input = _input;
|
||||
layer.Start();
|
||||
}
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
foreach (var layer in _layers)
|
||||
{
|
||||
layer.Value.Update(DeltaTime);
|
||||
}
|
||||
Draw();
|
||||
}
|
||||
|
||||
public void AddLayer(string name, Layer layer)
|
||||
{
|
||||
layer.Scene = this;
|
||||
_layers.Add(name, layer);
|
||||
}
|
||||
|
||||
public bool ShouldStop() => Renderer.WindowShouldClose();
|
||||
|
||||
private void Draw()
|
||||
{
|
||||
Renderer.BeginFrame();
|
||||
Renderer.ClearBackground(Color.Black);
|
||||
foreach (var layer in _layers.Values)
|
||||
{
|
||||
layer.Draw(_renderer);
|
||||
}
|
||||
Renderer.EndFrame();
|
||||
|
||||
Audio.Update();
|
||||
}
|
||||
|
||||
private void SetupRenderer()
|
||||
{
|
||||
Renderer.CreateWindow("Game", new Vector2(1280, 720));
|
||||
Renderer.Initialize(new RendererSettings { Msaa = Msaa.Msaa4x, UseVSync = true });
|
||||
Renderer.SetTargetFps(60);
|
||||
}
|
||||
|
||||
private Dictionary<string, Layer> _layers;
|
||||
private Renderer _renderer;
|
||||
private AudioBackend _audioBackend;
|
||||
private InputHandler _input;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user