From 2a7dbe64e37d901e2ccb06be8c67001778fdbc8f Mon Sep 17 00:00:00 2001 From: Glatzemann Date: Wed, 14 Dec 2011 20:12:04 +0000 Subject: [PATCH] re-added some missing files --- .../ANX.InputSystem.OpenTK.csproj | 82 +++++++ .../ANX.InputDevices.OpenTK/Creator.cs | 133 +++++++++++ .../ANX.InputDevices.OpenTK/GamePad.cs | 81 +++++++ .../ANX.InputDevices.OpenTK/Keyboard.cs | 90 ++++++++ .../Metadata.Designer.cs | 72 ++++++ .../ANX.InputDevices.OpenTK/Metadata.resx | 123 ++++++++++ InputSystems/ANX.InputDevices.OpenTK/Mouse.cs | 85 +++++++ .../Properties/AssemblyInfo.cs | 36 +++ .../ANX.InputSystem.Windows.Kinect.csproj | 101 +++++++++ .../Creator.cs | 113 ++++++++++ .../ANX.InputDevices.Windows.Kinect/Kinect.cs | 212 ++++++++++++++++++ .../Metadata.Designer.cs | 72 ++++++ .../Metadata.resx | 123 ++++++++++ .../Properties/AssemblyInfo.cs | 36 +++ .../Properties/Resources.Designer.cs | 71 ++++++ .../Properties/Resources.resx | 117 ++++++++++ .../Properties/Settings.Designer.cs | 30 +++ .../Properties/Settings.settings | 7 + 18 files changed, 1584 insertions(+) create mode 100644 InputSystems/ANX.InputDevices.OpenTK/ANX.InputSystem.OpenTK.csproj create mode 100644 InputSystems/ANX.InputDevices.OpenTK/Creator.cs create mode 100644 InputSystems/ANX.InputDevices.OpenTK/GamePad.cs create mode 100644 InputSystems/ANX.InputDevices.OpenTK/Keyboard.cs create mode 100644 InputSystems/ANX.InputDevices.OpenTK/Metadata.Designer.cs create mode 100644 InputSystems/ANX.InputDevices.OpenTK/Metadata.resx create mode 100644 InputSystems/ANX.InputDevices.OpenTK/Mouse.cs create mode 100644 InputSystems/ANX.InputDevices.OpenTK/Properties/AssemblyInfo.cs create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/ANX.InputSystem.Windows.Kinect.csproj create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Creator.cs create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Kinect.cs create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Metadata.Designer.cs create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Metadata.resx create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Properties/AssemblyInfo.cs create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Resources.Designer.cs create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Resources.resx create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Settings.Designer.cs create mode 100644 InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Settings.settings diff --git a/InputSystems/ANX.InputDevices.OpenTK/ANX.InputSystem.OpenTK.csproj b/InputSystems/ANX.InputDevices.OpenTK/ANX.InputSystem.OpenTK.csproj new file mode 100644 index 00000000..3b9568fb --- /dev/null +++ b/InputSystems/ANX.InputDevices.OpenTK/ANX.InputSystem.OpenTK.csproj @@ -0,0 +1,82 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {5CA3CDF5-4D2C-42AC-AD08-641BD3992B75} + Library + Properties + ANX.InputSystem.OpenTK + ANX.InputSystem.OpenTK + v4.0 + 512 + + + true + full + false + ..\..\bin\Debug\ + TRACE;DEBUG;XNAEXT + prompt + 4 + + + pdbonly + true + ..\..\bin\Release\ + TRACE;XNAEXT + prompt + 4 + + + + False + ..\..\lib\NLog\NLog.dll + + + False + ..\..\lib\OpenTK\OpenTK.dll + + + False + ..\..\lib\OpenTK\OpenTK.Compatibility.dll + + + + + + + + + + + Metadata.resx + True + True + + + + + + + PublicResXFileCodeGenerator + Metadata.Designer.cs + + + + + {6899F0C9-70B9-4EB0-9DD3-E598D4BE3E35} + ANX.Framework + + + + + \ No newline at end of file diff --git a/InputSystems/ANX.InputDevices.OpenTK/Creator.cs b/InputSystems/ANX.InputDevices.OpenTK/Creator.cs new file mode 100644 index 00000000..0f9f8796 --- /dev/null +++ b/InputSystems/ANX.InputDevices.OpenTK/Creator.cs @@ -0,0 +1,133 @@ +#region Using Statements +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; +using System.Runtime.InteropServices; +using ANX.Framework.NonXNA; +using NLog; + +#endregion // Using Statements + +#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.InputSystem.OpenTK +{ + public class Creator : IInputSystemCreator + { + private static Logger logger = LogManager.GetCurrentClassLogger(); + + public string Name + { + get + { + return "OpenTK"; + } + } + + public int Priority + { + get { return 100; } + } + + public bool IsSupported + { + get + { + //TODO: this is just a very basic version of test for support + return AddInSystemFactory.Instance.OperatingSystem.Platform == PlatformID.Win32NT || + AddInSystemFactory.Instance.OperatingSystem.Platform == PlatformID.Unix || + AddInSystemFactory.Instance.OperatingSystem.Platform == PlatformID.MacOSX; + } + } + + public void RegisterCreator(AddInSystemFactory factory) + { + logger.Debug("adding OpenTK InputSystem creator to creator collection of AddInSystemFactory"); + factory.AddCreator(this); + } + + public IGamePad GamePad + { + get + { + logger.Debug("returning a new OpenTK GamePad device"); + AddInSystemFactory.Instance.PreventInputSystemChange(); + return new GamePad(); + } + } + + public IMouse Mouse + { + get + { + logger.Debug("returning a new OpenTK Mouse device"); + AddInSystemFactory.Instance.PreventInputSystemChange(); + return new Mouse(); + } + } + + public IKeyboard Keyboard + { + get + { + logger.Debug("returning a new OpenTK Keyboard device"); + AddInSystemFactory.Instance.PreventInputSystemChange(); + return new Keyboard(); + } + } + +#if XNAEXT + public IMotionSensingDevice MotionSensingDevice + { + get { return null; } + } +#endif + } +} diff --git a/InputSystems/ANX.InputDevices.OpenTK/GamePad.cs b/InputSystems/ANX.InputDevices.OpenTK/GamePad.cs new file mode 100644 index 00000000..41b9278f --- /dev/null +++ b/InputSystems/ANX.InputDevices.OpenTK/GamePad.cs @@ -0,0 +1,81 @@ +#region Using Statements +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using ANX.Framework.NonXNA; + +#endregion // Using Statements + +#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.InputSystem.OpenTK +{ + public class GamePad : IGamePad + { + public Framework.Input.GamePadCapabilities GetCapabilities(Framework.PlayerIndex playerIndex) + { + throw new NotImplementedException(); + } + + public Framework.Input.GamePadState GetState(Framework.PlayerIndex playerIndex, out bool isConnected, out int packetNumber) + { + throw new NotImplementedException(); + } + + public Framework.Input.GamePadState GetState(Framework.PlayerIndex playerIndex, Framework.Input.GamePadDeadZone deadZoneMode, out bool isConnected, out int packetNumber) + { + throw new NotImplementedException(); + } + + public bool SetVibration(Framework.PlayerIndex playerIndex, float leftMotor, float rightMotor) + { + throw new NotImplementedException(); + } + } +} diff --git a/InputSystems/ANX.InputDevices.OpenTK/Keyboard.cs b/InputSystems/ANX.InputDevices.OpenTK/Keyboard.cs new file mode 100644 index 00000000..1eda3445 --- /dev/null +++ b/InputSystems/ANX.InputDevices.OpenTK/Keyboard.cs @@ -0,0 +1,90 @@ +#region Using Statements +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using ANX.Framework.NonXNA; + +#endregion // Using Statements + +#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.InputSystem.OpenTK +{ + public class Keyboard : IKeyboard + { + private IntPtr windowHandle; + + public IntPtr WindowHandle + { + get + { + return this.windowHandle; + } + set + { + this.windowHandle = value; + } + } + + public Framework.Input.KeyboardState GetState() + { + throw new NotImplementedException(); + } + + public Framework.Input.KeyboardState GetState(Framework.PlayerIndex playerIndex) + { + throw new NotImplementedException(); + } + + public void Dispose() + { + throw new NotImplementedException(); + } + } +} diff --git a/InputSystems/ANX.InputDevices.OpenTK/Metadata.Designer.cs b/InputSystems/ANX.InputDevices.OpenTK/Metadata.Designer.cs new file mode 100644 index 00000000..e1be905f --- /dev/null +++ b/InputSystems/ANX.InputDevices.OpenTK/Metadata.Designer.cs @@ -0,0 +1,72 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.239 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace ANX.InputSystem.OpenTK { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // 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() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [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.InputSystem.OpenTK.Metadata", typeof(Metadata).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Win32NT Unix MacOsX ähnelt. + /// + public static string SupportedPlatforms { + get { + return ResourceManager.GetString("SupportedPlatforms", resourceCulture); + } + } + } +} diff --git a/InputSystems/ANX.InputDevices.OpenTK/Metadata.resx b/InputSystems/ANX.InputDevices.OpenTK/Metadata.resx new file mode 100644 index 00000000..8451d556 --- /dev/null +++ b/InputSystems/ANX.InputDevices.OpenTK/Metadata.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Win32NT Unix MacOsX + + \ No newline at end of file diff --git a/InputSystems/ANX.InputDevices.OpenTK/Mouse.cs b/InputSystems/ANX.InputDevices.OpenTK/Mouse.cs new file mode 100644 index 00000000..a71bb8bd --- /dev/null +++ b/InputSystems/ANX.InputDevices.OpenTK/Mouse.cs @@ -0,0 +1,85 @@ +#region Using Statements +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using ANX.Framework.NonXNA; + +#endregion // Using Statements + +#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.InputSystem.OpenTK +{ + public class Mouse : IMouse + { + private IntPtr windowHandle; + + public IntPtr WindowHandle + { + get + { + return this.windowHandle; + } + set + { + this.windowHandle = value; + } + } + + public Framework.Input.MouseState GetState() + { + throw new NotImplementedException(); + } + + public void SetPosition(int x, int y) + { + throw new NotImplementedException(); + } + } +} diff --git a/InputSystems/ANX.InputDevices.OpenTK/Properties/AssemblyInfo.cs b/InputSystems/ANX.InputDevices.OpenTK/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..3874dd34 --- /dev/null +++ b/InputSystems/ANX.InputDevices.OpenTK/Properties/AssemblyInfo.cs @@ -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.InputSystem.OpenTK")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("ANX.Framework Team")] +[assembly: AssemblyProduct("ANX.InputSystem.OpenTK")] +[assembly: AssemblyCopyright("Copyright © ANX.Framework Team 2011")] +[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("239b9c28-3493-4325-9f03-303b25b0efda")] + +// 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("0.0.2.0")] +[assembly: AssemblyFileVersion("0.0.2.0")] diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/ANX.InputSystem.Windows.Kinect.csproj b/InputSystems/ANX.InputDevices.Windows.Kinect/ANX.InputSystem.Windows.Kinect.csproj new file mode 100644 index 00000000..3c57a416 --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/ANX.InputSystem.Windows.Kinect.csproj @@ -0,0 +1,101 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {E5D69E75-D77C-493F-BBDA-6F9E73B82549} + Library + Properties + ANX.InputSystem.Windows.Kinect + ANX.InputSystem.Windows.Kinect + v4.0 + Client + 512 + + + x86 + true + full + false + ..\..\bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + ..\..\bin\Debug\ + TRACE + prompt + 4 + + + + + + + False + ..\..\lib\KinectSDK\Microsoft.Research.Kinect.dll + + + + + + + + + + + + + + + + + Metadata.resx + True + True + + + + PublicResXFileCodeGenerator + Metadata.Designer.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + {6899F0C9-70B9-4EB0-9DD3-E598D4BE3E35} + ANX.Framework + + + + + \ No newline at end of file diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Creator.cs b/InputSystems/ANX.InputDevices.Windows.Kinect/Creator.cs new file mode 100644 index 00000000..1f14f40d --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Creator.cs @@ -0,0 +1,113 @@ +#region Using Statements +using System; +using ANX.Framework.Input; +using ANX.Framework.NonXNA; + +#endregion // Using Statements + +#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.InputSystem.Windows.Kinect +{ + public class Creator : IInputSystemCreator + { + public string Name + { + get { return "Kinect"; } + } + + public int Priority + { + get { return int.MaxValue; } + } + + public bool IsSupported + { + get + { + //TODO: this is just a very basic version of test for support + return AddInSystemFactory.Instance.OperatingSystem.Platform == PlatformID.Win32NT; + } + } + + public void RegisterCreator(AddInSystemFactory factory) + { + factory.AddCreator(this); + } + + #region IInputSystemCreator Member + + public IGamePad GamePad + { + get { throw new NotImplementedException(); } + } + + public IMouse Mouse + { + get { return null; } + } + + public IMotionSensingDevice MotionSensingDevice + { + get + { + AddInSystemFactory.Instance.PreventInputSystemChange(); + return new Kinect(); + } + } + + public IKeyboard Keyboard + { + get { throw new NotImplementedException(); } + } + + #endregion + + } +} diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Kinect.cs b/InputSystems/ANX.InputDevices.Windows.Kinect/Kinect.cs new file mode 100644 index 00000000..f7f89d32 --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Kinect.cs @@ -0,0 +1,212 @@ +#region Using Statements +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using ANX.Framework; +using ANX.Framework.Graphics; +using ANX.Framework.NonXNA; +using Microsoft.Research.Kinect.Nui; +using ANX.Framework.Input.MotionSensing; + +#endregion // Using Statements + +#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. +// +// 2.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.InputSystem.Windows.Kinect +{ + + public class Kinect : IMotionSensingDevice + { + #region Private Members + private Runtime pNui; + private Vector3[] cache; + private GraphicsDevice graphicsDevice; + private Texture2D rgb; + private Texture2D depth; + + #endregion // Private Members + + public Kinect() + { + pNui = Runtime.Kinects[0]; + pNui.Initialize(RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking | RuntimeOptions.UseColor); + pNui.SkeletonEngine.TransformSmooth = true; + + + + this.cache = new Vector3[21]; + //init for the first time + for (int i = 0; i < 21; ++i) + { + this.cache[i]=Vector3.Zero; + } + //Added parameters which where used in our Kinect project + var parameters = new TransformSmoothParameters + { + Smoothing = 0.5f, + Correction = 0.2f, + Prediction = 0.04f, + JitterRadius = 0.9f, + MaxDeviationRadius = 0.9f + }; + + pNui.SkeletonEngine.SmoothParameters = parameters; + + try + { + pNui.VideoStream.Open(ImageStreamType.Video, 2, ImageResolution.Resolution640x480, ImageType.Color); + pNui.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Resolution320x240, ImageType.DepthAndPlayerIndex); + } + catch (InvalidOperationException) + { + // Display error message; omitted for space return; + } + //lastTime = DateTime.Now; + + pNui.SkeletonFrameReady += new EventHandler(pNui_SkeletonFrameReady); + pNui.DepthFrameReady += new EventHandler(pNui_DepthFrameReady); + pNui.VideoFrameReady += new EventHandler(pNui_VideoFrameReady); + + // move down all the way + pNui.NuiCamera.ElevationAngle = -15; + + System.Threading.Thread.Sleep(1500); + + // move up all the way + pNui.NuiCamera.ElevationAngle = 20; + } + + void pNui_VideoFrameReady(object sender, ImageFrameReadyEventArgs e) + { + if (this.graphicsDevice != null) + { + if (this.rgb == null) + { + this.rgb = new Texture2D(this.graphicsDevice, e.ImageFrame.Image.Width, e.ImageFrame.Image.Height); + } + + //TODO: this works only if the image is in RGBA32 Format. Other formats does need a conversion first. + this.rgb.SetData(e.ImageFrame.Image.Bits); + } + } + + void pNui_DepthFrameReady(object sender, ImageFrameReadyEventArgs e) + { + if (this.graphicsDevice != null) + { + if (this.depth == null) + { + this.depth = new Texture2D(this.graphicsDevice, e.ImageFrame.Image.Width, e.ImageFrame.Image.Height); + } + + //TODO: this works only if the image is in RGBA32 Format. Other formats does need a conversion first. + //TODO: special surface format: this.depth.SetData(e.ImageFrame.Image.Bits); + } + } + + private void pNui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) + { + foreach (SkeletonData data in e.SkeletonFrame.Skeletons) + { + //Tracked that defines whether a skeleton is 'tracked' or not. + //The untracked skeletons only give their position. + if (SkeletonTrackingState.Tracked != data.TrackingState) continue; + + //Each joint has a Position property that is defined by a Vector4: (x, y, z, w). + //The first three attributes define the position in camera space. + //The last attribute (w) + //gives the quality level (between 0 and 2) of the + foreach (Joint joint in data.Joints) + { + if (joint.Position.W < 0.6f) return;// Quality check + cache[(int)joint.ID] = toVector3(joint.Position); + } + } + } + + private Vector3 toVector3(Vector vector) + { + //evtl -z + return new Vector3(vector.X, vector.Y, vector.Z); + } + + public MotionSensingDeviceState GetState() + { + return new MotionSensingDeviceState(rgb, depth, cache[0], cache[1], cache[2], cache[3], cache[4], cache[5], cache[6], cache[7], cache[8], cache[9], cache[10],cache[11], cache[12], cache[13], cache[14], cache[15], cache[16], cache[17], cache[18], cache[19], cache[20]); + } + + + + public GraphicsDevice GraphicsDevice + { + get + { + return graphicsDevice; + } + set + { + graphicsDevice = value; + } + } + + public MotionSensingDeviceType DeviceType + { + get { return MotionSensingDeviceType.Kinect; } + } + + public void Dispose() + { + if (pNui != null) + { + pNui.Uninitialize(); + pNui = null; + } + } + } +} diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Metadata.Designer.cs b/InputSystems/ANX.InputDevices.Windows.Kinect/Metadata.Designer.cs new file mode 100644 index 00000000..7f23c917 --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Metadata.Designer.cs @@ -0,0 +1,72 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.239 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace ANX.Framework.Windows.DX10 { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // 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() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [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.Framework.Windows.DX10.Metadata", typeof(Metadata).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die Win32NT ähnelt. + /// + public static string SupportedPlatforms { + get { + return ResourceManager.GetString("SupportedPlatforms", resourceCulture); + } + } + } +} diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Metadata.resx b/InputSystems/ANX.InputDevices.Windows.Kinect/Metadata.resx new file mode 100644 index 00000000..c90f8c84 --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Metadata.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Win32NT + + \ No newline at end of file diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/AssemblyInfo.cs b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..2be16cc8 --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/AssemblyInfo.cs @@ -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.InputSystem.Windows.Kinect")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("ANX.Framework Team")] +[assembly: AssemblyProduct("ANX.InputSystem.Windows.Kinect")] +[assembly: AssemblyCopyright("Copyright © ANX.Framework Team 2011")] +[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("bcca5303-c3a4-4dba-a408-0d2da515e7c2")] + +// 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("0.5.4.0")] +[assembly: AssemblyFileVersion("0.5.4.0")] diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Resources.Designer.cs b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Resources.Designer.cs new file mode 100644 index 00000000..6099e6bd --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.239 +// +// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn +// der Code neu generiert wird. +// +//------------------------------------------------------------------------------ + +namespace ANX.InputSystem.Windows.Kinect.Properties +{ + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder-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 Option /str erneut aus, oder erstellen Sie 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()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ANX.InputSystem.Windows.Kinect.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Resources.resx b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Resources.resx new file mode 100644 index 00000000..ffecec85 --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Settings.Designer.cs b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Settings.Designer.cs new file mode 100644 index 00000000..a82b1e66 --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.239 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ANX.InputSystem.Windows.Kinect.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Settings.settings b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Settings.settings new file mode 100644 index 00000000..abf36c5d --- /dev/null +++ b/InputSystems/ANX.InputDevices.Windows.Kinect/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + +