From f554c10b63da6e02187822beda60d21e38ac9150 Mon Sep 17 00:00:00 2001 From: AzuxirenLeadGuy Date: Tue, 4 Jun 2024 12:56:21 +0530 Subject: [PATCH] updated examples, add new example --- examples/Examples.sln | 14 +++++ examples/custom_eventman/Program.cs | 54 +++++++++++++++++++ .../custom_eventman/custom_eventman.csproj | 14 +++++ examples/netcore/Program.cs | 2 +- examples/opengl/OpenGL.cs | 7 +-- examples/shader/Shader.cs | 5 +- examples/visualbasic/OpenGL.vb | 6 +-- examples/window/Program.cs | 2 +- 8 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 examples/custom_eventman/Program.cs create mode 100644 examples/custom_eventman/custom_eventman.csproj diff --git a/examples/Examples.sln b/examples/Examples.sln index e03fbee5..f6fac85a 100644 --- a/examples/Examples.sln +++ b/examples/Examples.sln @@ -29,6 +29,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SFML.Window", "..\src\SFML. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "netcore", "netcore\netcore.csproj", "{93B8425A-AC40-4486-96AF-20027B738C09}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "custom_eventman", "custom_eventman\custom_eventman.csproj", "{03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -183,6 +185,18 @@ Global {93B8425A-AC40-4486-96AF-20027B738C09}.Release|x64.Build.0 = Release|Any CPU {93B8425A-AC40-4486-96AF-20027B738C09}.Release|x86.ActiveCfg = Release|Any CPU {93B8425A-AC40-4486-96AF-20027B738C09}.Release|x86.Build.0 = Release|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Debug|x64.ActiveCfg = Debug|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Debug|x64.Build.0 = Debug|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Debug|x86.ActiveCfg = Debug|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Debug|x86.Build.0 = Debug|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Release|Any CPU.Build.0 = Release|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Release|x64.ActiveCfg = Release|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Release|x64.Build.0 = Release|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Release|x86.ActiveCfg = Release|Any CPU + {03A24BD1-B960-4E4A-AF8A-22BA8DA9BAFC}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/examples/custom_eventman/Program.cs b/examples/custom_eventman/Program.cs new file mode 100644 index 00000000..50379b8e --- /dev/null +++ b/examples/custom_eventman/Program.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; +using SFML.Graphics; +using SFML.Window; +namespace Program; + +public struct SimpleEventPasser : IEventMan +{ + private readonly List _events; + public SimpleEventPasser() => _events = new(); + public void HandleEvent(Event eve) + { + switch (eve.Type) + { + case EventType.Closed: + case EventType.LostFocus: + case EventType.GainedFocus: + case EventType.KeyPressed: + case EventType.KeyReleased: + _events.Add(eve); + break; + default: // Filtering out all other events + break; + } + } + public void PrepareFrame() => _events.Clear(); + public IEnumerable ProcessEvents() => _events; +} +public static class Program +{ + public static void Main() + { + var event_man = new SimpleEventPasser(); + var window = new RenderWindow( + new(640, 480), + "Custom Event Manager example", + Styles.Default, + event_man + ); + while (window.IsOpen) + { + window.Clear(Color.Black); + window.DispatchEvents(); + window.Display(); + foreach (var e in event_man.ProcessEvents()) + { + System.Console.WriteLine(e.ToString()); + if (e.Type == EventType.Closed) + { + window.Close(); + } + } + } + } +} \ No newline at end of file diff --git a/examples/custom_eventman/custom_eventman.csproj b/examples/custom_eventman/custom_eventman.csproj new file mode 100644 index 00000000..b10cbf9c --- /dev/null +++ b/examples/custom_eventman/custom_eventman.csproj @@ -0,0 +1,14 @@ + + + + + + + + Exe + net6.0 + disable + enable + + + diff --git a/examples/netcore/Program.cs b/examples/netcore/Program.cs index 88e7666a..a3cd299c 100644 --- a/examples/netcore/Program.cs +++ b/examples/netcore/Program.cs @@ -18,7 +18,7 @@ static void Main(string[] args) var sound = new Sound(GenerateSineWave(frequency: 440.0, volume: .25, seconds: 1)); var window = new RenderWindow(new VideoMode(800, 600), "SFML running in .NET Core"); - window.Closed += (_, __) => window.Close(); + (window.SfmlEventManager as SubscribeManager).Closed += (_, __) => window.Close(); sound.Play(); diff --git a/examples/opengl/OpenGL.cs b/examples/opengl/OpenGL.cs index ebb177f9..97f1b8e1 100644 --- a/examples/opengl/OpenGL.cs +++ b/examples/opengl/OpenGL.cs @@ -31,9 +31,10 @@ static void Main() //GraphicsContext context = new GraphicsContext(new ContextHandle(IntPtr.Zero), null); // Setup event handlers - window.Closed += new EventHandler(OnClosed); - window.KeyPressed += new EventHandler(OnKeyPressed); - window.Resized += new EventHandler(OnResized); + var handler = window.SfmlEventManager as SubscribeManager; + handler.Closed += new EventHandler(OnClosed); + handler.KeyPressed += new EventHandler(OnKeyPressed); + handler.Resized += new EventHandler(OnResized); // Create a sprite for the background var background = new Sprite(new Texture("resources/background.jpg")); diff --git a/examples/shader/Shader.cs b/examples/shader/Shader.cs index c176d718..035e1dd4 100644 --- a/examples/shader/Shader.cs +++ b/examples/shader/Shader.cs @@ -280,8 +280,9 @@ static void Main() window.SetVerticalSyncEnabled(true); // Setup event handlers - window.Closed += OnClosed; - window.KeyPressed += OnKeyPressed; + var handler = window.SfmlEventManager as SubscribeManager; + handler.Closed += OnClosed; + handler.KeyPressed += OnKeyPressed; // Load the application font and pass it to the Effect class var font = new Font("resources/sansation.ttf"); diff --git a/examples/visualbasic/OpenGL.vb b/examples/visualbasic/OpenGL.vb index e590203f..cf0db6d4 100644 --- a/examples/visualbasic/OpenGL.vb +++ b/examples/visualbasic/OpenGL.vb @@ -177,7 +177,7 @@ Module OpenGL ''' ''' Function called when the window is closed ''' - Sub App_Closed(ByVal sender As Object, ByVal e As EventArgs) Handles window.Closed + Sub App_Closed(ByVal sender As Object, ByVal e As EventArgs) Handles window.SfmlEventManager.Closed Dim window = CType(sender, RenderWindow) window.Close() End Sub @@ -185,7 +185,7 @@ Module OpenGL ''' ''' Function called when a key is pressed ''' - Sub App_KeyPressed(ByVal sender As Object, ByVal e As KeyEventArgs) Handles window.KeyPressed + Sub App_KeyPressed(ByVal sender As Object, ByVal e As KeyEventArgs) Handles window.SfmlEventManager.KeyPressed Dim window = CType(sender, RenderWindow) If e.Code = Keyboard.Key.Escape Then window.Close() @@ -195,7 +195,7 @@ Module OpenGL ''' ''' Function called when the window is resized ''' - Sub App_Resized(ByVal sender As Object, ByVal e As SizeEventArgs) Handles window.Resized + Sub App_Resized(ByVal sender As Object, ByVal e As SizeEventArgs) Handles window.SfmlEventManager.Resized GL.Viewport(0, 0, e.Width, e.Height) End Sub diff --git a/examples/window/Program.cs b/examples/window/Program.cs index 89969278..84dd95bd 100644 --- a/examples/window/Program.cs +++ b/examples/window/Program.cs @@ -20,7 +20,7 @@ public void Run() { var mode = new SFML.Window.VideoMode(800, 600); var window = new SFML.Graphics.RenderWindow(mode, "SFML works!"); - window.KeyPressed += Window_KeyPressed; + (window.SfmlEventManager as SFML.Window.SubscribeManager).KeyPressed += Window_KeyPressed; var circle = new SFML.Graphics.CircleShape(100f) {