26 Sep 2021

General:
+ Added Summaries

Renderer
-------
SM.Base:
+ SM.Base.Controls.Mouse now has a feature to disable tracking.
+ Replaced Bloom Effect with the similar system how blender use it.
+ You can now disable ANY post processing effects.
+ Interpolation for CVectors.
+ MathUtils
+ RenderPipelines now have a central list for post processing effects.

~ Log-System is now ignored if a debugger is attached.
~ Post Processing Shader does now send the texel size as the "renderedTextureTexelSize"-uniform.
~ Improved Text Rendering

SM.OGL:
+ ColorAttachments now contain a reference to the framebuffer its connected.
+ ColorAttachments can now have a own size.
+ Framebuffer.Append(string key, Vector2 size, int pos)
+Framebuffers now have a method to completely reset itself.
+ Framebuffers now have a Blit-method called "CopyTo".

~ Framebuffer.GetCurrentlyActive() will now return an actual SM.OGL.Framebuffer-object.
~ Renderbuffers now are a class and contain the ID by itself.
~ Renamed Uniform-function to its class-name: f.E. SetBool, SetFloat instead of SetUniform1

Optionals:
Controls:
+ Framecache for the GameController.GetState()
This commit is contained in:
Nineto Nine 2021-09-26 21:27:14 +02:00
parent dffa581596
commit 9b52d401e7
61 changed files with 1529 additions and 818 deletions

View file

@ -18,10 +18,20 @@ namespace SM.Base.Controls
private static MouseState? _mouseState;
private static List<MouseButton> _lastButtonsPressed = new List<MouseButton>();
private static Vector2 _inScreen;
/// <summary>
/// The current position of the mouse in the screen.
/// Gets or sets the current position of the mouse in the screen.
/// </summary>
public static Vector2 InScreen { get; private set; }
public static Vector2 InScreen
{
get => _inScreen;
set
{
_inScreen = value;
UpdateNormalized(SMRenderer.CurrentWindow);
}
}
/// <summary>
/// The current position of the mouse in the screen from 0..1.
@ -40,6 +50,16 @@ namespace SM.Base.Controls
/// </summary>
public static bool RightClick => IsDown(MouseButton.Right, true);
/// <summary>
/// If true, it disables the tracking of the mouse, allowing you to change the <see cref="InScreen"/> value, without the system replacing it again.
/// </summary>
public static bool StopTracking { get; set; }
private static void UpdateNormalized(IGenericWindow window)
{
InScreenNormalized = new Vector2(_inScreen.X / (float)window.Width, _inScreen.Y / (float)window.Height);
}
/// <summary>
/// The event to update the values.
/// </summary>
@ -47,8 +67,10 @@ namespace SM.Base.Controls
/// <param name="window">The window where the mouse is checked</param>
internal static void MouseMoveEvent(MouseMoveEventArgs mmea, IGenericWindow window)
{
if (StopTracking) return;
InScreen = new Vector2(mmea.X, mmea.Y);
InScreenNormalized = new Vector2(mmea.X / (float) window.Width, mmea.Y / (float) window.Height);
UpdateNormalized(window);
}
internal static void SetState()