From 0ebd88f037cdf3024fcff9c978aa65603e63f564 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Fri, 9 Feb 2018 21:17:24 +0100 Subject: [PATCH] update to Crow 0.6.0 --- Crow.dll.config | 1 + CrowEdit.csproj | 28 ++++++++++---- CrowWindow.cs | 88 ++++++++++++++++++++++++++++++++----------- InterfaceControler.cs | 2 +- OpenGL/Extensions.cs | 2 +- OpenGL/Shader.cs | 4 +- OpenTK.dll.config | 25 ++++++++++++ packages.config | 2 +- 8 files changed, 116 insertions(+), 36 deletions(-) create mode 100644 OpenTK.dll.config diff --git a/Crow.dll.config b/Crow.dll.config index ef7562a..6341771 100644 --- a/Crow.dll.config +++ b/Crow.dll.config @@ -6,6 +6,7 @@ + diff --git a/CrowEdit.csproj b/CrowEdit.csproj index 08986e6..f2dad2e 100644 --- a/CrowEdit.csproj +++ b/CrowEdit.csproj @@ -25,17 +25,26 @@ 4 false DEBUG;TRACE + $(SolutionDir)build\obj\$(Configuration) + $(SolutionDir)build\$(Configuration) none true 0 false + $(SolutionDir)build\obj\$(Configuration) + $(SolutionDir)build\$(Configuration) + + + Program + %24{TargetName} + %24{SolutionDir}\build\%24{ProjectConfigName} + false - @@ -51,7 +60,10 @@ - + + + PreserveNewest + @@ -61,7 +73,7 @@ packages\OpenTK.2.0.0\lib\net20\OpenTK.dll - packages\Crow.OpenTK.0.5.6\lib\net45\Crow.dll + packages\Crow.OpenTK.0.6.0\lib\net45\Crow.dll @@ -78,12 +90,12 @@ - - - - - + + + + + diff --git a/CrowWindow.cs b/CrowWindow.cs index e66fa7b..9a0c4df 100644 --- a/CrowWindow.cs +++ b/CrowWindow.cs @@ -63,7 +63,7 @@ namespace Crow ValueChanged.Raise(this, new ValueChangeEventArgs ("fpsMin", fpsMin)); } #endif - if (frameCpt % 20 == 0) { + if (frameCpt % 3 == 0) { ValueChanged.Raise (this, new ValueChangeEventArgs ("fps", _fps)); #if MEASURE_TIME foreach (PerformanceMeasure m in ifaceControl[0].PerfMeasures) @@ -109,12 +109,29 @@ namespace Crow public List ifaceControl = new List(); int focusedIdx = -1, activeIdx = -2; + // TODO:We should be able to set the current interface programmaticaly + /// + /// Gets the currently focused interface, focus could have been given by creation of new iface controler and + /// not only by the mouse + /// + public Interface CurrentInterface { + get { + if (ifaceControl.Count == 0) {//create default orthogonal interface + addInterfaceControler (new InterfaceControler ( + new Rectangle (0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height))); + focusedIdx = 0; + } + return ifaceControl [focusedIdx].CrowInterface; + } + } + void addInterfaceControler(InterfaceControler ifaceControler) { ifaceControler.CrowInterface.Quit += Quit; ifaceControler.CrowInterface.MouseCursorChanged += CrowInterface_MouseCursorChanged; ifaceControl.Add (ifaceControler); + focusedIdx = ifaceControl.Count - 1; } void openGLDraw(){ //save GL states @@ -168,13 +185,13 @@ namespace Crow #region Events //those events are raised only if mouse isn't in a graphic object - public event EventHandler MouseWheelChanged; - public event EventHandler MouseButtonUp; - public event EventHandler MouseButtonDown; - public event EventHandler MouseClick; - public event EventHandler MouseMove; - public event EventHandler KeyboardKeyDown; - public event EventHandler KeyboardKeyUp; + public event EventHandler CrowMouseWheel; + public event EventHandler CrowMouseUp; + public event EventHandler CrowMouseDown; + public event EventHandler CrowMouseClick; + public event EventHandler CrowMouseMove; + public event EventHandler CrowKeyDown; + public event EventHandler CrowKeyUp; #endregion @@ -190,15 +207,39 @@ namespace Crow ifaceControl [interfaceIdx].CrowInterface.AddWidget (g); return g; } + public void DeleteWidget (GraphicObject g, int interfaceIdx = 0){ ifaceControl [interfaceIdx].CrowInterface.DeleteWidget (g); } - public GraphicObject Load (string path, int interfaceIdx = 0){ + /// + /// check if a default interface exists, create one if not + /// + void checkDefaultIFace (){ if (ifaceControl.Count == 0)//create default orthogonal interface addInterfaceControler (new InterfaceControler ( - new Rectangle (0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height))); - return ifaceControl [interfaceIdx].CrowInterface.LoadInterface (path); + new Rectangle (0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height))); } + /// + /// Load the content of the IML file pointed by path and add it to the current interface + /// graphic tree. + /// + /// the path of the IML file to load + /// interface index to bind to, a default one is created if none exists + public GraphicObject Load (string path, int interfaceIdx = 0){ + checkDefaultIFace(); + return ifaceControl [interfaceIdx].CrowInterface.AddWidget (path); + } + /// + /// Load the content of the IML string passed as first argument and add it to the current interface + /// graphic tree. + /// + /// a valid IML string + /// interface index to bind to, a default one is created if none exists + public void LoadIMLFragment (string imlFragment, int interfaceIdx = 0){ + checkDefaultIFace(); + ifaceControl [interfaceIdx].CrowInterface.LoadIMLFragment (imlFragment); + } + public GraphicObject FindByName (string nameToFind){ for (int i = 0; i < ifaceControl.Count; i++) { GraphicObject tmp = ifaceControl [i].CrowInterface.FindByName (nameToFind); @@ -226,12 +267,13 @@ namespace Crow base.OnLoad(e); this.KeyPress += new EventHandler(OpenTKGameWindow_KeyPress); - Keyboard.KeyDown += new EventHandler(Keyboard_KeyDown); - Keyboard.KeyUp += new EventHandler(Keyboard_KeyUp); - Mouse.WheelChanged += new EventHandler(GL_Mouse_WheelChanged); - Mouse.ButtonDown += new EventHandler(GL_Mouse_ButtonDown); - Mouse.ButtonUp += new EventHandler(GL_Mouse_ButtonUp); - Mouse.Move += new EventHandler(GL_Mouse_Move); + KeyDown += new EventHandler(Keyboard_KeyDown); + KeyUp += new EventHandler(Keyboard_KeyUp); + + MouseWheel += new EventHandler(GL_Mouse_WheelChanged); + MouseDown += new EventHandler(GL_Mouse_ButtonDown); + MouseUp += new EventHandler(GL_Mouse_ButtonUp); + MouseMove += new EventHandler(GL_Mouse_Move); #if DEBUG Console.WriteLine("\n\n*************************************"); @@ -313,7 +355,7 @@ namespace Crow return; } if (focusedIdx < 0) - MouseMove.Raise (sender, otk_e); + CrowMouseMove.Raise (sender, otk_e); } protected virtual void GL_Mouse_ButtonUp(object sender, OpenTK.Input.MouseButtonEventArgs otk_e) { @@ -322,7 +364,7 @@ namespace Crow if (ifaceControl [focusedIdx].ProcessMouseButtonUp ((int)otk_e.Button)) return; } - MouseButtonUp.Raise (sender, otk_e); + CrowMouseUp.Raise (sender, otk_e); } protected virtual void GL_Mouse_ButtonDown(object sender, OpenTK.Input.MouseButtonEventArgs otk_e) { @@ -331,7 +373,7 @@ namespace Crow if (ifaceControl [focusedIdx].ProcessMouseButtonDown ((int)otk_e.Button)) return; } - MouseButtonDown.Raise (sender, otk_e); + CrowMouseDown.Raise (sender, otk_e); } protected virtual void GL_Mouse_WheelChanged(object sender, OpenTK.Input.MouseWheelEventArgs otk_e) { @@ -339,7 +381,7 @@ namespace Crow if (ifaceControl [focusedIdx].ProcessMouseWheelChanged (otk_e.DeltaPrecise)) return; } - MouseWheelChanged.Raise (sender, otk_e); + CrowMouseWheel.Raise (sender, otk_e); } protected virtual void Keyboard_KeyDown(object sender, OpenTK.Input.KeyboardKeyEventArgs otk_e) @@ -348,7 +390,7 @@ namespace Crow if (ifaceControl [focusedIdx].ProcessKeyDown((int)otk_e.Key)) return; } - KeyboardKeyDown.Raise (this, otk_e); + CrowKeyDown.Raise (this, otk_e); } protected virtual void Keyboard_KeyUp(object sender, OpenTK.Input.KeyboardKeyEventArgs otk_e) { @@ -356,7 +398,7 @@ namespace Crow if (ifaceControl [focusedIdx].ProcessKeyUp((int)otk_e.Key)) return; } - KeyboardKeyUp.Raise (this, otk_e); + CrowKeyUp.Raise (this, otk_e); } protected virtual void OpenTKGameWindow_KeyPress (object sender, OpenTK.KeyPressEventArgs e) { diff --git a/InterfaceControler.cs b/InterfaceControler.cs index 4da65d1..5098e11 100644 --- a/InterfaceControler.cs +++ b/InterfaceControler.cs @@ -162,7 +162,7 @@ namespace Crow while (true) { CrowInterface.Update (); - Thread.Sleep (1); + Thread.Sleep (2); } } diff --git a/OpenGL/Extensions.cs b/OpenGL/Extensions.cs index 0dd1cca..7b26f76 100644 --- a/OpenGL/Extensions.cs +++ b/OpenGL/Extensions.cs @@ -24,7 +24,7 @@ using Crow; namespace Crow { - public static class Extensions { + public static partial class Extensions { public static Vector4 ToVector4(this Color c){ float[] f = c.floatArray; return new Vector4 (f [0], f [1], f [2], f [3]); diff --git a/OpenGL/Shader.cs b/OpenGL/Shader.cs index 6ae99b8..f91a982 100644 --- a/OpenGL/Shader.cs +++ b/OpenGL/Shader.cs @@ -51,7 +51,7 @@ namespace Crow GeomSourcePath; #region Sources protected string _vertSource = @" - #version 330 + #version 300 es precision lowp float; uniform mat4 mvp; @@ -68,7 +68,7 @@ namespace Crow }"; protected string _fragSource = @" - #version 330 + #version 300 es precision lowp float; uniform sampler2D tex; diff --git a/OpenTK.dll.config b/OpenTK.dll.config new file mode 100644 index 0000000..7098d39 --- /dev/null +++ b/OpenTK.dll.config @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages.config b/packages.config index 9e8d256..26caf83 100644 --- a/packages.config +++ b/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file -- 2.47.3