- Introduced new MediaSystem creator (handling the whole Media namespace)

- Made the plugin handling internally way simpler (no tons of duplicated code anymore)
- Added empty MediaSystem to have a default for now (Windows.OpenAL)
- Added a PercentageCompleteAttribute which will be used to mark the current state of a class (0-100%)
This commit is contained in:
SND\AstrorEnales_cp 2012-02-15 19:48:46 +00:00
parent ec48a838c7
commit 1cebf6f91e
43 changed files with 1123 additions and 480 deletions

View File

@ -90,7 +90,8 @@ namespace ANX.Framework.TestCenter.Strukturen.Input
{
AddInSystemFactory.Instance.Initialize();
AddInSystemFactory.Instance.PreferredInputSystem = "XInput";
AddInSystemFactory.Instance.SetPreferredSystem(
AddInType.InputSystem, "XInput");
XNAGamePadState xnastate = XNAGamePad.GetState(xnaplayer);
ANXGamePadState anxstate = ANXGamePad.GetState(anxplayer);

View File

@ -76,7 +76,8 @@ namespace ANX.Framework.TestCenter.Strukturen.Input
public void Setup()
{
AddInSystemFactory.Instance.Initialize();
AddInSystemFactory.Instance.PreferredInputSystem = "Test";
AddInSystemFactory.Instance.SetPreferredSystem(
AddInType.InputSystem, "Test");
}

View File

@ -134,11 +134,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ANX.InputDevices.Test", "In
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiRenderTarget", "Samples\MultiRenderTarget\MultiRenderTarget.csproj", "{9C9C6245-35C2-4230-8E17-9038A228227F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "MediaSystems", "MediaSystems", "{6EDED295-0F32-4D05-A8EA-02F4BF89CF35}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ANX.MediaSystem.Windows.OpenAL", "MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj", "{97185A92-077D-4498-8B6A-8BFF04079044}"
EndProject
Global
GlobalSection(SubversionScc) = preSolution
Svn-Managed = True
Manager = AnkhSVN - Subversion Support for Visual Studio
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
@ -456,6 +456,16 @@ Global
{9C9C6245-35C2-4230-8E17-9038A228227F}.Release|Mixed Platforms.Build.0 = Release|x86
{9C9C6245-35C2-4230-8E17-9038A228227F}.Release|x86.ActiveCfg = Release|x86
{9C9C6245-35C2-4230-8E17-9038A228227F}.Release|x86.Build.0 = Release|x86
{97185A92-077D-4498-8B6A-8BFF04079044}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Debug|Any CPU.Build.0 = Debug|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Debug|x86.ActiveCfg = Debug|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Release|Any CPU.ActiveCfg = Release|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Release|Any CPU.Build.0 = Release|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{97185A92-077D-4498-8B6A-8BFF04079044}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -493,5 +503,10 @@ Global
{E4FFD875-95FC-48F2-8B6D-8483D0B71666} = {60824BDB-AC8A-42ED-9B79-111FB44669FF}
{BD648BB8-EF28-453C-B4F5-EE3C93EB4DAF} = {60824BDB-AC8A-42ED-9B79-111FB44669FF}
{6285F3EF-07DB-49C9-8CDE-A9092789FE4F} = {60824BDB-AC8A-42ED-9B79-111FB44669FF}
{97185A92-077D-4498-8B6A-8BFF04079044} = {6EDED295-0F32-4D05-A8EA-02F4BF89CF35}
EndGlobalSection
GlobalSection(SubversionScc) = preSolution
Svn-Managed = True
Manager = AnkhSVN - Subversion Support for Visual Studio
EndGlobalSection
EndGlobal

View File

@ -41,12 +41,6 @@
<HintPath>..\lib\NLog\NLog.dll</HintPath>
</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="Audio\AudioCategory.cs" />
@ -420,7 +414,9 @@
<Compile Include="Net\WriteLeaderboardsEventArgs.cs" />
<Compile Include="NonXNA\AddIn.cs" />
<Compile Include="NonXNA\AddInLoadingException.cs" />
<Compile Include="NonXNA\AddInSystemInfo.cs" />
<Compile Include="NonXNA\AddInType.cs" />
<Compile Include="NonXNA\Development\PercentageCompleteAttribute.cs" />
<Compile Include="NonXNA\InputDeviceFactory.cs" />
<Compile Include="NonXNA\InputSystem\IGamePadCreator.cs" />
<Compile Include="NonXNA\InputSystem\IKeyboard.cs" />
@ -430,6 +426,7 @@
<Compile Include="NonXNA\InputSystem\IKeyboardCreator.cs" />
<Compile Include="NonXNA\InputSystem\IMouseCreator.cs" />
<Compile Include="NonXNA\InputSystem\IMotionSensingDeviceCreator.cs" />
<Compile Include="NonXNA\MediaSystem\IMediaSystemCreator.cs" />
<Compile Include="NonXNA\NoInputDeviceException.cs" />
<Compile Include="NonXNA\RenderSystem\EffectProcessorOutputFormat.cs" />
<Compile Include="NonXNA\ICreator.cs" />

View File

@ -108,36 +108,24 @@ namespace ANX.Framework
throw new AddInLoadingException("Error while initializing AddInSystem.", ex);
}
IInputSystemCreator inputSystemCreator = AddInSystemFactory.Instance.GetDefaultCreator<IInputSystemCreator>();
if (inputSystemCreator != null)
{
this.gameServices.AddService(typeof(IInputSystemCreator), inputSystemCreator);
}
ISoundSystemCreator soundSystemCreator = AddInSystemFactory.Instance.GetDefaultCreator<ISoundSystemCreator>();
if (soundSystemCreator != null)
{
this.gameServices.AddService(typeof(ISoundSystemCreator), soundSystemCreator);
}
IRenderSystemCreator renderSystemCreator = AddInSystemFactory.Instance.GetDefaultCreator<IRenderSystemCreator>();
if (renderSystemCreator != null)
{
this.gameServices.AddService(typeof(IRenderSystemCreator), renderSystemCreator);
}
AddSystemCreator<IInputSystemCreator>();
AddSystemCreator<ISoundSystemCreator>();
AddSystemCreator<IMediaSystemCreator>();
IRenderSystemCreator renderSystemCreator =
AddSystemCreator<IRenderSystemCreator>();
logger.Info("creating GameHost");
if (renderSystemCreator != null)
{
this.host = renderSystemCreator.CreateGameHost(this);
this.host.Activated += new EventHandler<EventArgs>(this.HostActivated);
this.host.Deactivated += new EventHandler<EventArgs>(this.HostDeactivated);
this.host.Suspend += new EventHandler<EventArgs>(this.HostSuspend);
this.host.Resume += new EventHandler<EventArgs>(this.HostResume);
this.host.Idle += new EventHandler<EventArgs>(this.HostIdle);
this.host.Exiting += new EventHandler<EventArgs>(this.HostExiting);
this.host.Activated += HostActivated;
this.host.Deactivated += HostDeactivated;
this.host.Suspend += HostSuspend;
this.host.Resume += HostResume;
this.host.Idle += HostIdle;
this.host.Exiting += HostExiting;
}
else
{
@ -163,7 +151,19 @@ namespace ANX.Framework
//TODO: implement
}
protected virtual void Initialize()
#region AddSystemCreator
private T AddSystemCreator<T>() where T : class, ICreator
{
T creator = AddInSystemFactory.Instance.GetDefaultCreator<T>();
if (creator != null)
{
this.gameServices.AddService(typeof(T), creator);
}
return creator;
}
#endregion
protected virtual void Initialize()
{
//TODO: implement

View File

@ -1,7 +1,5 @@
#region Using Statements
using System;
#endregion // Using Statements
using System;
using ANX.Framework.NonXNA.Development;
#region License
@ -52,64 +50,48 @@ using System;
namespace ANX.Framework
{
public class GameTime
{
private TimeSpan elapsedGameTime;
private bool isRunningSlowly;
private TimeSpan totalGameTime;
[PercentageComplete(100)]
public class GameTime
{
#region Public
public TimeSpan ElapsedGameTime
{
get;
internal set;
}
public GameTime()
{
public TimeSpan TotalGameTime
{
get;
internal set;
}
}
public bool IsRunningSlowly
{
get;
internal set;
}
#endregion
public GameTime(TimeSpan totalGameTime, TimeSpan elapsedGameTime)
{
this.totalGameTime = totalGameTime;
this.elapsedGameTime = elapsedGameTime;
}
#region Constructor
public GameTime()
{
public GameTime(TimeSpan totalGameTime, TimeSpan elapsedGameTime, bool isRunningSlowly)
{
this.totalGameTime = totalGameTime;
this.elapsedGameTime = elapsedGameTime;
this.isRunningSlowly = isRunningSlowly;
}
}
public TimeSpan ElapsedGameTime
{
get
{
return this.elapsedGameTime;
}
internal set
{
this.elapsedGameTime = value;
}
}
public GameTime(TimeSpan totalGameTime, TimeSpan elapsedGameTime)
{
this.TotalGameTime = totalGameTime;
this.ElapsedGameTime = elapsedGameTime;
}
public TimeSpan TotalGameTime
{
get
{
return this.totalGameTime;
}
internal set
{
this.totalGameTime = value;
}
}
public bool IsRunningSlowly
{
get
{
return this.isRunningSlowly;
}
internal set
{
this.isRunningSlowly = value;
}
}
}
public GameTime(TimeSpan totalGameTime, TimeSpan elapsedGameTime,
bool isRunningSlowly)
{
this.TotalGameTime = totalGameTime;
this.ElapsedGameTime = elapsedGameTime;
this.IsRunningSlowly = isRunningSlowly;
}
#endregion
}
}

View File

@ -51,6 +51,13 @@ namespace ANX.Framework.Media
{
public static class MediaPlayer
{
#region Events
public static event EventHandler<EventArgs> ActiveSongChanged;
public static event EventHandler<EventArgs> MediaStateChanged;
#endregion
#region Public
#region IsShuffled (TODO)
public static bool IsShuffled
{
get
@ -62,7 +69,9 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#region IsRepeating (TODO)
public static bool IsRepeating
{
get
@ -74,7 +83,9 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#region Volume (TODO)
public static float Volume
{
get
@ -86,7 +97,9 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#region IsMuted (TODO)
public static bool IsMuted
{
get
@ -98,7 +111,9 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#region IsVisualizationEnabled (TODO)
public static bool IsVisualizationEnabled
{
get
@ -110,7 +125,9 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#region Queue (TODO)
public static MediaQueue Queue
{
get
@ -118,7 +135,9 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#region State (TODO)
public static MediaState State
{
get
@ -126,7 +145,9 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#region PlayPosition (TODO)
public static TimeSpan PlayPosition
{
get
@ -134,7 +155,9 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#region GameHasControl (TODO)
public static bool GameHasControl
{
get
@ -142,53 +165,76 @@ namespace ANX.Framework.Media
throw new NotImplementedException();
}
}
#endregion
#endregion
public static event EventHandler<EventArgs> ActiveSongChanged;
public static event EventHandler<EventArgs> MediaStateChanged;
#region Constructor
static MediaPlayer()
{
}
#endregion
#region Play (TODO)
public static void Play(Song song)
{
throw new NotImplementedException();
}
#endregion
#region Play (TODO)
public static void Play(SongCollection songCollection)
{
throw new NotImplementedException();
}
#endregion
#region Play (TODO)
public static void Play(SongCollection songCollection, int index)
{
throw new NotImplementedException();
}
#endregion
#region Pause (TODO)
public static void Pause()
{
throw new NotImplementedException();
}
#endregion
#region Resume (TODO)
public static void Resume()
{
throw new NotImplementedException();
}
#endregion
#region Stop (TODO)
public static void Stop()
{
throw new NotImplementedException();
}
#endregion
#region MoveNext (TODO)
public static void MoveNext()
{
throw new NotImplementedException();
}
#endregion
#region MovePrevious (TODO)
public static void MovePrevious()
{
throw new NotImplementedException();
}
#endregion
#region GetVisualizationData (TODO)
public static void GetVisualizationData(VisualizationData data)
{
throw new NotImplementedException();
}
#endregion
}
}

View File

@ -76,14 +76,15 @@ namespace ANX.Framework.NonXNA
public AddIn(string fileName)
{
if (string.IsNullOrEmpty(fileName))
if (String.IsNullOrEmpty(fileName))
{
throw new ArgumentNullException("fileName");
}
if (!File.Exists(fileName))
if (File.Exists(fileName) == false)
{
throw new InvalidOperationException(String.Format("The AddIn '{0}' does not exist.", fileName));
throw new InvalidOperationException(
String.Format("The AddIn '{0}' does not exist.", fileName));
}
this.fileName = fileName;
@ -96,30 +97,14 @@ namespace ANX.Framework.NonXNA
if (this.assembly != null)
{
foreach (Type t in this.assembly.GetTypes().Where(p => typeof(IInputSystemCreator).IsAssignableFrom(p) ||
typeof(IRenderSystemCreator).IsAssignableFrom(p) ||
typeof(ISoundSystemCreator).IsAssignableFrom(p)
))
foreach (Type t in this.assembly.GetTypes().Where(p =>
typeof(IInputSystemCreator).IsAssignableFrom(p) ||
typeof(IRenderSystemCreator).IsAssignableFrom(p) ||
typeof(ISoundSystemCreator).IsAssignableFrom(p) ||
typeof(IMediaSystemCreator).IsAssignableFrom(p)))
{
this.creatorType = t;
if (typeof(IInputSystemCreator).IsAssignableFrom(t))
{
this.addInType = AddInType.InputSystem;
}
else if (typeof(IRenderSystemCreator).IsAssignableFrom(t))
{
this.addInType = AddInType.RenderSystem;
}
else if (typeof(ISoundSystemCreator).IsAssignableFrom(t))
{
this.addInType = AddInType.SoundSystem;
}
else
{
this.addInType = AddInType.Unknown;
}
this.addInType = AddInSystemFactory.GetAddInType(t);
break;
}
@ -136,23 +121,27 @@ namespace ANX.Framework.NonXNA
// Scan the addin for InputDeviceCreators and register them
//
foreach (Type t in this.assembly.GetTypes().Where(p => typeof(IGamePadCreator).IsAssignableFrom(p)))
foreach (Type t in this.assembly.GetTypes().Where(p =>
typeof(IGamePadCreator).IsAssignableFrom(p)))
{
InputDeviceFactory.Instance.AddCreator(Activator.CreateInstance(t) as IGamePadCreator);
}
foreach (Type t in this.assembly.GetTypes().Where(p => typeof(IKeyboardCreator).IsAssignableFrom(p)))
foreach (Type t in this.assembly.GetTypes().Where(p =>
typeof(IKeyboardCreator).IsAssignableFrom(p)))
{
InputDeviceFactory.Instance.AddCreator(Activator.CreateInstance(t) as IKeyboardCreator);
}
foreach (Type t in this.assembly.GetTypes().Where(p => typeof(IMouseCreator).IsAssignableFrom(p)))
foreach (Type t in this.assembly.GetTypes().Where(p =>
typeof(IMouseCreator).IsAssignableFrom(p)))
{
InputDeviceFactory.Instance.AddCreator(Activator.CreateInstance(t) as IMouseCreator);
}
#if XNAEXT
foreach (Type t in this.assembly.GetTypes().Where(p => typeof(IMotionSensingDeviceCreator).IsAssignableFrom(p)))
foreach (Type t in this.assembly.GetTypes().Where(p =>
typeof(IMotionSensingDeviceCreator).IsAssignableFrom(p)))
{
InputDeviceFactory.Instance.AddCreator(Activator.CreateInstance(t) as IMotionSensingDeviceCreator);
}
@ -290,7 +279,9 @@ namespace ANX.Framework.NonXNA
#endregion // Properties
#region Private Helpers
private string[] FetchSupportedPlattforms(Assembly assembly)
#region FetchSupportedPlattforms
private string[] FetchSupportedPlattforms(Assembly assembly)
{
string[] platforms = null;
string[] res = assembly.GetManifestResourceNames();
@ -323,10 +314,11 @@ namespace ANX.Framework.NonXNA
return platforms;
}
#endregion
#endregion // Private Helpers
#endregion // Private Helpers
public int CompareTo(AddIn other)
public int CompareTo(AddIn other)
{
return this.Priority.CompareTo(other.Priority);
}

View File

@ -1,14 +1,10 @@
#region Using Statements
using System;
using System.IO;
using System.Reflection;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using ANX.Framework.Input;
using System.Reflection;
using NLog;
using System.Collections;
using System.Resources;
using System.Xml.Linq;
#endregion // Using Statements
@ -71,22 +67,14 @@ namespace ANX.Framework.NonXNA
private OperatingSystem operatingSystem;
private Version operatingSystemVersion;
private string preferredRenderSystem;
private bool preferredRenderSystemLocked;
private string preferredInputSystem;
private bool preferredInputSystemLocked;
private string preferredSoundSystem;
private bool preferredSoundSystemLocked;
private List<AddIn> renderSystems;
private List<AddIn> inputSystems;
private List<AddIn> soundSystems;
private Dictionary<AddInType, AddInSystemInfo> addinSystems;
private static Logger logger = LogManager.GetCurrentClassLogger();
#endregion // Private Members
public static AddInSystemFactory Instance
#region Public
public static AddInSystemFactory Instance
{
get
{
@ -98,24 +86,46 @@ namespace ANX.Framework.NonXNA
return instance;
}
}
}
private AddInSystemFactory()
public OperatingSystem OperatingSystem
{
get
{
return this.operatingSystem;
}
}
public Version OperatingSystemVersion
{
get
{
return this.operatingSystemVersion;
}
}
#endregion
#region Constructor
private AddInSystemFactory()
{
this.renderSystems = new List<AddIn>();
this.inputSystems = new List<AddIn>();
this.soundSystems = new List<AddIn>();
addinSystems = new Dictionary<AddInType, AddInSystemInfo>();
addinSystems.Add(AddInType.InputSystem, new AddInSystemInfo());
addinSystems.Add(AddInType.MediaSystem, new AddInSystemInfo());
addinSystems.Add(AddInType.RenderSystem, new AddInSystemInfo());
addinSystems.Add(AddInType.SoundSystem, new AddInSystemInfo());
this.creators = new Dictionary<string, ICreator>();
this.operatingSystem = Environment.OSVersion;
this.operatingSystemVersion = this.operatingSystem.Version;
logger.Info("Operating System: {0} ({1})", operatingSystem.VersionString, operatingSystemVersion.ToString());
}
#endregion
public void Initialize()
#region Initialize
public void Initialize()
{
if (!initialized)
if (initialized == false)
{
initialized = true;
@ -125,25 +135,14 @@ namespace ANX.Framework.NonXNA
foreach (String file in Directory.EnumerateFiles(Path.GetDirectoryName(executingAssembly), "*.dll", SearchOption.TopDirectoryOnly))
{
if (!file.Equals(executingAssembly))
if (file.Equals(executingAssembly) == false)
{
logger.Info("[ANX] trying to load '{0}'...", file);
AddIn addin = new AddIn(file);
if (addin.IsValid && addin.IsSupported)
{
switch (addin.Type)
{
case AddInType.InputSystem:
this.inputSystems.Add(addin);
break;
case AddInType.RenderSystem:
this.renderSystems.Add(addin);
break;
case AddInType.SoundSystem:
this.soundSystems.Add(addin);
break;
}
addinSystems[addin.Type].AvailableSystems.Add(addin);
logger.Info("[ANX] successfully loaded addin...");
}
else
@ -156,8 +155,10 @@ namespace ANX.Framework.NonXNA
SortAddIns();
}
}
#endregion
public void AddCreator(ICreator creator)
#region AddCreator
public void AddCreator(ICreator creator)
{
string creatorName = creator.Name.ToLowerInvariant();
@ -170,13 +171,17 @@ namespace ANX.Framework.NonXNA
logger.Debug("added creator '{0}'. Total count of registered creators is now {1}.", creatorName, creators.Count);
}
#endregion
public bool HasFramework(String name)
#region HasFramework
public bool HasFramework(String name)
{
return creators.ContainsKey(name.ToLowerInvariant());
}
}
#endregion
public T GetCreator<T>(String name) where T : class, ICreator
#region GetCreator
public T GetCreator<T>(String name) where T : class, ICreator
{
if (!initialized)
{
@ -186,9 +191,11 @@ namespace ANX.Framework.NonXNA
ICreator creator = null;
creators.TryGetValue(name.ToLowerInvariant(), out creator);
return creator as T;
}
}
#endregion
public IEnumerable<T> GetCreators<T>() where T : class, ICreator
#region GetCreators
public IEnumerable<T> GetCreators<T>() where T : class, ICreator
{
if (!initialized)
{
@ -197,18 +204,18 @@ namespace ANX.Framework.NonXNA
Type t = typeof(T);
foreach (ICreator creator in this.creators.Values)
foreach (ICreator creator in this.creators.Values.Where(p =>
p.GetType().GetInterfaces()[0].Equals(t)))
{
if (creator.GetType().GetInterfaces()[0].Equals(t))
{
yield return creator as T;
}
yield return creator as T;
}
}
#endregion
public T GetDefaultCreator<T>() where T : class, ICreator
#region GetDefaultCreator
public T GetDefaultCreator<T>() where T : class, ICreator
{
if (!initialized)
if (initialized == false)
{
Initialize();
}
@ -216,172 +223,80 @@ namespace ANX.Framework.NonXNA
Type type = typeof(T);
AddInType addInType = GetAddInType(type);
switch (addInType)
{
case AddInType.InputSystem:
if (string.IsNullOrEmpty(preferredInputSystem))
{
if (inputSystems.Count > 0)
{
return inputSystems[0].Instance as T;
}
AddInSystemInfo info = addinSystems[addInType];
if (String.IsNullOrEmpty(info.PreferredName))
{
if (info.AvailableSystems.Count > 0)
{
return info.AvailableSystems[0].Instance as T;
}
throw new AddInLoadingException("couldn't get default input system because there are no registered input systems available");
}
else
{
foreach (AddIn addin in this.inputSystems)
{
if (addin.Name.Equals(preferredInputSystem, StringComparison.InvariantCultureIgnoreCase))
{
return addin.Instance as T;
}
}
throw new AddInLoadingException(String.Format(
"Couldn't get default {0} because there are no " +
"registered {0}s available!", addInType));
}
else
{
foreach (AddIn addin in info.AvailableSystems)
{
if (addin.Name.Equals(info.PreferredName,
StringComparison.InvariantCultureIgnoreCase))
{
return addin.Instance as T;
}
}
throw new AddInLoadingException(String.Format("couldn't get default input system '{0}' because it was not found in the list of registered creators", preferredInputSystem));
}
case AddInType.RenderSystem:
if (string.IsNullOrEmpty(preferredRenderSystem))
{
if (renderSystems.Count > 0)
{
return renderSystems[0].Instance as T;
}
throw new AddInLoadingException(String.Format(
"Couldn't get default {0} '{1}' because it was not found in the " +
"list of registered creators!", addInType, info.PreferredName));
}
throw new AddInLoadingException("couldn't get default render system because there are no registered render systems available");
}
else
{
foreach (AddIn addin in this.renderSystems)
{
if (addin.Name.Equals(preferredRenderSystem, StringComparison.InvariantCultureIgnoreCase))
{
return addin.Instance as T;
}
}
throw new AddInLoadingException(String.Format("couldn't get default render system '{0}' because it was not found in the list of registered creators", preferredRenderSystem));
}
case AddInType.SoundSystem:
if (string.IsNullOrEmpty(preferredSoundSystem))
{
if (soundSystems.Count > 0)
{
return soundSystems[0].Instance as T;
}
throw new AddInLoadingException("couldn't get default sound system because there are no registered sound systems available");
}
else
{
foreach (AddIn addin in this.soundSystems)
{
if (addin.Name.Equals(preferredSoundSystem, StringComparison.InvariantCultureIgnoreCase))
{
return addin.Instance as T;
}
}
throw new AddInLoadingException(String.Format("couldn't get default sound system '{0}' because it was not found in the list of registered creators", preferredSoundSystem));
}
}
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));
}
#endregion
public void SortAddIns()
#region SortAddIns
public void SortAddIns()
{
this.inputSystems.Sort();
this.renderSystems.Sort();
this.soundSystems.Sort();
foreach (AddInSystemInfo info in addinSystems.Values)
{
info.AvailableSystems.Sort();
}
this.creators = this.creators.OrderBy(x => x.Value.Priority).ToDictionary(x => x.Key, x => x.Value);
}
}
#endregion
public OperatingSystem OperatingSystem
#region GetPreferredSystem
public string GetPreferredSystem(AddInType addInType)
{
return addinSystems[addInType].PreferredName;
}
#endregion
#region SetPreferredSystem
public void SetPreferredSystem(AddInType addInType, string preferredName)
{
if (addinSystems[addInType].PreferredLocked)
{
throw new AddInLoadingException(String.Format(
"Can't set preferred {0} because a {0} is alread in use.", addInType));
}
addinSystems[addInType].PreferredName = preferredName;
}
#endregion
#region PreventSystemChange
public void PreventSystemChange(AddInType addInType)
{
get
{
return this.operatingSystem;
}
addinSystems[addInType].PreferredLocked = true;
}
#endregion
public Version OperatingSystemVersion
{
get
{
return this.operatingSystemVersion;
}
}
public string PreferredRenderSystem
{
get
{
return this.preferredRenderSystem;
}
set
{
if (this.preferredRenderSystemLocked)
{
throw new AddInLoadingException("can't set preferred RenderSystem because a RenderSystem is alread in use.");
}
this.preferredRenderSystem = value;
}
}
public string PreferredInputSystem
{
get
{
return this.preferredInputSystem;
}
set
{
if (this.preferredInputSystemLocked)
{
throw new AddInLoadingException("can't set preferred InputSystem because a InputSystem is alread in use.");
}
this.preferredInputSystem = value;
}
}
public string PreferredSoundSystem
{
get
{
return this.preferredSoundSystem;
}
set
{
if (this.preferredSoundSystemLocked)
{
throw new AddInLoadingException("can't set preferred SoundSystem because a SoundSystem is alread in use.");
}
this.preferredSoundSystem = value;
}
}
public void PreventRenderSystemChange()
{
this.preferredRenderSystemLocked = true;
}
public void PreventInputSystemChange()
{
this.preferredInputSystemLocked = true;
}
public void PreventSoundSystemChange()
{
this.preferredSoundSystemLocked = true;
}
private AddInType GetAddInType(Type t)
#region GetAddInType
internal static AddInType GetAddInType(Type t)
{
if (typeof(IRenderSystemCreator).IsAssignableFrom(t))
{
@ -394,11 +309,16 @@ namespace ANX.Framework.NonXNA
else if (typeof(ISoundSystemCreator).IsAssignableFrom(t))
{
return AddInType.SoundSystem;
}
}
else if (typeof(IMediaSystemCreator).IsAssignableFrom(t))
{
return AddInType.MediaSystem;
}
else
{
return AddInType.Unknown;
}
}
}
}
#endregion
}
}

View File

@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
#region License
//
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".
//
// This file is released under the Ms-PL license.
//
//
//
// Microsoft Public License (Ms-PL)
//
// This license governs use of the accompanying software. If you use the software, you accept this license.
// If you do not accept the license, do not use the software.
//
// 1.Definitions
// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning
// here as under U.S. copyright law.
// A "contribution" is the original software, or any additions or changes to the software.
// A "contributor" is any person that distributes its contribution under this license.
// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
//
// 2.Grant of Rights
// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations
// in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to
// reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution
// or any derivative works that you create.
// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in
// section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed
// patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution
// in the software or derivative works of the contribution in the software.
//
// 3.Conditions and Limitations
// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your
// patent license from such contributor to the software ends automatically.
// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
// notices that are present in the software.
// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or
// object code form, you may only do so under a license that complies with this license.
// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees,
// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the
// extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a
// particular purpose and non-infringement.
#endregion // License
namespace ANX.Framework.NonXNA
{
internal class AddInSystemInfo
{
#region Public
#region PreferredName
public string PreferredName
{
get;
set;
}
#endregion
#region PreferredLocked
public bool PreferredLocked
{
get;
set;
}
#endregion
#region AvailableSystems
public List<AddIn> AvailableSystems
{
get;
private set;
}
#endregion
#endregion
#region Constructor
public AddInSystemInfo()
{
AvailableSystems = new List<AddIn>();
}
#endregion
}
}

View File

@ -1,9 +1,4 @@
#region Using Statements
using System;
#endregion
#region License
#region License
//
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".
@ -57,6 +52,7 @@ namespace ANX.Framework.NonXNA
Unknown,
RenderSystem,
InputSystem,
SoundSystem
SoundSystem,
MediaSystem
}
}

View File

@ -0,0 +1,74 @@
using System;
#region License
//
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".
//
// This file is released under the Ms-PL license.
//
//
//
// Microsoft Public License (Ms-PL)
//
// This license governs use of the accompanying software. If you use the software, you accept this license.
// If you do not accept the license, do not use the software.
//
// 1.Definitions
// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning
// here as under U.S. copyright law.
// A "contribution" is the original software, or any additions or changes to the software.
// A "contributor" is any person that distributes its contribution under this license.
// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
//
// 2.Grant of Rights
// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations
// in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to
// reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution
// or any derivative works that you create.
// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in
// section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed
// patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution
// in the software or derivative works of the contribution in the software.
//
// 3.Conditions and Limitations
// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your
// patent license from such contributor to the software ends automatically.
// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
// notices that are present in the software.
// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or
// object code form, you may only do so under a license that complies with this license.
// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees,
// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the
// extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a
// particular purpose and non-infringement.
#endregion // License
namespace ANX.Framework.NonXNA.Development
{
public class PercentageCompleteAttribute : Attribute
{
#region Public
public int Percentage
{
get;
private set;
}
#endregion
#region Constructor
/// <summary>
/// Create a new percentage complete attribute.
/// </summary>
/// <param name="setPercentage">The percentage [0-100] value defining how
/// "complete" the class is.</param>
public PercentageCompleteAttribute(int setPercentage)
{
Percentage = setPercentage;
}
#endregion
}
}

View File

@ -1,14 +1,4 @@
#region Using Statements
using System;
using System.IO;
using System.Reflection;
using System.Collections.Generic;
using System.Linq;
using ANX.Framework.Input;
#endregion // Using Statements
#region License
#region License
//
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".

View File

@ -0,0 +1,55 @@
using System;
#region License
//
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".
//
// This file is released under the Ms-PL license.
//
//
//
// Microsoft Public License (Ms-PL)
//
// This license governs use of the accompanying software. If you use the software, you accept this license.
// If you do not accept the license, do not use the software.
//
// 1.Definitions
// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning
// here as under U.S. copyright law.
// A "contribution" is the original software, or any additions or changes to the software.
// A "contributor" is any person that distributes its contribution under this license.
// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
//
// 2.Grant of Rights
// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations
// in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to
// reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution
// or any derivative works that you create.
// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in
// section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed
// patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution
// in the software or derivative works of the contribution in the software.
//
// 3.Conditions and Limitations
// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your
// patent license from such contributor to the software ends automatically.
// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
// notices that are present in the software.
// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or
// object code form, you may only do so under a license that complies with this license.
// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees,
// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the
// extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a
// particular purpose and non-infringement.
#endregion // License
namespace ANX.Framework.NonXNA
{
public interface IMediaSystemCreator : ICreator
{
}
}

View File

@ -67,8 +67,9 @@ namespace ANX.InputDevices.Test
public IGamePad GamePad
{
get
{
AddInSystemFactory.Instance.PreventInputSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
if (_gamePad == null)
{
_gamePad = new GamePad();
@ -80,8 +81,9 @@ namespace ANX.InputDevices.Test
public IMouse Mouse
{
get
{
AddInSystemFactory.Instance.PreventInputSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
if (_mouse == null)
{
_mouse = new Mouse();
@ -93,8 +95,9 @@ namespace ANX.InputDevices.Test
public IKeyboard Keyboard
{
get
{
AddInSystemFactory.Instance.PreventInputSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
if (_keyboard == null)
{
_keyboard = new Keyboard();

View File

@ -68,9 +68,10 @@ namespace ANX.InputSystem.Recording
public IGamePad GamePad
{
get
{
AddInSystemFactory.Instance.PreventInputSystemChange();
get
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
if (gamePad == null)
gamePad = new RecordingGamePad();
return gamePad;
@ -79,9 +80,10 @@ namespace ANX.InputSystem.Recording
public IMouse Mouse
{
get
{
AddInSystemFactory.Instance.PreventInputSystemChange();
get
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
if (mouse == null)
mouse = new RecordingMouse();
return mouse;
@ -90,9 +92,10 @@ namespace ANX.InputSystem.Recording
public IKeyboard Keyboard
{
get
{
AddInSystemFactory.Instance.PreventInputSystemChange();
get
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
if (keyboard == null)
keyboard = new RecordingKeyboard();
return keyboard;
@ -102,9 +105,10 @@ namespace ANX.InputSystem.Recording
#if XNAEXT
public IMotionSensingDevice MotionSensingDevice
{
get
{
AddInSystemFactory.Instance.PreventInputSystemChange();
get
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
if (msd == null)
msd = new RecordingMotionSensingDevice();
return msd;

View File

@ -98,7 +98,8 @@ namespace ANX.InputDevices.Windows.XInput
get
{
logger.Debug("returning a new GamePad device");
AddInSystemFactory.Instance.PreventInputSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
return InputDeviceFactory.Instance.GetDefaultGamePad();
}
}
@ -114,8 +115,9 @@ namespace ANX.InputDevices.Windows.XInput
{
throw new NoInputDeviceException("couldn't find a default mouse device creator. Unable to create a mouse instance.");
}
logger.Debug("created a new Mouse device");
AddInSystemFactory.Instance.PreventInputSystemChange();
logger.Debug("created a new Mouse device");
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
}
return this.mouse;
@ -133,8 +135,9 @@ namespace ANX.InputDevices.Windows.XInput
{
throw new NoInputDeviceException("couldn't find a default keyboard device creator. Unable to create a keyboard instance.");
}
logger.Debug("created a new Keyboard device");
AddInSystemFactory.Instance.PreventInputSystemChange();
logger.Debug("created a new Keyboard device");
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
}
return this.keyboard;
@ -146,8 +149,9 @@ namespace ANX.InputDevices.Windows.XInput
{
get
{
logger.Debug("returning a new MotionSensingDevice device");
AddInSystemFactory.Instance.PreventInputSystemChange();
logger.Debug("returning a new MotionSensingDevice device");
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.InputSystem);
return InputDeviceFactory.Instance.GetDefaultMotionSensingDevice();
}
}

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{97185A92-077D-4498-8B6A-8BFF04079044}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ANX.MediaSystem.Windows.OpenAL</RootNamespace>
<AssemblyName>ANX.MediaSystem.Windows.OpenAL</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
</ItemGroup>
<ItemGroup>
<Compile Include="Creator.cs" />
<Compile Include="Metadata.Designer.cs">
<DependentUpon>Metadata.resx</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\ANX.Framework\ANX.Framework.csproj">
<Project>{6899F0C9-70B9-4EB0-9DD3-E598D4BE3E35}</Project>
<Name>ANX.Framework</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Metadata.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>Metadata.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,90 @@
using System;
using ANX.Framework.NonXNA;
#region License
//
// This file is part of the ANX.Framework created by the "ANX.Framework developer group".
//
// This file is released under the Ms-PL license.
//
//
//
// Microsoft Public License (Ms-PL)
//
// This license governs use of the accompanying software. If you use the software, you accept this license.
// If you do not accept the license, do not use the software.
//
// 1.Definitions
// The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning
// here as under U.S. copyright law.
// A "contribution" is the original software, or any additions or changes to the software.
// A "contributor" is any person that distributes its contribution under this license.
// "Licensed patents" are a contributor's patent claims that read directly on its contribution.
//
// 2.Grant of Rights
// (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations
// in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to
// reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution
// or any derivative works that you create.
// (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in
// section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed
// patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution
// in the software or derivative works of the contribution in the software.
//
// 3.Conditions and Limitations
// (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
// (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your
// patent license from such contributor to the software ends automatically.
// (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution
// notices that are present in the software.
// (D) If you distribute any portion of the software in source code form, you may do so only under this license by including
// a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or
// object code form, you may only do so under a license that complies with this license.
// (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees,
// or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the
// extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a
// particular purpose and non-infringement.
#endregion // License
namespace ANX.MediaSystem.Windows.OpenAL
{
public class Creator : IMediaSystemCreator
{
#region Public
#region Name
public string Name
{
get { return "OpenAL"; }
}
#endregion
#region Priority
public int Priority
{
get { return 10; }
}
#endregion
#region IsSupported
public bool IsSupported
{
get
{
//TODO: this is just a very basic version of test for support
return AddInSystemFactory.Instance.OperatingSystem.Platform ==
PlatformID.Win32NT;
}
}
#endregion
#endregion
#region RegisterCreator
public void RegisterCreator(AddInSystemFactory factory)
{
factory.AddCreator(this);
}
#endregion
}
}

View File

@ -0,0 +1,72 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.488
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ANX.MediaSystem.Windows.OpenAL {
using System;
/// <summary>
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class Metadata {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Metadata() {
}
/// <summary>
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ANX.MediaSystem.Windows.OpenAL.Metadata", typeof(Metadata).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Win32NT ähnelt.
/// </summary>
public static string SupportedPlatforms {
get {
return ResourceManager.GetString("SupportedPlatforms", resourceCulture);
}
}
}
}

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="SupportedPlatforms" xml:space="preserve">
<value>Win32NT</value>
</data>
</root>

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die mit einer Assembly verknüpft sind.
[assembly: AssemblyTitle("ANX.MediaSystem.Windows.OpenAL")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("ANX.Framework Tea")]
[assembly: AssemblyProduct("ANX.MediaSystem.Windows.OpenAL")]
[assembly: AssemblyCopyright("Copyright © ANX.Framework Tea 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("1395f0f5-84f8-4336-9c40-e9d80a3fef6b")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -9,7 +9,8 @@ namespace RecordingSample
static void Main(string[] args)
{
//This is technically unessasary, because there is only a reference to the RecordingSystem...
AddInSystemFactory.Instance.PreferredInputSystem = "Recording";
AddInSystemFactory.Instance.SetPreferredSystem(
AddInType.InputSystem, "Recording");
using (Game1 game = new Game1())
{

View File

@ -91,6 +91,10 @@
<Project>{DB88DDEB-7281-405D-8FCA-5681B6B2BD7A}</Project>
<Name>ANX.InputSystem.Recording</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -83,32 +83,37 @@ namespace ANX.Framework.Windows.DX10
}
public GameHost CreateGameHost(Game game)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new WindowsGameHost(game);
}
public INativeGraphicsDevice CreateGraphicsDevice(PresentationParameters presentationParameters)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new GraphicsDeviceWindowsDX10(presentationParameters);
}
public INativeBuffer CreateIndexBuffer(GraphicsDevice graphics, IndexElementSize size, int indexCount, BufferUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new IndexBuffer_DX10(graphics, size, indexCount, usage);
}
public INativeBuffer CreateVertexBuffer(GraphicsDevice graphics, VertexDeclaration vertexDeclaration, int vertexCount, BufferUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new VertexBuffer_DX10(graphics, vertexDeclaration, vertexCount, usage);
}
public INativeEffect CreateEffect(GraphicsDevice graphics, ANX.Framework.Graphics.Effect managedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
Effect_DX10 effect = new Effect_DX10(graphics, managedEffect, vertexShaderByteCode, pixelShaderByteCode);
@ -116,8 +121,9 @@ namespace ANX.Framework.Windows.DX10
}
public INativeEffect CreateEffect(GraphicsDevice graphics, ANX.Framework.Graphics.Effect managedEffect, System.IO.Stream byteCode)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
Effect_DX10 effect = new Effect_DX10(graphics, managedEffect, byteCode);
@ -125,8 +131,9 @@ namespace ANX.Framework.Windows.DX10
}
public Texture2D CreateTexture(GraphicsDevice graphics, string fileName)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
//TODO: implement
throw new NotImplementedException();
@ -140,32 +147,37 @@ namespace ANX.Framework.Windows.DX10
}
public INativeBlendState CreateBlendState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new BlendState_DX10();
}
public INativeRasterizerState CreateRasterizerState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new RasterizerState_DX10();
}
public INativeDepthStencilState CreateDepthStencilState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new DepthStencilState_DX10();
}
public INativeSamplerState CreateSamplerState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new SamplerState_DX10();
}
public byte[] GetShaderByteCode(PreDefinedShader type)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
if (type == PreDefinedShader.SpriteBatch)
{
@ -202,8 +214,9 @@ namespace ANX.Framework.Windows.DX10
public System.Collections.ObjectModel.ReadOnlyCollection<GraphicsAdapter> GetAdapterList()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
SharpDX.DXGI.Factory factory = new Factory();
@ -256,15 +269,17 @@ namespace ANX.Framework.Windows.DX10
}
public INativeTexture2D CreateTexture(GraphicsDevice graphics, SurfaceFormat surfaceFormat, int width, int height, int mipCount)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new Texture2D_DX10(graphics, width, height, surfaceFormat, mipCount);
}
public INativeRenderTarget2D CreateRenderTarget(GraphicsDevice graphics, int width, int height, bool mipMap, SurfaceFormat preferredFormat, DepthFormat preferredDepthFormat, int preferredMultiSampleCount, RenderTargetUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new RenderTarget2D_DX10(graphics, width, height, mipMap, preferredFormat, preferredDepthFormat, preferredMultiSampleCount, usage);
}

View File

@ -106,7 +106,8 @@ namespace ANX.Framework.Windows.GL3
public GameHost CreateGameHost(Game game)
{
logger.Info("creating OpenGL3 GameHost");
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new WindowsGameHost(game);
}
#endregion
@ -115,7 +116,8 @@ namespace ANX.Framework.Windows.GL3
public INativeEffect CreateEffect(GraphicsDevice graphics, Effect managedEffect,
Stream byteCode)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new EffectGL3(managedEffect, byteCode);
}
@ -123,7 +125,8 @@ namespace ANX.Framework.Windows.GL3
public INativeEffect CreateEffect(GraphicsDevice graphics, Effect managedEffect,
Stream vertexShaderByteCode, Stream pixelShaderByteCode)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new EffectGL3(managedEffect, vertexShaderByteCode, pixelShaderByteCode);
}
@ -133,7 +136,7 @@ namespace ANX.Framework.Windows.GL3
INativeGraphicsDevice IRenderSystemCreator.CreateGraphicsDevice(
PresentationParameters presentationParameters)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new GraphicsDeviceWindowsGL3(presentationParameters);
}
#endregion
@ -151,7 +154,7 @@ namespace ANX.Framework.Windows.GL3
public INativeTexture2D CreateTexture(GraphicsDevice graphics,
SurfaceFormat surfaceFormat, int width, int height, int mipCount)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new Texture2DGL3(surfaceFormat, width, height, mipCount);
}
#endregion
@ -169,7 +172,7 @@ namespace ANX.Framework.Windows.GL3
public INativeBuffer CreateIndexBuffer(GraphicsDevice graphics,
IndexElementSize size, int indexCount, BufferUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new IndexBufferGL3(size, indexCount, usage);
}
#endregion
@ -188,7 +191,7 @@ namespace ANX.Framework.Windows.GL3
VertexDeclaration vertexDeclaration, int vertexCount,
BufferUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new VertexBufferGL3(vertexDeclaration, vertexCount, usage);
}
#endregion
@ -200,7 +203,7 @@ namespace ANX.Framework.Windows.GL3
/// <returns>Native Blend State.</returns>
public INativeBlendState CreateBlendState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new BlendStateGL3();
}
#endregion
@ -212,7 +215,7 @@ namespace ANX.Framework.Windows.GL3
/// <returns>Native Rasterizer State.</returns>
public INativeRasterizerState CreateRasterizerState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new RasterizerStateGL3();
}
#endregion
@ -224,7 +227,7 @@ namespace ANX.Framework.Windows.GL3
/// <returns>Native Depth Stencil State.</returns>
public INativeDepthStencilState CreateDepthStencilState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new DepthStencilStateGL3();
}
#endregion
@ -236,7 +239,7 @@ namespace ANX.Framework.Windows.GL3
/// <returns>Native Sampler State.</returns>
public INativeSamplerState CreateSamplerState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new SamplerStateGL3();
}
#endregion
@ -249,7 +252,7 @@ namespace ANX.Framework.Windows.GL3
/// <returns>Byte code of the shader.</returns>
public byte[] GetShaderByteCode(PreDefinedShader type)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
if (type == PreDefinedShader.SpriteBatch)
{
@ -287,7 +290,7 @@ namespace ANX.Framework.Windows.GL3
/// <returns>List of graphics adapters.</returns>
public ReadOnlyCollection<GraphicsAdapter> GetAdapterList()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
var result = new List<GraphicsAdapter>();
foreach (DisplayDevice device in DisplayDevice.AvailableDisplays)
@ -348,7 +351,7 @@ namespace ANX.Framework.Windows.GL3
DepthFormat preferredDepthFormat, int preferredMultiSampleCount,
RenderTargetUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new RenderTarget2DGL3(width, height, mipMap, preferredFormat,
preferredDepthFormat, preferredMultiSampleCount, usage);
}

View File

@ -55,12 +55,15 @@ namespace ANX.Framework.Windows.GL3
internal class WindowsGameWindow : ANX.Framework.GameWindow
{
#region Public
#region Form
internal static Form Form
{
get;
private set;
}
#endregion
#region Handle
public override IntPtr Handle
{
get
@ -68,7 +71,9 @@ namespace ANX.Framework.Windows.GL3
return Form.Handle;
}
}
#endregion
#region IsMinimized
public override bool IsMinimized
{
get
@ -76,6 +81,17 @@ namespace ANX.Framework.Windows.GL3
return Form.WindowState == FormWindowState.Minimized;
}
}
#endregion
#region ScreenDeviceName
public override string ScreenDeviceName
{
get
{
throw new NotImplementedException();
}
}
#endregion
#region AllowUserResizing
public override bool AllowUserResizing
@ -147,23 +163,19 @@ namespace ANX.Framework.Windows.GL3
}
#endregion
#region BeginScreenDeviceChange
public override void BeginScreenDeviceChange(bool willBeFullScreen)
{
throw new NotImplementedException();
}
#endregion
#region EndScreenDeviceChange
public override void EndScreenDeviceChange(string screenDeviceName,
int clientWidth, int clientHeight)
{
throw new NotImplementedException();
}
public override string ScreenDeviceName
{
get
{
throw new NotImplementedException();
}
}
#endregion
}
}

View File

@ -84,32 +84,35 @@ namespace ANX.RenderSystem.Windows.DX11
}
public GameHost CreateGameHost(Game game)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new WindowsGameHost(game);
}
public INativeGraphicsDevice CreateGraphicsDevice(PresentationParameters presentationParameters)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new GraphicsDeviceWindowsDX11(presentationParameters);
}
public INativeBuffer CreateIndexBuffer(GraphicsDevice graphics, IndexElementSize size, int indexCount, BufferUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(
AddInType.RenderSystem);
return new IndexBuffer_DX11(graphics, size, indexCount, usage);
}
public INativeBuffer CreateVertexBuffer(GraphicsDevice graphics, VertexDeclaration vertexDeclaration, int vertexCount, BufferUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new VertexBuffer_DX11(graphics, vertexDeclaration, vertexCount, usage);
}
public INativeEffect CreateEffect(GraphicsDevice graphics, ANX.Framework.Graphics.Effect managedEffect, Stream vertexShaderByteCode, Stream pixelShaderByteCode)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
Effect_DX11 effect = new Effect_DX11(graphics, managedEffect, vertexShaderByteCode, pixelShaderByteCode);
@ -117,8 +120,8 @@ namespace ANX.RenderSystem.Windows.DX11
}
public INativeEffect CreateEffect(GraphicsDevice graphics, ANX.Framework.Graphics.Effect managedEffect, System.IO.Stream byteCode)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
Effect_DX11 effect = new Effect_DX11(graphics, managedEffect, byteCode);
@ -126,8 +129,8 @@ namespace ANX.RenderSystem.Windows.DX11
}
public Texture2D CreateTexture(GraphicsDevice graphics, string fileName)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
//TODO: implement
throw new NotImplementedException();
@ -141,32 +144,32 @@ namespace ANX.RenderSystem.Windows.DX11
}
public INativeBlendState CreateBlendState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new BlendState_DX11();
}
public INativeRasterizerState CreateRasterizerState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new RasterizerState_DX11();
}
public INativeDepthStencilState CreateDepthStencilState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new DepthStencilState_DX11();
}
public INativeSamplerState CreateSamplerState()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new SamplerState_DX11();
}
public byte[] GetShaderByteCode(PreDefinedShader type)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
if (type == PreDefinedShader.SpriteBatch)
{
@ -203,8 +206,8 @@ namespace ANX.RenderSystem.Windows.DX11
public System.Collections.ObjectModel.ReadOnlyCollection<GraphicsAdapter> GetAdapterList()
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
SharpDX.DXGI.Factory factory = new Factory();
@ -257,15 +260,15 @@ namespace ANX.RenderSystem.Windows.DX11
}
public INativeTexture2D CreateTexture(GraphicsDevice graphics, SurfaceFormat surfaceFormat, int width, int height, int mipCount)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new Texture2D_DX11(graphics, width, height, surfaceFormat, mipCount);
}
public INativeRenderTarget2D CreateRenderTarget(GraphicsDevice graphics, int width, int height, bool mipMap, SurfaceFormat preferredFormat, DepthFormat preferredDepthFormat, int preferredMultiSampleCount, RenderTargetUsage usage)
{
AddInSystemFactory.Instance.PreventRenderSystemChange();
{
AddInSystemFactory.Instance.PreventSystemChange(AddInType.RenderSystem);
return new RenderTarget2D_DX11(graphics, width, height, mipMap, preferredFormat, preferredDepthFormat, preferredMultiSampleCount, usage);
}

View File

@ -91,6 +91,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -122,6 +122,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -106,6 +106,10 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\SampleContent\SampleContent.contentproj">
<Project>{FA6E229D-4504-47B1-8A23-2D3FCC13F778}</Project>
<Name>SampleContent</Name>

View File

@ -91,6 +91,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -10,9 +10,11 @@ namespace RenderTarget
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
static void Main(string[] args)
{
//AddInSystemFactory.Instance.PreferredRenderSystem = "OpenGL3";
//AddInSystemFactory.Instance.PreferredRenderSystem = "DirectX11";
{
//AddInSystemFactory.Instance.SetPreferredSystem(
// AddInType.RenderSystem, "OpenGL3");
//AddInSystemFactory.Instance.SetPreferredSystem(
// AddInType.RenderSystem, "DirectX11");
using (Game1 game = new Game1())
{

View File

@ -91,6 +91,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -10,9 +10,10 @@ namespace WindowsGame1
/// The main entry point for the application.
/// </summary>
static void Main(string[] args)
{
//AddInSystemFactory.Instance.PreferredRenderSystem = "OpenGL3";
//AddInSystemFactory.Instance.PreferredRenderSystem = "DirectX11";
{
AddInSystemFactory.Instance.SetPreferredSystem(
AddInType.RenderSystem, "OpenGL3");
//AddInType.RenderSystem, "DirectX11");
using (Game1 game = new Game1())
{

View File

@ -91,6 +91,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -128,6 +128,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -10,8 +10,11 @@ namespace TextRendering
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
static void Main(string[] args)
{
AddInSystemFactory.Instance.PreferredRenderSystem = "OpenGL3";
{
//AddInSystemFactory.Instance.SetPreferredSystem(
// AddInType.RenderSystem, "OpenGL3");
//AddInSystemFactory.Instance.SetPreferredSystem(
// AddInType.RenderSystem, "DirectX11");
using (Game1 game = new Game1())
{

View File

@ -91,6 +91,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -91,6 +91,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -18,10 +18,15 @@ namespace WindowsGame1
AddInSelector selector = new AddInSelector();
if (selector.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
AddInSystemFactory.Instance.PreferredRenderSystem = selector.cbRenderSystem.Text;
AddInSystemFactory.Instance.PreferredSoundSystem = selector.cbAudioSystem.Text;
AddInSystemFactory.Instance.PreferredInputSystem = selector.cbInputSystem.Text;
{
AddInSystemFactory.Instance.SetPreferredSystem(
AddInType.RenderSystem, selector.cbRenderSystem.Text);
AddInSystemFactory.Instance.SetPreferredSystem(
AddInType.SoundSystem, selector.cbAudioSystem.Text);
AddInSystemFactory.Instance.SetPreferredSystem(
AddInType.InputSystem, selector.cbInputSystem.Text);
using (Game1 game = new Game1())
{

View File

@ -119,6 +119,10 @@
<Project>{49066074-3B7B-4A55-B122-6BD33AB73558}</Project>
<Name>ANX.InputSystem.Standard</Name>
</ProjectReference>
<ProjectReference Include="..\..\MediaSystems\ANX.MediaSystem.Windows.OpenAL\ANX.MediaSystem.Windows.OpenAL.csproj">
<Project>{97185A92-077D-4498-8B6A-8BFF04079044}</Project>
<Name>ANX.MediaSystem.Windows.OpenAL</Name>
</ProjectReference>
<ProjectReference Include="..\..\RenderSystems\ANX.Framework.Windows.DX10\ANX.Framework.Windows.DX10.csproj">
<Project>{5BE49183-2F6F-4527-AC90-D816911FCF90}</Project>
<Name>ANX.Framework.Windows.DX10</Name>

View File

@ -157,7 +157,7 @@ namespace ANX.SoundSystem.OpenAL
public ISoundEffectInstance CreateSoundEffectInstance(
ISoundEffect nativeSoundEffect)
{
AddInSystemFactory.Instance.PreventSoundSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.SoundSystem);
return new OpenALSoundEffectInstance((OpenALSoundEffect)nativeSoundEffect);
}
#endregion
@ -165,7 +165,7 @@ namespace ANX.SoundSystem.OpenAL
#region CreateSoundEffect
public ISoundEffect CreateSoundEffect(SoundEffect parent, Stream stream)
{
AddInSystemFactory.Instance.PreventSoundSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.SoundSystem);
return new OpenALSoundEffect(parent, stream);
}
#endregion
@ -175,7 +175,7 @@ namespace ANX.SoundSystem.OpenAL
int offset, int count, int sampleRate, AudioChannels channels,
int loopStart, int loopLength)
{
AddInSystemFactory.Instance.PreventSoundSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.SoundSystem);
throw new NotImplementedException();
}
#endregion
@ -183,7 +183,7 @@ namespace ANX.SoundSystem.OpenAL
#region CreateAudioListener (TODO)
public IAudioListener CreateAudioListener()
{
AddInSystemFactory.Instance.PreventSoundSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.SoundSystem);
throw new NotImplementedException();
}
#endregion
@ -191,7 +191,7 @@ namespace ANX.SoundSystem.OpenAL
#region CreateAudioEmitter (TODO)
public IAudioEmitter CreateAudioEmitter()
{
AddInSystemFactory.Instance.PreventSoundSystemChange();
AddInSystemFactory.Instance.PreventSystemChange(AddInType.SoundSystem);
throw new NotImplementedException();
}
#endregion