diff --git a/SMCode/SM.Base/Scene/GenericScene.cs b/SMCode/SM.Base/Scene/GenericScene.cs
index 3e807a9..61bc3b7 100644
--- a/SMCode/SM.Base/Scene/GenericScene.cs
+++ b/SMCode/SM.Base/Scene/GenericScene.cs
@@ -66,10 +66,15 @@ namespace SM.Base.Scene
///
///
///
- public virtual T GetExtension()
+ public virtual T GetExtension() where T : class
{
object ext = _extensions[typeof(T)];
- if (ext == null) throw new Exception("[Error] Tried to get a extension, that doesn't exist.");
+ if (ext == null)
+ {
+ Log.Write(LogType.Warning, $"Tried to get the extension '{typeof(T).Name}', that doesn't exist in the scene.");
+ return null;
+ }
+
return (T)ext;
}
diff --git a/SMCode/SM.Base/Window/GenericWindow.cs b/SMCode/SM.Base/Window/GenericWindow.cs
index 0acb5b3..e523bb9 100644
--- a/SMCode/SM.Base/Window/GenericWindow.cs
+++ b/SMCode/SM.Base/Window/GenericWindow.cs
@@ -113,10 +113,10 @@ namespace SM.Base
{
_loading = false;
+ OnLoaded();
+
_actionsAfterLoading.ForEach(a => a());
_actionsAfterLoading = null;
-
- OnLoaded();
}
}
diff --git a/SMCode/SM2D/Light/LightPostEffect.cs b/SMCode/SM2D/Light/LightPostEffect.cs
index dc0d251..8ab5e97 100644
--- a/SMCode/SM2D/Light/LightPostEffect.cs
+++ b/SMCode/SM2D/Light/LightPostEffect.cs
@@ -8,13 +8,23 @@ namespace SM2D.Light
{
public class LightPostEffect : PostProcessEffect
{
- PostProcessShader _shader = new PostProcessShader(AssemblyUtility.ReadAssemblyFile("SM2D.Light.light.frag"));
+ private PostProcessShader _shader = new PostProcessShader(AssemblyUtility.ReadAssemblyFile("SM2D.Light.light.frag"));
+ private LightSceneExtension sceneExtension;
public override void Draw(Framebuffer main)
{
base.Draw(main);
+
+ _shader.Draw(main.ColorAttachments["color"], collection =>
+ {
+ collection["Ambient"].SetUniform4(sceneExtension.Ambient);
+ });
+ }
- _shader.Draw(main.ColorAttachments["color"]);
+ public override void SceneChanged(GenericScene scene)
+ {
+ base.SceneChanged(scene);
+ sceneExtension = scene.GetExtension();
}
}
}
\ No newline at end of file
diff --git a/SMCode/SM2D/Light/LightSceneExtension.cs b/SMCode/SM2D/Light/LightSceneExtension.cs
index fa82165..63f2c5d 100644
--- a/SMCode/SM2D/Light/LightSceneExtension.cs
+++ b/SMCode/SM2D/Light/LightSceneExtension.cs
@@ -4,6 +4,8 @@ namespace SM2D.Light
{
public class LightSceneExtension
{
- public Color4 Ambient;
+ public Color4 Ambient = Color4.White;
+
+
}
}
\ No newline at end of file
diff --git a/SMCode/SM2D/Pipelines/Basic2DPipeline.cs b/SMCode/SM2D/Pipelines/Basic2DPipeline.cs
index 049f3e7..f9277a6 100644
--- a/SMCode/SM2D/Pipelines/Basic2DPipeline.cs
+++ b/SMCode/SM2D/Pipelines/Basic2DPipeline.cs
@@ -39,7 +39,14 @@ namespace SM2D.Pipelines
_lightEffect.Draw(_tempWindow);
scene.DrawHUD(context);
+ scene.DrawDebug(context);
}
}
+
+ protected override void SceneChanged(Scene.Scene scene)
+ {
+ base.SceneChanged(scene);
+ _lightEffect.SceneChanged(scene);
+ }
}
}
\ No newline at end of file
diff --git a/SMCode/SM2D/Scene/Scene.cs b/SMCode/SM2D/Scene/Scene.cs
index 64b6953..09f58aa 100644
--- a/SMCode/SM2D/Scene/Scene.cs
+++ b/SMCode/SM2D/Scene/Scene.cs
@@ -6,6 +6,7 @@ using SM.Base.Contexts;
using SM.Base.Objects.Static;
using SM.Base.Scene;
using SM2D.Drawing;
+using SM2D.Light;
#endregion
@@ -16,6 +17,7 @@ namespace SM2D.Scene
private static DrawObject2D _axisHelper;
public float AxisHelperSize = 100;
+ public LightSceneExtension LightInformations;
static Scene()
{
_axisHelper = new DrawObject2D();
@@ -25,6 +27,8 @@ namespace SM2D.Scene
public Scene()
{
_Background = new DrawBackground(Color4.Black);
+
+ SetExtension(LightInformations = new LightSceneExtension());
}
diff --git a/SM_TEST/Program.cs b/SM_TEST/Program.cs
index 58a2f88..6059b7b 100644
--- a/SM_TEST/Program.cs
+++ b/SM_TEST/Program.cs
@@ -54,8 +54,8 @@ namespace SM_TEST
}
private static void WindowOnLoad(object sender, EventArgs e)
- {
- //scene.ShowAxisHelper = true;
+ {
+ scene.ShowAxisHelper = true;
kasten = new DrawObject2D();
kasten.Texture = new Texture(new Bitmap("herosword.png"));
@@ -64,7 +64,9 @@ namespace SM_TEST
DrawText text = new DrawText(font, "Text");
text.Transform.Position.Set(0, 500);
- scene.Objects.Add(text);
+ scene.HUD.Add(text);
+
+ scene.LightInformations.Ambient = Color4.Blue;
//particles.Trigger();
}