diff --git a/Silk.NET.sln b/Silk.NET.sln index d1d8b51591..967083bce5 100644 --- a/Silk.NET.sln +++ b/Silk.NET.sln @@ -298,6 +298,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.SilkTouch", "src\C EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.SDL", "src\Windowing\Silk.NET.SDL\Silk.NET.SDL.csproj", "{F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.Windowing.Sdl", "src\Windowing\Silk.NET.Windowing.Sdl\Silk.NET.Windowing.Sdl.csproj", "{FF526329-094A-4B25-ABC5-750D62E48101}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Silk.NET.Input.Sdl", "src\Input\Silk.NET.Input.Sdl\Silk.NET.Input.Sdl.csproj", "{377A7D9A-2691-4683-AB81-03B1642B3A78}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1823,6 +1827,30 @@ Global {F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA}.Release|x64.Build.0 = Release|Any CPU {F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA}.Release|x86.ActiveCfg = Release|Any CPU {F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA}.Release|x86.Build.0 = Release|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Debug|x64.ActiveCfg = Debug|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Debug|x64.Build.0 = Debug|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Debug|x86.ActiveCfg = Debug|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Debug|x86.Build.0 = Debug|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Release|Any CPU.Build.0 = Release|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Release|x64.ActiveCfg = Release|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Release|x64.Build.0 = Release|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Release|x86.ActiveCfg = Release|Any CPU + {FF526329-094A-4B25-ABC5-750D62E48101}.Release|x86.Build.0 = Release|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Debug|x64.ActiveCfg = Debug|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Debug|x64.Build.0 = Debug|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Debug|x86.ActiveCfg = Debug|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Debug|x86.Build.0 = Debug|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Release|Any CPU.ActiveCfg = Release|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Release|Any CPU.Build.0 = Release|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Release|x64.ActiveCfg = Release|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Release|x64.Build.0 = Release|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Release|x86.ActiveCfg = Release|Any CPU + {377A7D9A-2691-4683-AB81-03B1642B3A78}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection EndGlobalSection GlobalSection(NestedProjects) = preSolution @@ -1958,6 +1986,8 @@ Global {00D8F04F-2063-4F4E-B793-0F9DCF2BCFA9} = {23324041-2076-477C-A4BF-B385B8066C6C} {6B703607-0D63-4A25-BB6A-EC1FBBD77A8C} = {0651C5EF-50AA-4598-8D9C-8F210ADD8490} {F16EDD0F-5ABE-4B25-98EE-8397E55B5CBA} = {23324041-2076-477C-A4BF-B385B8066C6C} + {FF526329-094A-4B25-ABC5-750D62E48101} = {23324041-2076-477C-A4BF-B385B8066C6C} + {377A7D9A-2691-4683-AB81-03B1642B3A78} = {FA9D1C95-5585-4DEC-B226-1447A486C376} EndGlobalSection EndGlobalSection EndGlobal diff --git a/build/cache/cl.json.gz b/build/cache/cl.json.gz index 4c39c78d93..28f1d2b017 100644 Binary files a/build/cache/cl.json.gz and b/build/cache/cl.json.gz differ diff --git a/build/cache/gl.json.gz b/build/cache/gl.json.gz index 1489e4bd73..f053bf2b73 100644 Binary files a/build/cache/gl.json.gz and b/build/cache/gl.json.gz differ diff --git a/build/cache/glcore.json.gz b/build/cache/glcore.json.gz index fa74d6d5f5..aafcac8a2c 100644 Binary files a/build/cache/glcore.json.gz and b/build/cache/glcore.json.gz differ diff --git a/build/cache/gles2.json.gz b/build/cache/gles2.json.gz index d7c1ac4991..b114c3c4eb 100644 Binary files a/build/cache/gles2.json.gz and b/build/cache/gles2.json.gz differ diff --git a/build/cache/openxr.json.gz b/build/cache/openxr.json.gz index c8cddc6501..e7350e55bf 100644 Binary files a/build/cache/openxr.json.gz and b/build/cache/openxr.json.gz differ diff --git a/build/cache/sdl.json.gz b/build/cache/sdl.json.gz index 717dc55ed1..7f087b8f42 100644 Binary files a/build/cache/sdl.json.gz and b/build/cache/sdl.json.gz differ diff --git a/build/cache/vulkan.json.gz b/build/cache/vulkan.json.gz index a0af3d0d83..5e7470a4dd 100644 Binary files a/build/cache/vulkan.json.gz and b/build/cache/vulkan.json.gz differ diff --git a/generator.json b/generator.json index 7607b6e378..301d9cde46 100644 --- a/generator.json +++ b/generator.json @@ -513,7 +513,8 @@ { "profileName": "SDL", "sources": [ - "build/submodules/SDL-mirror/include/SDL.h" + "build/submodules/SDL-mirror/include/SDL.h", + "build/submodules/SDL-mirror/include/SDL_vulkan.h" ], "mode": "Clang", "cacheDir": "build/cache", @@ -550,10 +551,13 @@ "build/submodules/SDL-mirror/include/*.h" ], "classes": { - "SDL.h": "[Core]SDL" + "SDL.h": "[Core]Sdl", + "SDL_vulkan.h": "[Core]Sdl" } }, "exclude": [ + "VkSurfaceKHR", + "VkInstance" ], "rename": { "__AnonymousEnum_SDL_shape_L80_C9": "WindowShapeModeVal", @@ -569,7 +573,8 @@ }, "bakery": { "profileNames": [ - "SDL" + "SDL", + "SDL_vulkan" ] }, "output": { @@ -581,11 +586,11 @@ "namespace": "Silk.NET.SDL", "extensionsNamespace": "Silk.NET.SDL.Extensions", "nameContainer": { - "linux-x64": "libSDL2-2.0.so.0", + "linux-x64": "libSDL2-2.0.so", "win-x64": "SDL2.dll", "win-x86": "SDL2.dll", - "osx-x64": "libSDL2-2.0.0.dylib", - "android": "libSDL2-2.0.so.0", + "osx-x64": "libSDL2-2.0.dylib", + "android": "libSDL2-2.0.so", "iOS": "__Internal", "className": "SDLLibraryNameContainer" }, @@ -594,7 +599,9 @@ "$typemapPrecedesInjections": "true", "WindowShapeMode": "WindowShapeModeVal", "SDL_bool": "SdlBool", - "SDL_RWops": "RWops" + "SDL_RWops": "RWops", + "VkInstance": "Silk.NET.Core.Native.VkHandle", + "VkSurfaceKHR": "Silk.NET.Core.Native.VkNonDispatchableHandle" }, { "$include.commonTypeMap": "build/csharp_typemap.json" diff --git a/src/Core/Silk.NET.BuildTools/Cpp/Clang.cs b/src/Core/Silk.NET.BuildTools/Cpp/Clang.cs index 3231f7d322..0f885404ac 100644 --- a/src/Core/Silk.NET.BuildTools/Cpp/Clang.cs +++ b/src/Core/Silk.NET.BuildTools/Cpp/Clang.cs @@ -140,7 +140,11 @@ void VisitDecls(IEnumerable decls) { foreach (var decl in decls) { - if (task.ClangOpts.Traverse.Length == 0) + if (decl.Location.IsFromMainFile) + { + Visit(decl); + } + else if (task.ClangOpts.Traverse.Length == 0) { if (!decl.Location.IsFromMainFile) { diff --git a/src/Core/Silk.NET.Core/Contexts/IVkSurface.cs b/src/Core/Silk.NET.Core/Contexts/IVkSurface.cs index a6648f1559..c9df8baee5 100644 --- a/src/Core/Silk.NET.Core/Contexts/IVkSurface.cs +++ b/src/Core/Silk.NET.Core/Contexts/IVkSurface.cs @@ -16,7 +16,7 @@ public interface IVkSurface /// A custom Vulkan allocator. Can be omitted by passing null. /// Allocator type /// A handle to the Vulkan surface created - unsafe VkHandle Create(VkHandle instance, T* allocator) where T : unmanaged; + unsafe VkNonDispatchableHandle Create(VkHandle instance, T* allocator) where T : unmanaged; /// /// Get the extensions required for Vulkan to work on this platform. diff --git a/src/Core/Silk.NET.Core/Miscellaneous/PlatformException.cs b/src/Core/Silk.NET.Core/Miscellaneous/PlatformException.cs new file mode 100644 index 0000000000..f8af543d86 --- /dev/null +++ b/src/Core/Silk.NET.Core/Miscellaneous/PlatformException.cs @@ -0,0 +1,58 @@ +// This file is part of Silk.NET. +// +// You may modify and distribute Silk.NET under the terms +// of the MIT license. See the LICENSE file for details. + +using System; + +namespace Silk.NET.Core +{ + /// + /// An exception thrown when an underlying native platform fails to complete an operation due to an error. + /// + public class PlatformException : Exception + { + private const string DefaultMessage = + "The operation could not be completed due to an error in an underlying native platform."; + /// + /// Creates an instance of this exception with the default message. + /// + public PlatformException() : base(DefaultMessage) + { + } + + /// + /// Creates an instance of this exception with the given message. + /// + /// The message. + public PlatformException(string msg) : base(msg) + { + } + + /// + /// Creates an instance of this exception with the given inner exception. + /// + /// The inner exception. + public PlatformException(Exception innerException) : base(DefaultMessage, innerException) + { + } + + /// + /// Creates an instance of this exception with the given message and inner exception. + /// + /// The message. + /// The inner exception. + public PlatformException(string msg, Exception innerException) : base(msg, innerException) + { + } + + /// + /// Creates an instance of this exception with the given message and inner exceptions. + /// + /// The message. + /// The inner exceptions. + public PlatformException(string msg, params Exception[] inner) : base(msg, new AggregateException(inner)) + { + } + } +} diff --git a/src/Core/Silk.NET.Core/Native/VkNonDispatchableHandle.cs b/src/Core/Silk.NET.Core/Native/VkNonDispatchableHandle.cs new file mode 100644 index 0000000000..50148bb0bf --- /dev/null +++ b/src/Core/Silk.NET.Core/Native/VkNonDispatchableHandle.cs @@ -0,0 +1,34 @@ +// This file is part of Silk.NET. +// +// You may modify and distribute Silk.NET under the terms +// of the MIT license. See the LICENSE file for details. + +using System; +using System.Runtime.InteropServices; + +namespace Silk.NET.Core.Native +{ + /// + /// A handle to a Vulkan object. + /// + [StructLayout(LayoutKind.Sequential)] + public struct VkNonDispatchableHandle + { + /// + /// The actual value of the Vulkan handle. + /// + public ulong Handle; + + /// + /// Initializes a new instance of the struct. + /// + /// + /// The native Vulkan handle. + /// This is NOT a pointer to a field containing the handle, this is the actual handle itself. + /// + public VkNonDispatchableHandle(ulong handle) + { + Handle = handle; + } + } +} diff --git a/src/Core/Silk.NET.SilkTouch/NativeApiGenerator.cs b/src/Core/Silk.NET.SilkTouch/NativeApiGenerator.cs index 808504dee1..11dd628183 100644 --- a/src/Core/Silk.NET.SilkTouch/NativeApiGenerator.cs +++ b/src/Core/Silk.NET.SilkTouch/NativeApiGenerator.cs @@ -59,7 +59,7 @@ public void Execute(SourceGeneratorContext context) var name = $"{receiverClassDeclaration.Identifier.Text}.{receiverClassDeclaration.GetHashCode()}.gen"; context.AddSource(name, SourceText.From(s, Encoding.UTF8)); - File.WriteAllText(name, s); + // File.WriteAllText(name, s); } } diff --git a/src/Core/Silk.NET.SilkTouch/Silk.NET.SilkTouch.csproj b/src/Core/Silk.NET.SilkTouch/Silk.NET.SilkTouch.csproj index d04e79d5aa..9d73a8e083 100644 --- a/src/Core/Silk.NET.SilkTouch/Silk.NET.SilkTouch.csproj +++ b/src/Core/Silk.NET.SilkTouch/Silk.NET.SilkTouch.csproj @@ -7,11 +7,15 @@ - https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json ;$(RestoreAdditionalProjectSources) + + https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json; + https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json; + $(RestoreAdditionalProjectSources) + - + diff --git a/src/Core/Silk.NET.SilkTouch/StringMarshaller.cs b/src/Core/Silk.NET.SilkTouch/StringMarshaller.cs index 867bb03225..baca3e497b 100644 --- a/src/Core/Silk.NET.SilkTouch/StringMarshaller.cs +++ b/src/Core/Silk.NET.SilkTouch/StringMarshaller.cs @@ -182,8 +182,62 @@ private static void StringMarshaller(ref MarshalContext ctx, Action next) } } + var marshalReturn = !ctx.ReturnsVoid && SymbolEqualityComparer.Default.Equals(ctx.ReturnLoadType, @string); + var returnName = $"smo{ctx.Slot}res"; + var returnMarshalAs = ctx.ReturnMarshalOptions?.MarshalAs ?? UnmanagedType.LPStr; + if (marshalReturn) + { + ctx.DeclareVariable(@string, returnName); + ctx.ReturnLoadType = ctx.Compilation.CreatePointerTypeSymbol + ( + returnMarshalAs switch + { + UnmanagedType.BStr => ctx.Compilation.GetSpecialType(SpecialType.System_Char), + UnmanagedType.LPWStr => ctx.Compilation.GetSpecialType(SpecialType.System_Char), + UnmanagedType.LPStr => ctx.Compilation.GetSpecialType(SpecialType.System_Byte), + UnmanagedType.LPTStr => ctx.Compilation.GetSpecialType(SpecialType.System_Byte), + } + ); + } next(); - + + if (marshalReturn) + { + ctx.CurrentStatements = ctx.CurrentStatements.Append + ( + ExpressionStatement + ( + AssignmentExpression + ( + SyntaxKind.SimpleAssignmentExpression, IdentifierName(returnName), + InvocationExpression + ( + _stringFromPtr[returnMarshalAs], + ArgumentList + ( + SingletonSeparatedList + ( + Argument + ( + CastExpression + ( + IdentifierName + ( + ctx.Compilation.GetSpecialType + (SpecialType.System_IntPtr) + .ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat) + ), ctx.ResultExpression + ) + ) + ) + ) + ) + ) + ) + ); + ctx.ResultExpression = IdentifierName(returnName); + } + for (var index = 0; index < ctx.ParameterExpressions.Length; index++) { if (b[index]) continue; diff --git a/src/Core/Silk.NET/Silk.NET.csproj b/src/Core/Silk.NET/Silk.NET.csproj index ff14ad9a1b..386bbf8366 100644 --- a/src/Core/Silk.NET/Silk.NET.csproj +++ b/src/Core/Silk.NET/Silk.NET.csproj @@ -6,14 +6,14 @@ - - + + diff --git a/src/Input/Silk.NET.Input.Common/Enums/ButtonName.cs b/src/Input/Silk.NET.Input.Common/Enums/ButtonName.cs index fbb4eb9d5e..806de0e838 100644 --- a/src/Input/Silk.NET.Input.Common/Enums/ButtonName.cs +++ b/src/Input/Silk.NET.Input.Common/Enums/ButtonName.cs @@ -19,72 +19,72 @@ public enum ButtonName /// The A button. /// A = 0, - + /// /// The B button. /// B, - + /// /// The X button. /// X, - + /// /// The Y button. /// Y, - + /// /// The left bumper. /// LeftBumper, - + /// /// The right bumper. /// RightBumper, - + /// /// The back button. /// Back, - + /// /// The start button. /// Start, - + /// /// The home button. /// Home, - + /// /// Clicking the left stick. /// LeftStick, - + /// /// Clicking the right stick. /// RightStick, - + /// /// Up on the D-Pad. /// DPadUp, - + /// /// Right on the D-Pad. /// DPadRight, - + /// /// Down on the D-Pad. /// DPadDown, - + /// /// Left on the D-Pad. /// diff --git a/src/Input/Silk.NET.Input.Common/Enums/CursorMode.cs b/src/Input/Silk.NET.Input.Common/Enums/CursorMode.cs index af1c334021..eb3e1d56c8 100644 --- a/src/Input/Silk.NET.Input.Common/Enums/CursorMode.cs +++ b/src/Input/Silk.NET.Input.Common/Enums/CursorMode.cs @@ -18,17 +18,20 @@ public enum CursorMode /// Cursor is visible and has no restrictions on mobility. /// Normal, - + /// /// Cursor is invisible, and has no restrictions on mobility. /// Hidden, - + /// /// Cursor is invisible, and is restricted to the center of the screen. /// + /// + /// Only supported by GLFW, throws on SDL if used. + /// Disabled, - + /// /// Cursor is invisible, and is restricted to the center of the screen. Mouse motion is not scaled. /// diff --git a/src/Input/Silk.NET.Input.Common/Enums/DeadzoneMethod.cs b/src/Input/Silk.NET.Input.Common/Enums/DeadzoneMethod.cs index c117466fe9..56719f06ad 100644 --- a/src/Input/Silk.NET.Input.Common/Enums/DeadzoneMethod.cs +++ b/src/Input/Silk.NET.Input.Common/Enums/DeadzoneMethod.cs @@ -22,7 +22,7 @@ public enum DeadzoneMethod /// /// Traditional, - + /// /// A deadzone method where the reported value adapts to the range of the deadzone. If the value is within the deadzone, the reported value is 0. /// After exiting the deadzone, the reported value increases from 0 (when the actual value first exits the deadzone) to 1 (when the actual value is 1). diff --git a/src/Input/Silk.NET.Input.Common/Enums/Key.cs b/src/Input/Silk.NET.Input.Common/Enums/Key.cs index 32dd65e497..e25260fb3e 100644 --- a/src/Input/Silk.NET.Input.Common/Enums/Key.cs +++ b/src/Input/Silk.NET.Input.Common/Enums/Key.cs @@ -49,7 +49,7 @@ public enum Key /// The 0 key. /// Number0 = 48, - + /// /// The 0 key; alias for /// diff --git a/src/Input/Silk.NET.Input.Common/Enums/MouseButton.cs b/src/Input/Silk.NET.Input.Common/Enums/MouseButton.cs index 27872a5699..bbf264a081 100644 --- a/src/Input/Silk.NET.Input.Common/Enums/MouseButton.cs +++ b/src/Input/Silk.NET.Input.Common/Enums/MouseButton.cs @@ -24,60 +24,60 @@ public enum MouseButton /// The left mouse button. /// Left = 0, - + /// /// The right mouse button. /// Right, - + /// /// The middle mouse button. /// Middle, - + /// /// The fourth mouse button. /// Button4, - + /// /// The fifth mouse button. /// Button5, - + /// /// The sixth mouse button. /// Button6, - + /// /// The seventh mouse button. /// Button7, - + /// /// The eighth mouse button. /// Button8, - + /// /// The ninth mouse button. /// Button9, - + /// /// The tenth mouse button. /// Button10, - + /// /// The eleventh mouse button. /// Button11, - + /// /// The twelth mouse button. /// Button12 } -} \ No newline at end of file +} diff --git a/src/Input/Silk.NET.Input.Common/Enums/Position2D.cs b/src/Input/Silk.NET.Input.Common/Enums/Position2D.cs index e66fc33d25..7fdabb41a6 100644 --- a/src/Input/Silk.NET.Input.Common/Enums/Position2D.cs +++ b/src/Input/Silk.NET.Input.Common/Enums/Position2D.cs @@ -17,45 +17,45 @@ public enum Position2D /// The hat is centered. /// Centered = 0, - + /// /// The hat is pressed up. /// Up = 1, - + /// /// The hat is pressed down. /// Down = 2, - + /// /// The hat is pressed left. /// Left = 4, - + /// /// The hat is pressed right. /// Right = 8, - + /// /// The hat is pressed up and to the left. /// UpLeft = Up | Left, - + /// /// The hat is pressed up and to the right. /// UpRight = Up | Right, - + /// /// The hat is pressed down and to the left. /// DownLeft = Down | Left, - + /// /// The hat is pressed down and to the right. /// DownRight = Down | Right } -} \ No newline at end of file +} diff --git a/src/Input/Silk.NET.Input.Common/InputWindowExtensions.cs b/src/Input/Silk.NET.Input.Common/InputWindowExtensions.cs index 4b7f2d8ddd..f1fb0f27f7 100644 --- a/src/Input/Silk.NET.Input.Common/InputWindowExtensions.cs +++ b/src/Input/Silk.NET.Input.Common/InputWindowExtensions.cs @@ -23,7 +23,7 @@ public static class InputWindowExtensions static InputWindowExtensions() { TryAdd("Silk.NET.Input.Glfw"); - TryAdd("Silk.NET.Input.Glvf"); + TryAdd("Silk.NET.Input.Sdl"); } /// @@ -44,10 +44,10 @@ public static IInputContext CreateInput(this IView view) return inputPlatform.CreateInput(view); } } - + throw new NotSupportedException("Couldn't find a suitable input platform for this view."); } - + /// /// Adds this input platform to the platform list. Shouldn't be used unless writing your own input backend. /// @@ -81,7 +81,7 @@ public static bool TryAdd(string assemblyName) { return false; } - + Add((IInputPlatform) Activator.CreateInstance(attr.Type, true)); return true; } diff --git a/src/Input/Silk.NET.Input.Common/Interfaces/ICursor.cs b/src/Input/Silk.NET.Input.Common/Interfaces/ICursor.cs index 40eaec0e85..3a733440de 100644 --- a/src/Input/Silk.NET.Input.Common/Interfaces/ICursor.cs +++ b/src/Input/Silk.NET.Input.Common/Interfaces/ICursor.cs @@ -33,6 +33,14 @@ public interface ICursor /// CursorMode CursorMode { get; set; } + /// + /// Determines whether the cursor is locked to the bounds of the view/window of this input context. + /// + /// + /// Only supported by SDL, will have no effect on GLFW. + /// + bool IsConfined { get; set; } + /// /// Hotspot on the X axis. /// diff --git a/src/Input/Silk.NET.Input.Common/Interfaces/IGamepad.cs b/src/Input/Silk.NET.Input.Common/Interfaces/IGamepad.cs index 17d7ead7c2..511d52ad97 100644 --- a/src/Input/Silk.NET.Input.Common/Interfaces/IGamepad.cs +++ b/src/Input/Silk.NET.Input.Common/Interfaces/IGamepad.cs @@ -17,27 +17,27 @@ public interface IGamepad : IInputDevice /// A list of all available buttons. /// IReadOnlyList