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);
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<Type, ICreator> 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>(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<IRenderSystemCreator>();
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<ISoundSystemCreator>();
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<IInputSystemCreator>();
defaultInputSystemCreator = defaultCreators[typeof(IInputSystemCreator)] as IInputSystemCreator;
}
catch { }
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
// ü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")]

View File

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

View File

@ -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;
}
}

View File

@ -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

View File

@ -81,6 +81,14 @@ namespace WindowsGame1
{
graphics = new GraphicsDeviceManager(this);
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>