fixed some major issues with AddInSystemFactory only occuring using Mono

This commit is contained in:
Glatzemann 2011-12-01 14:52:10 +00:00
parent 6a43f4c2d0
commit 91c412bd00
6 changed files with 46 additions and 19 deletions

View File

@ -173,6 +173,8 @@ namespace ANX.Framework.NonXNA
} }
creators.Add(creatorName, creator); 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) public bool HasFramework(String name)
@ -224,12 +226,20 @@ namespace ANX.Framework.NonXNA
return defaultCreators[type] as T; 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<Type, ICreator> kvp in defaultCreators)
{
logger.Error(kvp.Key);
}
throw new AddInLoadingException(String.Format("couldn't find a DefaultCreator of type '{0}'", type.FullName)); throw new AddInLoadingException(String.Format("couldn't find a DefaultCreator of type '{0}'", type.FullName));
} }
public void SetDefaultCreator<T>(T creator) where T : class, ICreator public void SetDefaultCreator<T>(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) public void SetDefaultCreator(string creatorName)
@ -241,7 +251,21 @@ namespace ANX.Framework.NonXNA
ICreator creator = null; ICreator creator = null;
creators.TryGetValue(creatorName.ToLowerInvariant(), out creator); 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 public OperatingSystem OperatingSystem
@ -271,11 +295,10 @@ namespace ANX.Framework.NonXNA
case "ANX.Framework.NonXNA.IRenderSystemCreator": case "ANX.Framework.NonXNA.IRenderSystemCreator":
IRenderSystemCreator renderSystemCreator = creator as IRenderSystemCreator; IRenderSystemCreator renderSystemCreator = creator as IRenderSystemCreator;
IRenderSystemCreator defaultRenderSystemCreator = null; IRenderSystemCreator defaultRenderSystemCreator = null;
try if (defaultCreators.ContainsKey(typeof(IRenderSystemCreator)))
{ {
defaultRenderSystemCreator = GetDefaultCreator<IRenderSystemCreator>(); renderSystemCreator = defaultCreators[typeof(IRenderSystemCreator)] as IRenderSystemCreator;
} }
catch { }
if (renderSystemCreator != null && (defaultRenderSystemCreator == null || defaultRenderSystemCreator.Priority > renderSystemCreator.Priority)) if (renderSystemCreator != null && (defaultRenderSystemCreator == null || defaultRenderSystemCreator.Priority > renderSystemCreator.Priority))
{ {
@ -285,11 +308,10 @@ namespace ANX.Framework.NonXNA
case "ANX.Framework.NonXNA.ISoundSystemCreator": case "ANX.Framework.NonXNA.ISoundSystemCreator":
ISoundSystemCreator soundSystemCreator = creator as ISoundSystemCreator; ISoundSystemCreator soundSystemCreator = creator as ISoundSystemCreator;
ISoundSystemCreator defaultSoundSystemCreator = null; ISoundSystemCreator defaultSoundSystemCreator = null;
try if (defaultCreators.ContainsKey(typeof(ISoundSystemCreator)))
{ {
defaultSoundSystemCreator = GetDefaultCreator<ISoundSystemCreator>(); defaultSoundSystemCreator = defaultCreators[typeof(ISoundSystemCreator)] as ISoundSystemCreator;
} }
catch { }
if (soundSystemCreator != null && (defaultSoundSystemCreator == null || defaultSoundSystemCreator.Priority > soundSystemCreator.Priority)) if (soundSystemCreator != null && (defaultSoundSystemCreator == null || defaultSoundSystemCreator.Priority > soundSystemCreator.Priority))
{ {
@ -299,11 +321,10 @@ namespace ANX.Framework.NonXNA
case "ANX.Framework.NonXNA.IInputSystemCreator": case "ANX.Framework.NonXNA.IInputSystemCreator":
IInputSystemCreator inputSystemCreator = creator as IInputSystemCreator; IInputSystemCreator inputSystemCreator = creator as IInputSystemCreator;
IInputSystemCreator defaultInputSystemCreator = null; IInputSystemCreator defaultInputSystemCreator = null;
try if (defaultCreators.ContainsKey(typeof(IInputSystemCreator)))
{ {
defaultInputSystemCreator = GetDefaultCreator<IInputSystemCreator>(); defaultInputSystemCreator = defaultCreators[typeof(IInputSystemCreator)] as IInputSystemCreator;
} }
catch { }
if (inputSystemCreator != null && (defaultInputSystemCreator == null || defaultInputSystemCreator.Priority > inputSystemCreator.Priority)) if (inputSystemCreator != null && (defaultInputSystemCreator == null || defaultInputSystemCreator.Priority > inputSystemCreator.Priority))
{ {

View File

@ -31,8 +31,8 @@ using System.Runtime.InteropServices;
// //
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben: // übernehmen, indem Sie "*" eingeben:
[assembly: AssemblyVersion("0.4.31.*")] [assembly: AssemblyVersion("0.4.32.*")]
[assembly: AssemblyFileVersion("0.4.31.0")] [assembly: AssemblyFileVersion("0.4.32.0")]
[assembly:InternalsVisibleTo("ANX.Framework.Windows.DX10")] [assembly:InternalsVisibleTo("ANX.Framework.Windows.DX10")]
[assembly:InternalsVisibleTo("ANX.RenderSystem.Windows.DX11")] [assembly:InternalsVisibleTo("ANX.RenderSystem.Windows.DX11")]

View File

@ -45,11 +45,7 @@
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Creator.cs" /> <Compile Include="Creator.cs" />

View File

@ -58,16 +58,17 @@ namespace ANX.InputSystem.OpenTK
{ {
public class Mouse : IMouse public class Mouse : IMouse
{ {
private IntPtr windowHandle;
public IntPtr WindowHandle public IntPtr WindowHandle
{ {
get get
{ {
throw new NotImplementedException(); return this.windowHandle;
} }
set set
{ {
throw new NotImplementedException(); this.windowHandle = value;
} }
} }

View File

@ -97,6 +97,7 @@ namespace ANX.Framework.Windows.GL3
#region RegisterRenderSystemCreator #region RegisterRenderSystemCreator
public void RegisterCreator(AddInSystemFactory factory) public void RegisterCreator(AddInSystemFactory factory)
{ {
logger.Debug("adding OpenGL3 RenderSystem creator to creator collection of AddInSystemFactory");
factory.AddCreator(this); factory.AddCreator(this);
} }
#endregion #endregion

View File

@ -81,6 +81,14 @@ namespace WindowsGame1
{ {
graphics = new GraphicsDeviceManager(this); graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "SampleContent"; Content.RootDirectory = "SampleContent";
graphics.PreparingDeviceSettings += new EventHandler<PreparingDeviceSettingsEventArgs>(graphics_PreparingDeviceSettings);
}
void graphics_PreparingDeviceSettings(object sender, PreparingDeviceSettingsEventArgs e)
{
e.GraphicsDeviceInformation.PresentationParameters.DepthStencilFormat = DepthFormat.None;
e.GraphicsDeviceInformation.PresentationParameters.BackBufferFormat = SurfaceFormat.Bgr565;
} }
/// <summary> /// <summary>