From 91c412bd00ac2e027485cd821819e0d72bcdd0d7 Mon Sep 17 00:00:00 2001 From: Glatzemann Date: Thu, 1 Dec 2011 14:52:10 +0000 Subject: [PATCH] fixed some major issues with AddInSystemFactory only occuring using Mono --- ANX.Framework/NonXNA/AddInSystemFactory.cs | 43 ++++++++++++++----- ANX.Framework/Properties/AssemblyInfo.cs | 4 +- .../ANX.InputSystem.OpenTK.csproj | 4 -- InputSystems/ANX.InputSystem.OpenTK/Mouse.cs | 5 ++- .../ANX.Framework.Windows.GL3/Creator.cs | 1 + Samples/SimpleSprite/Game1.cs | 8 ++++ 6 files changed, 46 insertions(+), 19 deletions(-) diff --git a/ANX.Framework/NonXNA/AddInSystemFactory.cs b/ANX.Framework/NonXNA/AddInSystemFactory.cs index f2a43673..df92ca0a 100644 --- a/ANX.Framework/NonXNA/AddInSystemFactory.cs +++ b/ANX.Framework/NonXNA/AddInSystemFactory.cs @@ -173,6 +173,8 @@ namespace ANX.Framework.NonXNA } creators.Add(creatorName, creator); + + logger.Debug("added creator '{0}'. Total count of registered creators is now {1}.", creatorName, creators.Count); } public bool HasFramework(String name) @@ -224,12 +226,20 @@ namespace ANX.Framework.NonXNA return defaultCreators[type] as T; } + logger.Error(String.Format("couldn't find a DefaultCreator of type '{0}'. Listing all registered creators: ", type.FullName)); + foreach (KeyValuePair kvp in defaultCreators) + { + logger.Error(kvp.Key); + } + throw new AddInLoadingException(String.Format("couldn't find a DefaultCreator of type '{0}'", type.FullName)); } public void SetDefaultCreator(T creator) where T : class, ICreator { - defaultCreators[typeof(T)] = creator; + Type t = typeof(T); + logger.Debug("setting DefaultCreator by type: {0}", t.FullName); + defaultCreators[t] = creator; } public void SetDefaultCreator(string creatorName) @@ -241,7 +251,21 @@ namespace ANX.Framework.NonXNA ICreator creator = null; creators.TryGetValue(creatorName.ToLowerInvariant(), out creator); - defaultCreators[creator.GetType().GetInterfaces()[0]] = creator; + if (creator != null) + { + Type t = creator.GetType().GetInterfaces()[0]; + if (t == typeof(ICreator)) + { + //TODO: exception handling + t = creator.GetType().GetInterfaces()[1]; + } + logger.Debug("setting DefaultCreator by name: '{0}'. Resolved type: '{1}'. ", creatorName, t.FullName); + defaultCreators[t] = creator; + } + else + { + throw new AddInLoadingException(String.Format("couldn't set DefaultCreator by name: '{0}'. ", creatorName)); + } } public OperatingSystem OperatingSystem @@ -271,11 +295,10 @@ namespace ANX.Framework.NonXNA case "ANX.Framework.NonXNA.IRenderSystemCreator": IRenderSystemCreator renderSystemCreator = creator as IRenderSystemCreator; IRenderSystemCreator defaultRenderSystemCreator = null; - try + if (defaultCreators.ContainsKey(typeof(IRenderSystemCreator))) { - defaultRenderSystemCreator = GetDefaultCreator(); + renderSystemCreator = defaultCreators[typeof(IRenderSystemCreator)] as IRenderSystemCreator; } - catch { } if (renderSystemCreator != null && (defaultRenderSystemCreator == null || defaultRenderSystemCreator.Priority > renderSystemCreator.Priority)) { @@ -285,11 +308,10 @@ namespace ANX.Framework.NonXNA case "ANX.Framework.NonXNA.ISoundSystemCreator": ISoundSystemCreator soundSystemCreator = creator as ISoundSystemCreator; ISoundSystemCreator defaultSoundSystemCreator = null; - try + if (defaultCreators.ContainsKey(typeof(ISoundSystemCreator))) { - defaultSoundSystemCreator = GetDefaultCreator(); + defaultSoundSystemCreator = defaultCreators[typeof(ISoundSystemCreator)] as ISoundSystemCreator; } - catch { } if (soundSystemCreator != null && (defaultSoundSystemCreator == null || defaultSoundSystemCreator.Priority > soundSystemCreator.Priority)) { @@ -299,11 +321,10 @@ namespace ANX.Framework.NonXNA case "ANX.Framework.NonXNA.IInputSystemCreator": IInputSystemCreator inputSystemCreator = creator as IInputSystemCreator; IInputSystemCreator defaultInputSystemCreator = null; - try + if (defaultCreators.ContainsKey(typeof(IInputSystemCreator))) { - defaultInputSystemCreator = GetDefaultCreator(); + defaultInputSystemCreator = defaultCreators[typeof(IInputSystemCreator)] as IInputSystemCreator; } - catch { } if (inputSystemCreator != null && (defaultInputSystemCreator == null || defaultInputSystemCreator.Priority > inputSystemCreator.Priority)) { diff --git a/ANX.Framework/Properties/AssemblyInfo.cs b/ANX.Framework/Properties/AssemblyInfo.cs index eb385917..92220570 100644 --- a/ANX.Framework/Properties/AssemblyInfo.cs +++ b/ANX.Framework/Properties/AssemblyInfo.cs @@ -31,8 +31,8 @@ using System.Runtime.InteropServices; // // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: -[assembly: AssemblyVersion("0.4.31.*")] -[assembly: AssemblyFileVersion("0.4.31.0")] +[assembly: AssemblyVersion("0.4.32.*")] +[assembly: AssemblyFileVersion("0.4.32.0")] [assembly:InternalsVisibleTo("ANX.Framework.Windows.DX10")] [assembly:InternalsVisibleTo("ANX.RenderSystem.Windows.DX11")] diff --git a/InputSystems/ANX.InputSystem.OpenTK/ANX.InputSystem.OpenTK.csproj b/InputSystems/ANX.InputSystem.OpenTK/ANX.InputSystem.OpenTK.csproj index c9c1d73e..3b9568fb 100644 --- a/InputSystems/ANX.InputSystem.OpenTK/ANX.InputSystem.OpenTK.csproj +++ b/InputSystems/ANX.InputSystem.OpenTK/ANX.InputSystem.OpenTK.csproj @@ -45,11 +45,7 @@ - - - - diff --git a/InputSystems/ANX.InputSystem.OpenTK/Mouse.cs b/InputSystems/ANX.InputSystem.OpenTK/Mouse.cs index 86c90cc0..a71bb8bd 100644 --- a/InputSystems/ANX.InputSystem.OpenTK/Mouse.cs +++ b/InputSystems/ANX.InputSystem.OpenTK/Mouse.cs @@ -58,16 +58,17 @@ namespace ANX.InputSystem.OpenTK { public class Mouse : IMouse { + private IntPtr windowHandle; public IntPtr WindowHandle { get { - throw new NotImplementedException(); + return this.windowHandle; } set { - throw new NotImplementedException(); + this.windowHandle = value; } } diff --git a/RenderSystems/ANX.Framework.Windows.GL3/Creator.cs b/RenderSystems/ANX.Framework.Windows.GL3/Creator.cs index efe37e0a..bd2845e2 100644 --- a/RenderSystems/ANX.Framework.Windows.GL3/Creator.cs +++ b/RenderSystems/ANX.Framework.Windows.GL3/Creator.cs @@ -97,6 +97,7 @@ namespace ANX.Framework.Windows.GL3 #region RegisterRenderSystemCreator public void RegisterCreator(AddInSystemFactory factory) { + logger.Debug("adding OpenGL3 RenderSystem creator to creator collection of AddInSystemFactory"); factory.AddCreator(this); } #endregion diff --git a/Samples/SimpleSprite/Game1.cs b/Samples/SimpleSprite/Game1.cs index 6a1e24b4..86345d5e 100644 --- a/Samples/SimpleSprite/Game1.cs +++ b/Samples/SimpleSprite/Game1.cs @@ -81,6 +81,14 @@ namespace WindowsGame1 { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "SampleContent"; + + graphics.PreparingDeviceSettings += new EventHandler(graphics_PreparingDeviceSettings); + } + + void graphics_PreparingDeviceSettings(object sender, PreparingDeviceSettingsEventArgs e) + { + e.GraphicsDeviceInformation.PresentationParameters.DepthStencilFormat = DepthFormat.None; + e.GraphicsDeviceInformation.PresentationParameters.BackBufferFormat = SurfaceFormat.Bgr565; } ///