aboutsummaryrefslogtreecommitdiff
path: root/bindings
diff options
context:
space:
mode:
Diffstat (limited to 'bindings')
-rw-r--r--bindings/c/Cargo.toml15
-rw-r--r--bindings/c/build.rs47
-rw-r--r--bindings/c/src/data_c/common.rs6
-rw-r--r--bindings/c/src/data_c/connection_callback_message_c.rs129
-rw-r--r--bindings/c/src/data_c/connection_message_c.rs95
-rw-r--r--bindings/c/src/data_c/control_message_c.rs150
-rw-r--r--bindings/c/src/data_c/game_message_c.rs114
-rw-r--r--bindings/c/src/data_c/game_profile_c.rs101
-rw-r--r--bindings/c/src/data_c/mod.rs11
-rw-r--r--bindings/c/src/data_c/player_info_c.rs95
-rw-r--r--bindings/c/src/data_c/player_info_list_c.rs8
-rw-r--r--bindings/c/src/lib.rs41
-rw-r--r--bindings/c/src/service_c/common.rs4
-rw-r--r--bindings/c/src/service_c/mod.rs4
-rw-r--r--bindings/c/src/service_c/padclient.rs126
-rw-r--r--bindings/c/src/service_c/padserver.rs174
-rw-r--r--bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/.gitignore13
-rw-r--r--bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/indexLayout.xml8
-rw-r--r--bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/vcs.xml6
-rw-r--r--bindings/csharp/NoGamepadsSharp/.run/Run Example.run.xml20
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp.sln22
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/GameProfile.cs6
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/HsvColor.cs158
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/PlayerInfo.cs19
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/NoGamepadsSharp_Core.csproj14
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Service/PadClient.cs6
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Service/PadServer.cs6
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Core.dllbin0 -> 4096 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Core.pdbbin0 -> 10692 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Data.deps.json23
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/nogamepads_lib_c.dllbin0 -> 2114560 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs4
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.AssemblyInfo.cs22
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.AssemblyInfoInputs.cache1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.GeneratedMSBuildEditorConfig.editorconfig13
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.GlobalUsings.g.cs8
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.assets.cachebin0 -> 157 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.AssemblyInfo.cs22
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.AssemblyInfoInputs.cache1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.GeneratedMSBuildEditorConfig.editorconfig13
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.GlobalUsings.g.cs8
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.assets.cachebin0 -> 157 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.csproj.CoreCompileInputs.cache1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.csproj.FileListAbsolute.txt12
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.dllbin0 -> 4096 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.pdbbin0 -> 10692 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.sourcelink.json1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/ref/NoGamepadsSharp_Data.dllbin0 -> 5120 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/refint/NoGamepadsSharp_Data.dllbin0 -> 5120 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.dgspec.json68
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.g.props15
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.g.targets2
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.dgspec.json68
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.g.props15
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.g.targets2
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.assets.json73
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.nuget.cache8
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.packagespec.json1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/rider.project.model.nuget.info1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/rider.project.restore.info1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/NoGamepadsSharp_Execute.csproj10
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/Program.cs12
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.deps.json23
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.dllbin0 -> 5120 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.exebin0 -> 139264 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.pdbbin0 -> 10760 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.runtimeconfig.json12
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/nogamepads_lib_c.dllbin0 -> 2128896 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs4
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.AssemblyInfo.cs22
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.AssemblyInfoInputs.cache1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.GeneratedMSBuildEditorConfig.editorconfig13
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.GlobalUsings.g.cs8
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.assets.cachebin0 -> 157 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.csproj.CoreCompileInputs.cache1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.csproj.FileListAbsolute.txt15
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.dllbin0 -> 5120 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.genruntimeconfig.cache1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.pdbbin0 -> 10760 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.sourcelink.json1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/apphost.exebin0 -> 139264 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/ref/NoGamepadsSharp_Execute.dllbin0 -> 6144 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/refint/NoGamepadsSharp_Execute.dllbin0 -> 6144 bytes
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.dgspec.json68
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.g.props15
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.g.targets2
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.assets.json73
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.nuget.cache8
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.packagespec.json1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/rider.project.model.nuget.info1
-rw-r--r--bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/rider.project.restore.info1
-rw-r--r--bindings/csharp/NoGamepadsSharp/global.json7
92 files changed, 2080 insertions, 0 deletions
diff --git a/bindings/c/Cargo.toml b/bindings/c/Cargo.toml
new file mode 100644
index 0000000..4f9f7f5
--- /dev/null
+++ b/bindings/c/Cargo.toml
@@ -0,0 +1,15 @@
+[package]
+name = "nogamepads-c"
+
+workspace = "../../../NoGamepads"
+edition = "2024"
+
+[dependencies]
+nogamepads-core = { path = "../../core" }
+
+[build-dependencies]
+cbindgen = "0.29.0"
+
+[lib]
+name = "nogamepads_lib_c"
+crate-type = [ "cdylib", "staticlib"] \ No newline at end of file
diff --git a/bindings/c/build.rs b/bindings/c/build.rs
new file mode 100644
index 0000000..b5770a0
--- /dev/null
+++ b/bindings/c/build.rs
@@ -0,0 +1,47 @@
+use cbindgen::{generate_with_config, Config, ExportConfig, Language, ParseConfig, ParseExpandConfig};
+use std::env;
+
+fn main() {
+ let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
+
+ let config_c = Config {
+ language: Language::C,
+ header: Some("/* NoGamepads C Bindings. */".to_string()),
+
+ parse: ParseConfig {
+ include: Some(vec!["*".to_string()]),
+ expand: ParseExpandConfig {
+ all_features: true,
+ ..Default::default()
+ },
+ ..Default::default()
+ },
+
+ export: ExportConfig {
+ include: vec![
+ "ConnectionMessageC".to_string(),
+ "ConnectionCallbackMessageC".to_string(),
+ "ControlMessageC".to_string(),
+ "GameMessageC".to_string(),
+
+ "GameProfileC".to_string(),
+ "PlayerInfoC".to_string(),
+ ],
+ ..Default::default()
+ },
+ ..Config::default()
+ };
+
+ let mut config_cpp = config_c.clone();
+ config_cpp.language = Language::Cxx;
+ config_cpp.include_version = true;
+ config_cpp.header = Some("/* NoGamepads C++ Bindings. */".to_string());
+ config_cpp.namespace = Some("nogamepads".to_string());
+
+ generate_with_config(&crate_dir, config_c)
+ .expect("Could not generate nogamepads.h")
+ .write_to_file("../../.cargo/shared/target/export/deps/nogamepads.h");
+ generate_with_config(&crate_dir, config_cpp)
+ .expect("Could not generate nogamepads_cpp.h")
+ .write_to_file("../../.cargo/shared/target/export/deps/nogamepads_cpp.h");
+} \ No newline at end of file
diff --git a/bindings/c/src/data_c/common.rs b/bindings/c/src/data_c/common.rs
new file mode 100644
index 0000000..58c34c4
--- /dev/null
+++ b/bindings/c/src/data_c/common.rs
@@ -0,0 +1,6 @@
+#[repr(C)]
+#[allow(unused_imports)]
+#[derive(Copy, Clone)]
+pub struct KeyData {
+ pub(crate) key: u8
+} \ No newline at end of file
diff --git a/bindings/c/src/data_c/connection_callback_message_c.rs b/bindings/c/src/data_c/connection_callback_message_c.rs
new file mode 100644
index 0000000..9ded18b
--- /dev/null
+++ b/bindings/c/src/data_c/connection_callback_message_c.rs
@@ -0,0 +1,129 @@
+use crate::data_c::game_profile_c::GameProfileC;
+use nogamepads_lib_rs::pad_data::pad_messages::nogamepads_messages::{ConnectionCallbackMessage, ConnectionErrorType};
+use std::ffi::c_void;
+use std::mem::ManuallyDrop;
+use std::ptr::null_mut;
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub struct ConnectionCallbackMessageC {
+ pub tag: ConnCallbackMsgCTag,
+ pub data: ConnCallbackMsgCUnion,
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub enum ConnCallbackMsgCTag {
+ Profile, Deny, Fail, Ok, Welcome, Err
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub union ConnCallbackMsgCUnion {
+ nul: *mut c_void,
+ profile: ManuallyDrop<GameProfileC>,
+ conn_err: ConnErrTypeC
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+#[derive(Copy, Clone)]
+pub enum ConnErrTypeC {
+ ContainSamePlayer, PlayerBanned, Timeout, GameLocked, WhatTheHell
+}
+
+impl From<ConnErrTypeC> for ConnectionErrorType {
+ fn from(value: ConnErrTypeC) -> Self {
+ match value {
+ ConnErrTypeC::ContainSamePlayer => { ConnectionErrorType::ContainSamePlayer }
+ ConnErrTypeC::PlayerBanned => { ConnectionErrorType::PlayerBanned }
+ ConnErrTypeC::Timeout => { ConnectionErrorType::Timeout }
+ ConnErrTypeC::GameLocked => { ConnectionErrorType::GameLocked }
+ ConnErrTypeC::WhatTheHell => { ConnectionErrorType::WhatTheHell }
+ }
+ }
+}
+
+impl From<ConnectionErrorType> for ConnErrTypeC {
+ fn from(value: ConnectionErrorType) -> Self {
+ match value {
+ ConnectionErrorType::ContainSamePlayer => { ConnErrTypeC::ContainSamePlayer }
+ ConnectionErrorType::PlayerBanned => { ConnErrTypeC::PlayerBanned }
+ ConnectionErrorType::Timeout => { ConnErrTypeC::Timeout }
+ ConnectionErrorType::GameLocked => { ConnErrTypeC::GameLocked }
+ ConnectionErrorType::WhatTheHell => { ConnErrTypeC::WhatTheHell }
+ }
+ }
+}
+
+impl From<ConnectionCallbackMessageC> for ConnectionCallbackMessage {
+ fn from(mut value: ConnectionCallbackMessageC) -> Self {
+ match value.tag {
+ ConnCallbackMsgCTag::Profile => unsafe {
+ let profile = ManuallyDrop::take(&mut value.data.profile);
+ ConnectionCallbackMessage::Profile(profile.into())
+ }
+ ConnCallbackMsgCTag::Deny => unsafe {
+ ConnectionCallbackMessage::Deny(value.data.conn_err.into())
+ }
+ ConnCallbackMsgCTag::Fail => unsafe {
+ ConnectionCallbackMessage::Fail(value.data.conn_err.into())
+ }
+ ConnCallbackMsgCTag::Ok => {
+ ConnectionCallbackMessage::Ok
+
+ }
+ ConnCallbackMsgCTag::Welcome => {
+ ConnectionCallbackMessage::Welcome
+ }
+ ConnCallbackMsgCTag::Err => {
+ ConnectionCallbackMessage::Err
+ }
+ }
+ }
+}
+
+impl From<ConnectionCallbackMessage> for ConnectionCallbackMessageC {
+ fn from(value: ConnectionCallbackMessage) -> Self {
+ match value {
+ ConnectionCallbackMessage::Profile(profile) => {
+ ConnectionCallbackMessageC {
+ tag: ConnCallbackMsgCTag::Profile,
+ data: ConnCallbackMsgCUnion {
+ profile: ManuallyDrop::new(profile.into())
+ }
+ }
+ }
+ ConnectionCallbackMessage::Deny(conn_err) => {
+ ConnectionCallbackMessageC {
+ tag: ConnCallbackMsgCTag::Deny,
+ data: ConnCallbackMsgCUnion { conn_err: conn_err.into() }
+ }
+ }
+ ConnectionCallbackMessage::Fail(conn_err) => {
+ ConnectionCallbackMessageC {
+ tag: ConnCallbackMsgCTag::Fail,
+ data: ConnCallbackMsgCUnion { conn_err: conn_err.into() }
+ }
+ }
+ ConnectionCallbackMessage::Ok => {
+ ConnectionCallbackMessageC {
+ tag: ConnCallbackMsgCTag::Ok,
+ data: ConnCallbackMsgCUnion { nul: null_mut() }
+ }
+ }
+ ConnectionCallbackMessage::Welcome => {
+ ConnectionCallbackMessageC {
+ tag: ConnCallbackMsgCTag::Welcome,
+ data: ConnCallbackMsgCUnion { nul: null_mut() }
+ }
+ }
+ ConnectionCallbackMessage::Err => {
+ ConnectionCallbackMessageC {
+ tag: ConnCallbackMsgCTag::Err,
+ data: ConnCallbackMsgCUnion { nul: null_mut() }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/c/src/data_c/connection_message_c.rs b/bindings/c/src/data_c/connection_message_c.rs
new file mode 100644
index 0000000..b3b54d4
--- /dev/null
+++ b/bindings/c/src/data_c/connection_message_c.rs
@@ -0,0 +1,95 @@
+use crate::data_c::connection_message_c::ConnMsgCTag::{Connection, Ready, RequestLayoutConfigure, RequestProfile, RequestSkinPackage};
+use std::ffi::c_void;
+use std::mem::ManuallyDrop;
+use std::ptr::null_mut;
+use nogamepads_lib_rs::pad_data::pad_messages::nogamepads_messages::ConnectionMessage;
+use nogamepads_lib_rs::pad_data::pad_player_info::nogamepads_player_info::PlayerInfo;
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub struct ConnectionMessageC {
+ pub tag: ConnMsgCTag,
+ pub data: ConnMsgCUnion
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub enum ConnMsgCTag {
+ Connection, RequestProfile, RequestLayoutConfigure, RequestSkinPackage, Ready, Err
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub union ConnMsgCUnion {
+ nul: *mut c_void,
+ info: ManuallyDrop<PlayerInfo>
+}
+
+impl From<ConnectionMessageC> for ConnectionMessage {
+ fn from(mut value: ConnectionMessageC) -> Self {
+ match value.tag {
+ Connection => unsafe {
+ let info = ManuallyDrop::take(&mut value.data.info);
+ ConnectionMessage::Connection(info)
+ }
+ RequestProfile => {
+ ConnectionMessage::RequestProfile
+ }
+ RequestLayoutConfigure => {
+ ConnectionMessage::RequestLayoutConfigure
+ }
+ RequestSkinPackage => {
+ ConnectionMessage::RequestSkinPackage
+ }
+ Ready => {
+ ConnectionMessage::Ready
+ }
+ ConnMsgCTag::Err => {
+ ConnectionMessage::Err
+ }
+ }
+ }
+}
+
+impl From<ConnectionMessage> for ConnectionMessageC {
+ fn from(value: ConnectionMessage) -> Self {
+ match value {
+ ConnectionMessage::Connection(info) => {
+ ConnectionMessageC {
+ tag: Connection,
+ data: ConnMsgCUnion { info: ManuallyDrop::new(info) }
+ }
+ }
+ ConnectionMessage::RequestProfile => {
+ ConnectionMessageC {
+ tag: RequestProfile,
+ data: ConnMsgCUnion { nul: null_mut() }
+ }
+ }
+ ConnectionMessage::RequestLayoutConfigure => {
+ ConnectionMessageC {
+ tag: RequestLayoutConfigure,
+ data: ConnMsgCUnion { nul: null_mut() }
+ }
+ }
+ ConnectionMessage::RequestSkinPackage => {
+ ConnectionMessageC {
+ tag: RequestSkinPackage,
+ data: ConnMsgCUnion { nul: null_mut() }
+ }
+ }
+ ConnectionMessage::Ready => {
+ ConnectionMessageC {
+ tag: Ready,
+ data: ConnMsgCUnion { nul: null_mut() }
+ }
+ }
+ ConnectionMessage::Err => {
+ ConnectionMessageC {
+ tag: ConnMsgCTag::Err,
+ data: ConnMsgCUnion { nul: null_mut() }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/c/src/data_c/control_message_c.rs b/bindings/c/src/data_c/control_message_c.rs
new file mode 100644
index 0000000..6868459
--- /dev/null
+++ b/bindings/c/src/data_c/control_message_c.rs
@@ -0,0 +1,150 @@
+use crate::data_c::common::KeyData;
+use crate::{str_c_to_rs, str_rs_to_c};
+use nogamepads_lib_rs::pad_data::pad_messages::nogamepads_messages::ControlMessage;
+use std::ffi::{c_char, c_void};
+use std::ptr::null_mut;
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub struct ControlMessageC {
+ pub tag: CtrlMsgCTag,
+ pub data: CtrlMsgCUnion
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub enum CtrlMsgCTag {
+ Msg, Pressed, Released, Axis, Dir, Exit, Err
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub union CtrlMsgCUnion {
+ nul: *mut c_void,
+ key: KeyData,
+ axis: AxisData,
+ dir: DirData,
+ str: StrData
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+#[derive(Copy, Clone)]
+pub struct AxisData {
+ key: u8,
+ ax: f64
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+#[derive(Copy, Clone)]
+pub struct DirData {
+ key: u8,
+ x: f64,
+ y: f64
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+#[derive(Copy, Clone)]
+pub struct StrData {
+ str: *const c_char
+}
+
+impl From<ControlMessageC> for ControlMessage {
+ fn from(msg_c: ControlMessageC) -> Self {
+ match msg_c.tag {
+ CtrlMsgCTag::Msg => unsafe {
+ let str = str_c_to_rs(msg_c.data.str.str);
+ if str.is_some() {
+ ControlMessage::Msg(str.unwrap())
+ } else {
+ ControlMessage::Err
+ }
+ }
+ CtrlMsgCTag::Pressed => unsafe {
+ ControlMessage::Pressed(msg_c.data.key.key)
+ }
+ CtrlMsgCTag::Released => unsafe {
+ ControlMessage::Released(msg_c.data.key.key)
+ }
+ CtrlMsgCTag::Axis => unsafe {
+ let data = msg_c.data.axis;
+ ControlMessage::Axis(data.key, data.ax)
+ }
+ CtrlMsgCTag::Dir => unsafe {
+ let data = msg_c.data.dir;
+ ControlMessage::Dir(data.key, (data.x, data.y))
+ }
+ CtrlMsgCTag::Exit => {
+ ControlMessage::Exit
+ }
+ CtrlMsgCTag::Err => {
+ ControlMessage::Err
+ }
+ }
+ }
+}
+
+impl From<ControlMessage> for ControlMessageC {
+ fn from(msg_rs: ControlMessage) -> Self {
+ match msg_rs {
+ ControlMessage::Msg(str_msg) => {
+ ControlMessageC {
+ tag: CtrlMsgCTag::Msg,
+ data: CtrlMsgCUnion {
+ str: StrData { str: str_rs_to_c(str_msg).1 },
+ }
+ }
+ }
+ ControlMessage::Pressed(key) => {
+ ControlMessageC {
+ tag: CtrlMsgCTag::Pressed,
+ data: CtrlMsgCUnion {
+ key: KeyData { key },
+ }
+ }
+ }
+ ControlMessage::Released(key) => {
+ ControlMessageC {
+ tag: CtrlMsgCTag::Released,
+ data: CtrlMsgCUnion {
+ key: KeyData { key },
+ }
+ }
+ }
+ ControlMessage::Axis(key, ax) => {
+ ControlMessageC {
+ tag: CtrlMsgCTag::Axis,
+ data: CtrlMsgCUnion {
+ axis: AxisData { key, ax }
+ }
+ }
+ }
+ ControlMessage::Dir(key, (x, y)) => {
+ ControlMessageC {
+ tag: CtrlMsgCTag::Dir,
+ data: CtrlMsgCUnion {
+ dir: DirData { key, x, y }
+ }
+ }
+ }
+ ControlMessage::Exit => {
+ ControlMessageC {
+ tag: CtrlMsgCTag::Exit,
+ data: CtrlMsgCUnion {
+ nul: null_mut(),
+ }
+ }
+ }
+ ControlMessage::Err => {
+ ControlMessageC {
+ tag: CtrlMsgCTag::Err,
+ data: CtrlMsgCUnion {
+ nul: null_mut(),
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/c/src/data_c/game_message_c.rs b/bindings/c/src/data_c/game_message_c.rs
new file mode 100644
index 0000000..946ce60
--- /dev/null
+++ b/bindings/c/src/data_c/game_message_c.rs
@@ -0,0 +1,114 @@
+use std::ffi::c_void;
+use std::ptr::null_mut;
+use nogamepads_lib_rs::pad_data::pad_messages::nogamepads_messages::{GameMessage, LeaveReason};
+use crate::data_c::common::KeyData;
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub struct GameMessageC {
+ pub tag: GameMsgCTag,
+ pub data: GameMsgCUnion
+}
+
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub enum GameMsgCTag {
+ SkinEventTrigger, DisableKey, EnableKey, Leave, Err
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+pub union GameMsgCUnion {
+ nul: *mut c_void,
+ key: KeyData,
+ reason: LeaveReasonData
+}
+
+#[repr(C)]
+#[allow(unused_imports)]
+#[derive(Copy, Clone)]
+pub enum LeaveReasonData {
+ GameOver, ServerClosed, YouAreKicked, YouAreBanned
+}
+
+impl From<LeaveReasonData> for LeaveReason {
+ fn from(value: LeaveReasonData) -> Self {
+ match value {
+ LeaveReasonData::GameOver => { LeaveReason::GameOver }
+ LeaveReasonData::ServerClosed => { LeaveReason::ServerClosed }
+ LeaveReasonData::YouAreKicked => { LeaveReason::YouAreKicked }
+ LeaveReasonData::YouAreBanned => { LeaveReason::YouAreBanned }
+ }
+ }
+}
+
+impl From<LeaveReason> for LeaveReasonData {
+ fn from(value: LeaveReason) -> Self {
+ match value {
+ LeaveReason::GameOver => { LeaveReasonData::GameOver }
+ LeaveReason::ServerClosed => { LeaveReasonData::ServerClosed }
+ LeaveReason::YouAreKicked => { LeaveReasonData::YouAreKicked }
+ LeaveReason::YouAreBanned => { LeaveReasonData::YouAreBanned }
+ }
+ }
+}
+
+impl From<GameMessageC> for GameMessage {
+ fn from(msg: GameMessageC) -> Self {
+ match msg.tag {
+ GameMsgCTag::SkinEventTrigger => unsafe {
+ GameMessage::SkinEventTrigger(msg.data.key.key)
+ }
+ GameMsgCTag::DisableKey => unsafe {
+ GameMessage::DisableKey(msg.data.key.key)
+ }
+ GameMsgCTag::EnableKey => unsafe {
+ GameMessage::EnableKey(msg.data.key.key)
+ }
+ GameMsgCTag::Leave => unsafe {
+ GameMessage::Leave(msg.data.reason.into())
+ }
+ GameMsgCTag::Err => {
+ GameMessage::Err
+ }
+ }
+ }
+}
+
+impl From<GameMessage> for GameMessageC {
+ fn from(msg: GameMessage) -> Self {
+ match msg {
+ GameMessage::SkinEventTrigger(key) => {
+ GameMessageC {
+ tag: GameMsgCTag::SkinEventTrigger,
+ data: GameMsgCUnion { key: KeyData { key } }
+ }
+ }
+ GameMessage::DisableKey(key) => {
+ GameMessageC {
+ tag: GameMsgCTag::DisableKey,
+ data: GameMsgCUnion { key: KeyData { key } }
+ }
+ }
+ GameMessage::EnableKey(key) => {
+ GameMessageC {
+ tag: GameMsgCTag::EnableKey,
+ data: GameMsgCUnion { key: KeyData { key } }
+ }
+ }
+ GameMessage::Leave(reason) => {
+ GameMessageC {
+ tag: GameMsgCTag::Leave,
+ data: GameMsgCUnion { reason: reason.into() }
+ }
+ }
+ GameMessage::Err => {
+ GameMessageC {
+ tag: GameMsgCTag::Err,
+ data: GameMsgCUnion { nul: null_mut() }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/c/src/data_c/game_profile_c.rs b/bindings/c/src/data_c/game_profile_c.rs
new file mode 100644
index 0000000..1dd11f7
--- /dev/null
+++ b/bindings/c/src/data_c/game_profile_c.rs
@@ -0,0 +1,101 @@
+use crate::{str_c_to_rs, str_rs_to_c};
+use nogamepads_lib_rs::pad_data::game_profile::game_profile::GameProfile;
+use std::ffi::c_char;
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+#[allow(unused_imports)]
+pub struct GameProfileC {
+ pub game_name: *const c_char,
+ pub game_description: *const c_char,
+ pub organization: *const c_char,
+ pub version: *const c_char,
+ pub website: *const c_char,
+ pub email: *const c_char
+}
+
+impl From<GameProfileC> for GameProfile {
+ fn from(value: GameProfileC) -> Self {
+ let unknown = "".to_string();
+ GameProfile {
+ game_name: str_c_to_rs(value.game_name).unwrap_or(unknown.clone()),
+ game_description: str_c_to_rs(value.game_description).unwrap_or(unknown.clone()),
+ organization: str_c_to_rs(value.organization).unwrap_or(unknown.clone()),
+ version: str_c_to_rs(value.version).unwrap_or(unknown.clone()),
+ website: str_c_to_rs(value.website).unwrap_or(unknown.clone()),
+ email: str_c_to_rs(value.email).unwrap_or(unknown.clone())
+ }
+ }
+}
+
+impl From<GameProfile> for GameProfileC {
+ fn from(value: GameProfile) -> Self {
+ GameProfileC {
+ game_name: str_rs_to_c(value.game_name).1,
+ game_description: str_rs_to_c(value.game_description).1,
+ organization: str_rs_to_c(value.organization).1,
+ version: str_rs_to_c(value.version).1,
+ website: str_rs_to_c(value.website).1,
+ email: str_rs_to_c(value.email).1
+ }
+ }
+}
+
+impl From<&GameProfileC> for &GameProfile {
+ fn from(value: &GameProfileC) -> Self {
+ value.into()
+ }
+}
+
+impl From<&GameProfile> for &GameProfileC {
+ fn from(value: &GameProfile) -> Self {
+ value.into()
+ }
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn init_game_profile() -> GameProfileC {
+ GameProfile::default().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_game_profile_name(game_profile: GameProfileC, value: *const c_char) -> GameProfileC {
+ let value = str_c_to_rs(value).unwrap_or_default();
+ let mut raw = GameProfile::from(game_profile);
+ raw.game_name(value.as_str()).to_owned().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_game_profile_description(game_profile: GameProfileC, value: *const c_char) -> GameProfileC {
+ let value = str_c_to_rs(value).unwrap_or_default();
+ let mut raw = GameProfile::from(game_profile);
+ raw.game_description(value.as_str()).to_owned().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_game_profile_organization(game_profile: GameProfileC, value: *const c_char) -> GameProfileC {
+ let value = str_c_to_rs(value).unwrap_or_default();
+ let mut raw = GameProfile::from(game_profile);
+ raw.organization(value.as_str()).to_owned().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_game_profile_version(game_profile: GameProfileC, value: *const c_char) -> GameProfileC {
+ let value = str_c_to_rs(value).unwrap_or_default();
+ let mut raw = GameProfile::from(game_profile);
+ raw.version(value.as_str()).to_owned().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_game_profile_website(game_profile: GameProfileC, value: *const c_char) -> GameProfileC {
+ let value = str_c_to_rs(value).unwrap_or_default();
+ let mut raw = GameProfile::from(game_profile);
+ raw.website(value.as_str()).to_owned().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_game_profile_email(game_profile: GameProfileC, value: *const c_char) -> GameProfileC {
+ let value = str_c_to_rs(value).unwrap_or_default();
+ let mut raw = GameProfile::from(game_profile);
+ raw.email(value.as_str()).to_owned().into()
+} \ No newline at end of file
diff --git a/bindings/c/src/data_c/mod.rs b/bindings/c/src/data_c/mod.rs
new file mode 100644
index 0000000..afe8728
--- /dev/null
+++ b/bindings/c/src/data_c/mod.rs
@@ -0,0 +1,11 @@
+pub mod common;
+
+pub mod control_message_c;
+pub mod game_message_c;
+pub mod connection_message_c;
+pub mod connection_callback_message_c;
+
+
+pub mod game_profile_c;
+pub mod player_info_c;
+pub mod player_info_list_c; \ No newline at end of file
diff --git a/bindings/c/src/data_c/player_info_c.rs b/bindings/c/src/data_c/player_info_c.rs
new file mode 100644
index 0000000..b8a54e6
--- /dev/null
+++ b/bindings/c/src/data_c/player_info_c.rs
@@ -0,0 +1,95 @@
+use crate::{str_c_to_rs, str_rs_to_c};
+use nogamepads_lib_rs::pad_data::pad_player_info::nogamepads_player_info::{PlayerAccountInfo, PlayerCustomizeInfo, PlayerInfo};
+use std::ffi::c_char;
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+#[allow(unused_imports)]
+pub struct PlayerInfoC {
+ pub account_id: *const c_char,
+ pub account_hash: *const c_char,
+
+ pub customize_nickname: *const c_char,
+ pub customize_color_hue: i32,
+ pub customize_color_saturation: f64,
+ pub customize_color_value: f64,
+}
+
+impl From<PlayerInfoC> for PlayerInfo {
+ fn from(value: PlayerInfoC) -> Self {
+ let unknown = "unknown".to_string();
+ PlayerInfo {
+ account : PlayerAccountInfo {
+ id: str_c_to_rs(value.account_id).unwrap_or(unknown.clone()),
+ player_hash: str_c_to_rs(value.account_hash).unwrap_or(unknown.clone()),
+ },
+ customize: PlayerCustomizeInfo {
+ nickname: str_c_to_rs(value.customize_nickname).unwrap_or(unknown.clone()),
+ color_hue: value.customize_color_hue,
+ color_saturation: value.customize_color_saturation,
+ color_value: value.customize_color_value,
+ }
+ }
+ }
+}
+
+impl From<PlayerInfo> for PlayerInfoC {
+ fn from(value: PlayerInfo) -> Self {
+ PlayerInfoC {
+ account_id: str_rs_to_c(value.account.id).1,
+ account_hash: str_rs_to_c(value.account.player_hash).1,
+ customize_nickname: str_rs_to_c(value.customize.nickname).1,
+ customize_color_hue: value.customize.color_hue,
+ customize_color_saturation: value.customize.color_saturation,
+ customize_color_value: value.customize.color_value,
+ }
+ }
+}
+
+impl From<&PlayerInfoC> for &PlayerInfo {
+ fn from(value: &PlayerInfoC) -> Self {
+ value.into()
+ }
+}
+
+impl From<&PlayerInfo> for &PlayerInfoC {
+ fn from(value: &PlayerInfo) -> Self {
+ value.into()
+ }
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn init_player_info() -> PlayerInfoC {
+ PlayerInfo::new().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_player_info_account(
+ info: PlayerInfoC, id: *const c_char, password: *const c_char) -> PlayerInfoC {
+
+ let id = str_c_to_rs(id).unwrap_or("".to_string());
+ let password = str_c_to_rs(password).unwrap_or("".to_string());
+
+ let mut raw_info = PlayerInfo::from(info);
+ raw_info.setup_account_info(id.as_str(), password.as_str());
+ raw_info.into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_player_info_color(
+ info: PlayerInfoC, h: i32, s: f64, v: f64) -> PlayerInfoC {
+
+ let mut raw_info = PlayerInfo::from(info);
+ raw_info.set_customize_color_hsv(h, s, v);
+ raw_info.into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_player_info_nickname(
+ info: PlayerInfoC, nickname: *const c_char) -> PlayerInfoC {
+ let nickname = str_c_to_rs(nickname).unwrap_or("".to_string());
+
+ let mut raw_info = PlayerInfo::from(info);
+ raw_info.set_nickname(nickname.as_str());
+ raw_info.into()
+} \ No newline at end of file
diff --git a/bindings/c/src/data_c/player_info_list_c.rs b/bindings/c/src/data_c/player_info_list_c.rs
new file mode 100644
index 0000000..99d5c35
--- /dev/null
+++ b/bindings/c/src/data_c/player_info_list_c.rs
@@ -0,0 +1,8 @@
+use crate::data_c::player_info_c::PlayerInfoC;
+
+#[repr(C)]
+pub struct PlayerList {
+ pub(crate) players: *mut PlayerInfoC,
+ pub(crate) len: usize,
+ pub(crate) capacity: usize,
+} \ No newline at end of file
diff --git a/bindings/c/src/lib.rs b/bindings/c/src/lib.rs
new file mode 100644
index 0000000..6efd0e9
--- /dev/null
+++ b/bindings/c/src/lib.rs
@@ -0,0 +1,41 @@
+use std::ffi::{c_char, CStr, CString};
+
+pub mod data_c;
+pub mod service_c;
+
+pub fn str_rs_to_c(s: String) -> (CString, *const c_char) {
+ let c_string = CString::new(s).expect("");
+ let ptr = c_string.as_ptr();
+ (c_string, ptr)
+}
+
+pub fn str_c_to_rs(ptr: *const c_char) -> Option<String> {
+ if ptr.is_null() {
+ return None;
+ }
+ unsafe {
+ CStr::from_ptr(ptr)
+ .to_str()
+ .ok()
+ .map(|s| s.to_owned())
+ }
+}
+
+#[macro_export]
+macro_rules! box_into_raw {
+ ($expr:expr) => {
+ $crate::box_into_raw!(@inner $expr)
+ };
+
+ ($expr:expr => $t:ty) => {
+ $crate::box_into_raw!(@inner ($expr) as $t)
+ };
+
+ (@inner $expr:expr) => {
+ ::std::boxed::Box::into_raw(::std::boxed::Box::new($expr))
+ };
+
+ (@inner ($expr:expr) as $t:ty) => {
+ ::std::boxed::Box::into_raw(::std::boxed::Box::new($expr) as ::std::boxed::Box<$t>)
+ };
+} \ No newline at end of file
diff --git a/bindings/c/src/service_c/common.rs b/bindings/c/src/service_c/common.rs
new file mode 100644
index 0000000..8b13da0
--- /dev/null
+++ b/bindings/c/src/service_c/common.rs
@@ -0,0 +1,4 @@
+use nogamepads_lib_rs::DEFAULT_PORT;
+
+#[unsafe(no_mangle)]
+pub extern "C" fn get_default_port() -> u16 { DEFAULT_PORT } \ No newline at end of file
diff --git a/bindings/c/src/service_c/mod.rs b/bindings/c/src/service_c/mod.rs
new file mode 100644
index 0000000..674baf7
--- /dev/null
+++ b/bindings/c/src/service_c/mod.rs
@@ -0,0 +1,4 @@
+pub mod common;
+
+pub mod padclient;
+pub mod padserver; \ No newline at end of file
diff --git a/bindings/c/src/service_c/padclient.rs b/bindings/c/src/service_c/padclient.rs
new file mode 100644
index 0000000..b7bac43
--- /dev/null
+++ b/bindings/c/src/service_c/padclient.rs
@@ -0,0 +1,126 @@
+use crate::data_c::control_message_c::ControlMessageC;
+use crate::data_c::game_message_c::GameMessageC;
+use crate::data_c::player_info_c::PlayerInfoC;
+use crate::{box_into_raw, str_c_to_rs, str_rs_to_c};
+use nogamepads_lib_rs::pad_data::pad_messages::nogamepads_messages::GameMessage;
+use nogamepads_lib_rs::pad_service::client::nogamepads_client::PadClient;
+use nogamepads_lib_rs::DEFAULT_PORT;
+use std::ffi::c_char;
+use std::net::{IpAddr, Ipv4Addr};
+use std::str::FromStr;
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+#[allow(unused_imports)]
+pub struct PadClientC {
+ pub target_address: *const c_char,
+ pub target_port: u16,
+ pub bind_player: PlayerInfoC,
+ pub enable_console: bool,
+ pub quiet: bool
+}
+
+impl From<PadClientC> for PadClient {
+ fn from(value: PadClientC) -> Self {
+ let address = IpAddr::from_str(str_c_to_rs(value.target_address).unwrap_or("".to_string()).as_str()).unwrap_or(
+ IpAddr::from(Ipv4Addr::new(127, 0, 0, 1))
+ );
+ let port = value.target_port;
+ let mut client = PadClient::bind_addr_with_port(address, port);
+ client.bind_player(value.bind_player.into());
+ if value.enable_console { client.enable_console(); }
+ if value.quiet { client.quiet(); }
+ client
+ }
+}
+
+impl From<PadClient> for PadClientC {
+ fn from(mut value: PadClient) -> Self {
+ let (addr, port) = value.clone_addr();
+
+ PadClientC {
+ target_address: str_rs_to_c(addr.to_string()).1,
+ target_port: port,
+ bind_player: value.unbind_player().into(),
+ enable_console: value.is_enable_console(),
+ quiet: value.is_quiet(),
+ }
+ }
+}
+impl From<&mut PadClient> for PadClientC {
+ fn from(value: &mut PadClient) -> Self {
+ value.into()
+ }
+}
+
+// 构建
+
+#[unsafe(no_mangle)]
+pub extern "C" fn init_client(address: *const c_char) -> PadClientC {
+ let addr_str = str_c_to_rs(address).unwrap_or("127.0.0.1".to_string());
+ let addr_v4 = Ipv4Addr::from_str(addr_str.as_str()).unwrap_or(
+ Ipv4Addr::new(127, 0, 0, 1));
+ PadClient::bind_addr_with_port(IpAddr::from(addr_v4), DEFAULT_PORT).into()
+}
+
+#[unsafe(no_mangle)]
+pub unsafe extern "C" fn init_client_with_port(address: *const c_char, port: u16) -> PadClientC {
+ let addr_str = str_c_to_rs(address).unwrap_or("127.0.0.1".to_string());
+ let addr_v4 = Ipv4Addr::from_str(addr_str.as_str()).unwrap_or(
+ Ipv4Addr::new(127, 0, 0, 1));
+ PadClient::bind_addr_with_port(IpAddr::from(addr_v4), port).into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_client_quiet(client: PadClientC) -> PadClientC {
+ let mut raw: PadClient = client.into();
+ raw.quiet().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn enable_client_console(client: PadClientC) -> PadClientC {
+ let mut raw: PadClient = client.into();
+ raw.enable_console().into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn bind_player_to_client(client: PadClientC, info: PlayerInfoC) -> PadClientC {
+ let mut raw: PadClient = client.into();
+ raw.bind_player(info.into()).into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn complete(client: PadClientC) -> *mut PadClient {
+ let client: PadClient = client.into();
+ box_into_raw!(client)
+}
+
+// 状态控制
+
+#[unsafe(no_mangle)]
+pub extern "C" fn connect_client_to_server(client: &mut PadClient) {
+ let client = unsafe { Box::from_raw(client) };
+ client.connect();
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn exit_client_from_server(client: &PadClient) {
+ client.exit_server();
+}
+
+// 消息管理
+
+#[unsafe(no_mangle)]
+pub extern "C" fn put_a_msg_to_server(client: &PadClient, msg: ControlMessageC) {
+ client.put_msg(msg.into())
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn pop_a_msg_from_server(client: &PadClient) -> GameMessageC {
+ client.pop_a_msg().unwrap_or(GameMessage::Err).into()
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn pop_msg_from_server_or(client: &PadClient, or: GameMessageC) -> GameMessageC {
+ client.pop_msg_or(or.into()).into()
+} \ No newline at end of file
diff --git a/bindings/c/src/service_c/padserver.rs b/bindings/c/src/service_c/padserver.rs
new file mode 100644
index 0000000..98c5792
--- /dev/null
+++ b/bindings/c/src/service_c/padserver.rs
@@ -0,0 +1,174 @@
+use crate::data_c::game_message_c::GameMessageC;
+use crate::data_c::game_profile_c::GameProfileC;
+use crate::data_c::player_info_c::PlayerInfoC;
+use crate::data_c::player_info_list_c::PlayerList;
+use crate::{box_into_raw, str_c_to_rs};
+use nogamepads_lib_rs::pad_data::pad_player_info::nogamepads_player_info::PlayerInfo;
+use nogamepads_lib_rs::pad_service::server::nogamepads_server::PadServer;
+use nogamepads_lib_rs::DEFAULT_PORT;
+use std::collections::HashMap;
+use std::ffi::c_char;
+use std::net::{IpAddr, Ipv4Addr};
+use std::str::FromStr;
+use std::sync::{Arc, MutexGuard, PoisonError};
+
+// 构建
+
+#[unsafe(no_mangle)]
+pub extern "C" fn init_server(address: *const c_char) -> *mut PadServer {
+ let addr_str = str_c_to_rs(address).unwrap_or("127.0.0.1".to_string());
+ let addr_v4 = Ipv4Addr::from_str(addr_str.as_str()).unwrap_or(
+ Ipv4Addr::new(127, 0, 0, 1));
+ let mut server = PadServer::default();
+ server.addr(IpAddr::from(addr_v4), DEFAULT_PORT);
+ box_into_raw!(server)
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn init_server_with_port(address: *const c_char, port: u16) -> *mut PadServer {
+ let addr_str = str_c_to_rs(address).unwrap_or("127.0.0.1".to_string());
+ let addr_v4 = Ipv4Addr::from_str(addr_str.as_str()).unwrap_or(
+ Ipv4Addr::new(127, 0, 0, 1));
+ let mut server = PadServer::default();
+ server.addr(IpAddr::from(addr_v4), port);
+ box_into_raw!(server)
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn set_server_quiet(server: &mut PadServer) {
+ server.quiet();
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn enable_server_console(server: &mut PadServer) {
+ server.enable_console();
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn bind_profile_to_server(server: &mut PadServer, profile: &GameProfileC) {
+ server.put_profile(profile.clone().into());
+}
+
+// 状态控制
+
+#[unsafe(no_mangle)]
+pub extern "C" fn start_server(server: *mut PadServer) {
+ let server = unsafe { Box::from_raw(server) };
+ let arc = Arc::new(server.as_ref().clone());
+ PadServer::start_server(arc);
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn stop_server(server: *mut PadServer) {
+ let server = unsafe { Box::from_raw(server) };
+ server.stop_server();
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn lock_game_on_server(server: *mut PadServer) {
+ let server = unsafe { Box::from_raw(server) };
+ server.lock_game();
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn unlock_game_on_server(server: *mut PadServer) {
+ let server = unsafe { Box::from_raw(server) };
+ server.unlock_game();
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn is_server_game_locked(server: *mut PadServer) -> bool {
+ let server = unsafe { Box::from_raw(server) };
+ server.is_game_locked()
+}
+
+// 消息管理
+#[unsafe(no_mangle)]
+pub extern "C" fn put_a_msg_to_player(server: *mut PadServer, msg: GameMessageC, player: &PlayerInfoC) {
+ let server = unsafe { Box::from_raw(server) };
+ server.put_msg_to(msg.into(), player.into());
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn put_msg_to_all_players(server: *mut PadServer, msg: GameMessageC) {
+ let server = unsafe { Box::from_raw(server) };
+ server.put_msg_to_all(&msg.into());
+}
+
+// #[unsafe(no_mangle)]
+// pub extern "C" fn pop_a_msg(server: *mut PadServer) -> ControlMessageC {
+// let server = unsafe { Box::from_raw(server) };
+// let msg = server.pop_a_msg();
+// if msg.is_some() {
+// let (player, msg) = msg.unwrap();
+// }
+// }
+
+// 玩家管理
+#[unsafe(no_mangle)]
+pub extern "C" fn is_player_online(server: *mut PadServer, player: &PlayerInfoC) -> bool {
+ let server = unsafe { Box::from_raw(server) };
+ server.is_player_online(player.into())
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn is_player_banned(server: *mut PadServer, player: &PlayerInfoC) -> bool {
+ let server = unsafe { Box::from_raw(server) };
+ server.is_player_banned(player.into())
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn kick_player(server: *mut PadServer, player: &PlayerInfoC) {
+ let server = unsafe { Box::from_raw(server) };
+ server.kick_player(player.into());
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn ban_player(server: *mut PadServer, player: &PlayerInfoC) {
+ let server = unsafe { Box::from_raw(server) };
+ server.ban_player(player.into());
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn pardon_player(server: *mut PadServer, player: &PlayerInfoC) {
+ let server = unsafe { Box::from_raw(server) };
+ server.pardon_player(player.into());
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn list_online_players(server: *mut PadServer) -> PlayerList {
+ let server = unsafe { Box::from_raw(server) };
+ let list = server.list_players();
+ process_list_result(list)
+}
+
+#[unsafe(no_mangle)]
+pub extern "C" fn list_banned_players(server: *mut PadServer) -> PlayerList {
+ let server = unsafe { Box::from_raw(server) };
+ let list = server.list_players_banned();
+ process_list_result(list)
+}
+
+fn process_list_result(list: Result<Vec<PlayerInfo>, PoisonError<MutexGuard<HashMap<String, PlayerInfo>>>>) -> PlayerList {
+ let result : Vec<PlayerInfo>;
+ if list.is_ok() {
+ result = list.unwrap();
+ } else {
+ result = vec![];
+ }
+ let mut result_c: Vec<PlayerInfoC> = Vec::new();
+ for item in result {
+ result_c.push(item.into());
+ }
+
+ let mut vec = result_c.into_boxed_slice();
+ let ptr = vec.as_mut_ptr();
+ let len = vec.len();
+ let capacity = vec.len();
+
+ PlayerList {
+ players: ptr,
+ len,
+ capacity
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/.gitignore b/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/.gitignore
new file mode 100644
index 0000000..7d29992
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/modules.xml
+/contentModel.xml
+/projectSettingsUpdater.xml
+/.idea.NoGamepadsSharp.iml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/indexLayout.xml b/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="UserContentModel">
+ <attachedFolders />
+ <explicitIncludes />
+ <explicitExcludes />
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/vcs.xml b/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/.idea/.idea.NoGamepadsSharp/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
+ </component>
+</project> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/.run/Run Example.run.xml b/bindings/csharp/NoGamepadsSharp/.run/Run Example.run.xml
new file mode 100644
index 0000000..52006c3
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/.run/Run Example.run.xml
@@ -0,0 +1,20 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="Run Example" type="DotNetProject" factoryName=".NET Project">
+ <option name="EXE_PATH" value="$PROJECT_DIR$/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.exe" />
+ <option name="PROGRAM_PARAMETERS" value="" />
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/NoGamepadsSharp_Execute/bin/Debug/net8.0" />
+ <option name="PASS_PARENT_ENVS" value="1" />
+ <option name="USE_EXTERNAL_CONSOLE" value="0" />
+ <option name="USE_MONO" value="0" />
+ <option name="RUNTIME_ARGUMENTS" value="" />
+ <option name="PROJECT_PATH" value="$PROJECT_DIR$/NoGamepadsSharp_Execute/NoGamepadsSharp_Execute.csproj" />
+ <option name="PROJECT_EXE_PATH_TRACKING" value="1" />
+ <option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
+ <option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
+ <option name="PROJECT_KIND" value="DotNetCore" />
+ <option name="PROJECT_TFM" value="net8.0" />
+ <method v="2">
+ <option name="Build" />
+ </method>
+ </configuration>
+</component> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp.sln b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp.sln
new file mode 100644
index 0000000..d9ec2f5
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NoGamepadsSharp_Core", "NoGamepadsSharp_Core\NoGamepadsSharp_Core.csproj", "{18F3ABA3-0B44-4BE2-8F81-624DD57AE5B8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NoGamepadsSharp_Execute", "NoGamepadsSharp_Execute\NoGamepadsSharp_Execute.csproj", "{88ECEC25-6071-4F1B-8C5F-C8A3C66D43A4}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {18F3ABA3-0B44-4BE2-8F81-624DD57AE5B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {18F3ABA3-0B44-4BE2-8F81-624DD57AE5B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {18F3ABA3-0B44-4BE2-8F81-624DD57AE5B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {18F3ABA3-0B44-4BE2-8F81-624DD57AE5B8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {88ECEC25-6071-4F1B-8C5F-C8A3C66D43A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {88ECEC25-6071-4F1B-8C5F-C8A3C66D43A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {88ECEC25-6071-4F1B-8C5F-C8A3C66D43A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {88ECEC25-6071-4F1B-8C5F-C8A3C66D43A4}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/GameProfile.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/GameProfile.cs
new file mode 100644
index 0000000..c92a934
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/GameProfile.cs
@@ -0,0 +1,6 @@
+namespace NoGamepadsSharp_Data.Data;
+
+public class GameProfile
+{
+
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/HsvColor.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/HsvColor.cs
new file mode 100644
index 0000000..a534be6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/HsvColor.cs
@@ -0,0 +1,158 @@
+namespace NoGamepadsSharp_Data.Data;
+
+public struct HsvColor
+{
+ private int _h;
+ private float _s;
+ private float _v;
+
+ public HsvColor(int h, float s, float v)
+ {
+ _h = h;
+ _s = s;
+ _v = v;
+ }
+
+ public HsvColor(float r, float g, float b)
+ {
+ Converter.ToHsv(r, g, b, out int h, out float s, out float v);
+ _h = h;
+ _s = s;
+ _v = v;
+ }
+
+ public int hue
+ {
+ get => _h;
+ set => _h = int.Clamp(value, 0, 360);
+ }
+
+ public float saturation
+ {
+ get => _s;
+ set => _s = float.Clamp(value, 0, 1);
+ }
+
+ public float value
+ {
+ get => _v;
+ set => _v = float.Clamp(value, 0, 1);
+ }
+
+ public float red
+ {
+ get
+ {
+ Converter.ToRgb(_h, _s, _v, out float f, out _, out _);
+ return f;
+ }
+ set
+ {
+ Converter.ToRgb(_h, _s, _v, out float r, out float g, out float b);
+ r = float.Clamp(value, 0, 1);
+ Converter.ToHsv(r, g, b, out int h, out float s, out float v);
+ _h = h;
+ _s = s;
+ _v = v;
+ }
+ }
+
+ public float green
+ {
+ get
+ {
+ Converter.ToRgb(_h, _s, _v, out _, out float f, out _);
+ return f;
+ }
+ set
+ {
+ Converter.ToRgb(_h, _s, _v, out float r, out float g, out float b);
+ g = float.Clamp(value, 0, 1);
+ Converter.ToHsv(r, g, b, out int h, out float s, out float v);
+ _h = h;
+ _s = s;
+ _v = v;
+ }
+ }
+
+ public float blue
+ {
+ get
+ {
+ Converter.ToRgb(_h, _s, _v, out _, out _, out float f);
+ return f;
+ }
+ set
+ {
+ Converter.ToRgb(_h, _s, _v, out float r, out float g, out float b);
+ b = float.Clamp(value, 0, 1);
+ Converter.ToHsv(r, g, b, out int h, out float s, out float v);
+ _h = h;
+ _s = s;
+ _v = v;
+ }
+ }
+
+ public class Converter
+ {
+ public static void ToRgb(int h, float s, float v, out float r, out float g, out float b)
+ {
+ h = (h % 360 + 360) % 360;
+
+ if (s <= 0.0f)
+ {
+ r = g = b = v;
+ return;
+ }
+
+ float hh = h / 60.0f;
+ int i = (int)hh;
+ float ff = hh - i;
+ float p = v * (1.0f - s);
+ float q = v * (1.0f - s * ff);
+ float t = v * (1.0f - s * (1.0f - ff));
+
+ switch (i)
+ {
+ case 0: r = v; g = t; b = p; break;
+ case 1: r = q; g = v; b = p; break;
+ case 2: r = p; g = v; b = t; break;
+ case 3: r = p; g = q; b = v; break;
+ case 4: r = t; g = p; b = v; break;
+ default: r = v; g = p; b = q; break;
+ }
+ }
+
+ public static void ToHsv(float r, float g, float b, out int h, out float s, out float v)
+ {
+ float min = Math.Min(Math.Min(r, g), b);
+ float max = Math.Max(Math.Max(r, g), b);
+ float delta = max - min;
+
+ v = max;
+
+ if (delta <= 1e-6f)
+ {
+ h = 0;
+ s = 0.0f;
+ return;
+ }
+
+ s = delta / max;
+ float hh;
+
+ if (Math.Abs(r - max) < 0.001f)
+ hh = (g - b) / delta;
+ else if (Math.Abs(g - max) < 0.001f)
+ hh = (b - r) / delta + 2.0f;
+ else
+ hh = (r - g) / delta + 4.0f;
+
+ hh *= 60.0f;
+ if (hh < 0.0f) hh += 360.0f;
+
+ h = (int)Math.Round(hh);
+ h = (h % 360 + 360) % 360;
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/PlayerInfo.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/PlayerInfo.cs
new file mode 100644
index 0000000..44ab51b
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Data/PlayerInfo.cs
@@ -0,0 +1,19 @@
+namespace NoGamepadsSharp_Data.Data;
+
+public struct PlayerInfo
+{
+ public PlayerAccount Account;
+ public PlayerCustomize Customize;
+
+ public struct PlayerCustomize
+ {
+ public String Nickname;
+ public HsvColor Color;
+ }
+
+ public struct PlayerAccount
+ {
+ public String Id;
+ public String Hash;
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/NoGamepadsSharp_Core.csproj b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/NoGamepadsSharp_Core.csproj
new file mode 100644
index 0000000..d289ab2
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/NoGamepadsSharp_Core.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net8.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ <RootNamespace>NoGamepadsSharp_Data</RootNamespace>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Folder Include="Data\Messages\" />
+ </ItemGroup>
+
+</Project>
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Service/PadClient.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Service/PadClient.cs
new file mode 100644
index 0000000..3cbc403
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Service/PadClient.cs
@@ -0,0 +1,6 @@
+namespace NoGamepadsSharp_Data.Service;
+
+public class PadClient
+{
+
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Service/PadServer.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Service/PadServer.cs
new file mode 100644
index 0000000..215437e
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/Service/PadServer.cs
@@ -0,0 +1,6 @@
+namespace NoGamepadsSharp_Data.Service;
+
+public class PadServer
+{
+
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Core.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Core.dll
new file mode 100644
index 0000000..6c507ae
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Core.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Core.pdb b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Core.pdb
new file mode 100644
index 0000000..2249b25
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Core.pdb
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Data.deps.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Data.deps.json
new file mode 100644
index 0000000..8bbf5eb
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/NoGamepadsSharp_Data.deps.json
@@ -0,0 +1,23 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "NoGamepadsSharp_Data/1.0.0": {
+ "runtime": {
+ "NoGamepadsSharp_Data.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "NoGamepadsSharp_Data/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/nogamepads_lib_c.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/nogamepads_lib_c.dll
new file mode 100644
index 0000000..f9fa81d
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/bin/Debug/net8.0/nogamepads_lib_c.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..2217181
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.AssemblyInfo.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.AssemblyInfo.cs
new file mode 100644
index 0000000..9a403d4
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.AssemblyInfo.cs
@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("NoGamepadsSharp_Core")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7bf8e1f24f95d87e1a30765b1904473cf75b435b")]
+[assembly: System.Reflection.AssemblyProductAttribute("NoGamepadsSharp_Core")]
+[assembly: System.Reflection.AssemblyTitleAttribute("NoGamepadsSharp_Core")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.AssemblyInfoInputs.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..b65f543
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+a6b869bd9da6a1765cbae4ac831af005406c2755ca688e375f929ab2317f8c28
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.GeneratedMSBuildEditorConfig.editorconfig b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..5ca075c
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,13 @@
+is_global = true
+build_property.TargetFramework = net8.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = NoGamepadsSharp_Data
+build_property.ProjectDir = D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Core\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.GlobalUsings.g.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.GlobalUsings.g.cs
new file mode 100644
index 0000000..8578f3d
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+// <auto-generated/>
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.assets.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.assets.cache
new file mode 100644
index 0000000..f039f0a
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Core.assets.cache
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.AssemblyInfo.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.AssemblyInfo.cs
new file mode 100644
index 0000000..116d7ca
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.AssemblyInfo.cs
@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("NoGamepadsSharp_Data")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5a244311d5c9c42b33a49f3cafa7f20017d10305")]
+[assembly: System.Reflection.AssemblyProductAttribute("NoGamepadsSharp_Data")]
+[assembly: System.Reflection.AssemblyTitleAttribute("NoGamepadsSharp_Data")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.AssemblyInfoInputs.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..883b42c
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+51f4886343a683d8f2a181ebd299d171750154161d19d908016790b79db7e699
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.GeneratedMSBuildEditorConfig.editorconfig b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..123eb1c
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,13 @@
+is_global = true
+build_property.TargetFramework = net8.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = NoGamepadsSharp_Data
+build_property.ProjectDir = D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.GlobalUsings.g.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.GlobalUsings.g.cs
new file mode 100644
index 0000000..8578f3d
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+// <auto-generated/>
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.assets.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.assets.cache
new file mode 100644
index 0000000..3f0d1f1
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.assets.cache
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.csproj.CoreCompileInputs.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..fdbba54
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+0803e9ca17c5d9a2228864ae9f1e28ef4bb203288db0ab9ca52fc11229959850
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.csproj.FileListAbsolute.txt b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..66fd1fc
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.csproj.FileListAbsolute.txt
@@ -0,0 +1,12 @@
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\bin\Debug\net8.0\NoGamepadsSharp_Data.deps.json
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\bin\Debug\net8.0\NoGamepadsSharp_Data.dll
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\bin\Debug\net8.0\NoGamepadsSharp_Data.pdb
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\NoGamepadsSharp_Data.GeneratedMSBuildEditorConfig.editorconfig
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\NoGamepadsSharp_Data.AssemblyInfoInputs.cache
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\NoGamepadsSharp_Data.AssemblyInfo.cs
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\NoGamepadsSharp_Data.csproj.CoreCompileInputs.cache
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\NoGamepadsSharp_Data.sourcelink.json
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\NoGamepadsSharp_Data.dll
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\refint\NoGamepadsSharp_Data.dll
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\NoGamepadsSharp_Data.pdb
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Data\obj\Debug\net8.0\ref\NoGamepadsSharp_Data.dll
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.dll
new file mode 100644
index 0000000..6c507ae
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.pdb b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.pdb
new file mode 100644
index 0000000..2249b25
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.pdb
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.sourcelink.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.sourcelink.json
new file mode 100644
index 0000000..55ad6d0
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/NoGamepadsSharp_Data.sourcelink.json
@@ -0,0 +1 @@
+{"documents":{"D:\\TINP\\NoGamepads\\*":"https://raw.githubusercontent.com/CatilGrass/NoGamepads/5a244311d5c9c42b33a49f3cafa7f20017d10305/*"}} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/ref/NoGamepadsSharp_Data.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/ref/NoGamepadsSharp_Data.dll
new file mode 100644
index 0000000..f284434
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/ref/NoGamepadsSharp_Data.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/refint/NoGamepadsSharp_Data.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/refint/NoGamepadsSharp_Data.dll
new file mode 100644
index 0000000..f284434
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/Debug/net8.0/refint/NoGamepadsSharp_Data.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.dgspec.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.dgspec.json
new file mode 100644
index 0000000..2ec1ff3
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.dgspec.json
@@ -0,0 +1,68 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj": {}
+ },
+ "projects": {
+ "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj",
+ "projectName": "NoGamepadsSharp_Core",
+ "projectPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj",
+ "packagesPath": "C:\\Users\\CatilGrass\\.nuget\\packages\\",
+ "outputPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\obj\\",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "C:\\Users\\CatilGrass\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ }
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.406/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.g.props b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.g.props
new file mode 100644
index 0000000..23d8bdd
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.g.props
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+ <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+ <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
+ <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
+ <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\CatilGrass\.nuget\packages\</NuGetPackageFolders>
+ <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+ <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.12.2</NuGetToolVersion>
+ </PropertyGroup>
+ <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <SourceRoot Include="C:\Users\CatilGrass\.nuget\packages\" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.g.targets b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.g.targets
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Core.csproj.nuget.g.targets
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" /> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.dgspec.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.dgspec.json
new file mode 100644
index 0000000..1b99a0b
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.dgspec.json
@@ -0,0 +1,68 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Data\\NoGamepadsSharp_Data.csproj": {}
+ },
+ "projects": {
+ "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Data\\NoGamepadsSharp_Data.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Data\\NoGamepadsSharp_Data.csproj",
+ "projectName": "NoGamepadsSharp_Data",
+ "projectPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Data\\NoGamepadsSharp_Data.csproj",
+ "packagesPath": "C:\\Users\\CatilGrass\\.nuget\\packages\\",
+ "outputPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Data\\obj\\",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "C:\\Users\\CatilGrass\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ }
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.406/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.g.props b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.g.props
new file mode 100644
index 0000000..23d8bdd
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.g.props
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+ <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+ <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
+ <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
+ <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\CatilGrass\.nuget\packages\</NuGetPackageFolders>
+ <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+ <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.12.2</NuGetToolVersion>
+ </PropertyGroup>
+ <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <SourceRoot Include="C:\Users\CatilGrass\.nuget\packages\" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.g.targets b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.g.targets
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/NoGamepadsSharp_Data.csproj.nuget.g.targets
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" /> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.assets.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.assets.json
new file mode 100644
index 0000000..b1dd5ac
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.assets.json
@@ -0,0 +1,73 @@
+{
+ "version": 3,
+ "targets": {
+ "net8.0": {}
+ },
+ "libraries": {},
+ "projectFileDependencyGroups": {
+ "net8.0": []
+ },
+ "packageFolders": {
+ "C:\\Users\\CatilGrass\\.nuget\\packages\\": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj",
+ "projectName": "NoGamepadsSharp_Core",
+ "projectPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj",
+ "packagesPath": "C:\\Users\\CatilGrass\\.nuget\\packages\\",
+ "outputPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\obj\\",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "C:\\Users\\CatilGrass\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ }
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.406/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.nuget.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.nuget.cache
new file mode 100644
index 0000000..30a67f3
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.nuget.cache
@@ -0,0 +1,8 @@
+{
+ "version": 2,
+ "dgSpecHash": "Q6iJ8uE2jE4=",
+ "success": true,
+ "projectFilePath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj",
+ "expectedPackageFiles": [],
+ "logs": []
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.packagespec.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.packagespec.json
new file mode 100644
index 0000000..6409f09
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/project.packagespec.json
@@ -0,0 +1 @@
+"restore":{"projectUniqueName":"D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj","projectName":"NoGamepadsSharp_Core","projectPath":"D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\NoGamepadsSharp_Core.csproj","outputPath":"D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Core\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.406/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/rider.project.model.nuget.info b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/rider.project.model.nuget.info
new file mode 100644
index 0000000..8e81be6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/rider.project.model.nuget.info
@@ -0,0 +1 @@
+17483963567493999 \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/rider.project.restore.info b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/rider.project.restore.info
new file mode 100644
index 0000000..8e81be6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Core/obj/rider.project.restore.info
@@ -0,0 +1 @@
+17483963567493999 \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/NoGamepadsSharp_Execute.csproj b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/NoGamepadsSharp_Execute.csproj
new file mode 100644
index 0000000..2f4fc77
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/NoGamepadsSharp_Execute.csproj
@@ -0,0 +1,10 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <OutputType>Exe</OutputType>
+ <TargetFramework>net8.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+</Project>
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/Program.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/Program.cs
new file mode 100644
index 0000000..4f9a31c
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/Program.cs
@@ -0,0 +1,12 @@
+using System.Runtime.InteropServices;
+
+namespace NoGamepadsSharp_Execute
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.deps.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.deps.json
new file mode 100644
index 0000000..7ec60d1
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.deps.json
@@ -0,0 +1,23 @@
+{
+ "runtimeTarget": {
+ "name": ".NETCoreApp,Version=v8.0",
+ "signature": ""
+ },
+ "compilationOptions": {},
+ "targets": {
+ ".NETCoreApp,Version=v8.0": {
+ "NoGamepadsSharp_Execute/1.0.0": {
+ "runtime": {
+ "NoGamepadsSharp_Execute.dll": {}
+ }
+ }
+ }
+ },
+ "libraries": {
+ "NoGamepadsSharp_Execute/1.0.0": {
+ "type": "project",
+ "serviceable": false,
+ "sha512": ""
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.dll
new file mode 100644
index 0000000..7304713
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.exe b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.exe
new file mode 100644
index 0000000..1aed8a6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.exe
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.pdb b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.pdb
new file mode 100644
index 0000000..f0bffa1
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.pdb
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.runtimeconfig.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.runtimeconfig.json
new file mode 100644
index 0000000..becfaea
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/NoGamepadsSharp_Execute.runtimeconfig.json
@@ -0,0 +1,12 @@
+{
+ "runtimeOptions": {
+ "tfm": "net8.0",
+ "framework": {
+ "name": "Microsoft.NETCore.App",
+ "version": "8.0.0"
+ },
+ "configProperties": {
+ "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/nogamepads_lib_c.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/nogamepads_lib_c.dll
new file mode 100644
index 0000000..1dcd807
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/bin/Debug/net8.0/nogamepads_lib_c.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..2217181
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.AssemblyInfo.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.AssemblyInfo.cs
new file mode 100644
index 0000000..1cd6707
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.AssemblyInfo.cs
@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("NoGamepadsSharp_Execute")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7bf8e1f24f95d87e1a30765b1904473cf75b435b")]
+[assembly: System.Reflection.AssemblyProductAttribute("NoGamepadsSharp_Execute")]
+[assembly: System.Reflection.AssemblyTitleAttribute("NoGamepadsSharp_Execute")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.AssemblyInfoInputs.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..9d55bff
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+04ec6d515d7009e3fadb88848dbf20ac4996198345493ab6f51b427aa75bafe7
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.GeneratedMSBuildEditorConfig.editorconfig b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..a70a292
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,13 @@
+is_global = true
+build_property.TargetFramework = net8.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = NoGamepadsSharp_Execute
+build_property.ProjectDir = D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.GlobalUsings.g.cs b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.GlobalUsings.g.cs
new file mode 100644
index 0000000..8578f3d
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+// <auto-generated/>
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.assets.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.assets.cache
new file mode 100644
index 0000000..6e38352
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.assets.cache
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.csproj.CoreCompileInputs.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..b8d2bb6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+08b6a6e0c0f5c70b73eb166c3425ecd1b8254db5cb3da53ddf331a4e9ececa64
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.csproj.FileListAbsolute.txt b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..60ba01a
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.csproj.FileListAbsolute.txt
@@ -0,0 +1,15 @@
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\bin\Debug\net8.0\NoGamepadsSharp_Execute.exe
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\bin\Debug\net8.0\NoGamepadsSharp_Execute.deps.json
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\bin\Debug\net8.0\NoGamepadsSharp_Execute.runtimeconfig.json
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\bin\Debug\net8.0\NoGamepadsSharp_Execute.dll
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\bin\Debug\net8.0\NoGamepadsSharp_Execute.pdb
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\NoGamepadsSharp_Execute.GeneratedMSBuildEditorConfig.editorconfig
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\NoGamepadsSharp_Execute.AssemblyInfoInputs.cache
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\NoGamepadsSharp_Execute.AssemblyInfo.cs
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\NoGamepadsSharp_Execute.csproj.CoreCompileInputs.cache
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\NoGamepadsSharp_Execute.sourcelink.json
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\NoGamepadsSharp_Execute.dll
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\refint\NoGamepadsSharp_Execute.dll
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\NoGamepadsSharp_Execute.pdb
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\NoGamepadsSharp_Execute.genruntimeconfig.cache
+D:\TINP\NoGamepads\core_csharp\NoGamepadsSharp\NoGamepadsSharp_Execute\obj\Debug\net8.0\ref\NoGamepadsSharp_Execute.dll
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.dll
new file mode 100644
index 0000000..7304713
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.genruntimeconfig.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.genruntimeconfig.cache
new file mode 100644
index 0000000..d1d6363
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.genruntimeconfig.cache
@@ -0,0 +1 @@
+747af723e27e441c874613b2ee11f095ebffaa1343df438ff5c28c1abeefb1b1
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.pdb b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.pdb
new file mode 100644
index 0000000..f0bffa1
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.pdb
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.sourcelink.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.sourcelink.json
new file mode 100644
index 0000000..9ab27c4
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/NoGamepadsSharp_Execute.sourcelink.json
@@ -0,0 +1 @@
+{"documents":{"D:\\TINP\\NoGamepads\\*":"https://raw.githubusercontent.com/CatilGrass/NoGamepads/7bf8e1f24f95d87e1a30765b1904473cf75b435b/*"}} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/apphost.exe b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/apphost.exe
new file mode 100644
index 0000000..1aed8a6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/apphost.exe
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/ref/NoGamepadsSharp_Execute.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/ref/NoGamepadsSharp_Execute.dll
new file mode 100644
index 0000000..1a99951
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/ref/NoGamepadsSharp_Execute.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/refint/NoGamepadsSharp_Execute.dll b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/refint/NoGamepadsSharp_Execute.dll
new file mode 100644
index 0000000..1a99951
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/Debug/net8.0/refint/NoGamepadsSharp_Execute.dll
Binary files differ
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.dgspec.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.dgspec.json
new file mode 100644
index 0000000..fd5cb69
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.dgspec.json
@@ -0,0 +1,68 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj": {}
+ },
+ "projects": {
+ "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj",
+ "projectName": "NoGamepadsSharp_Execute",
+ "projectPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj",
+ "packagesPath": "C:\\Users\\CatilGrass\\.nuget\\packages\\",
+ "outputPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\obj\\",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "C:\\Users\\CatilGrass\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ }
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.406/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.g.props b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.g.props
new file mode 100644
index 0000000..23d8bdd
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.g.props
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+ <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+ <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
+ <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
+ <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\CatilGrass\.nuget\packages\</NuGetPackageFolders>
+ <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+ <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.12.2</NuGetToolVersion>
+ </PropertyGroup>
+ <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+ <SourceRoot Include="C:\Users\CatilGrass\.nuget\packages\" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.g.targets b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.g.targets
new file mode 100644
index 0000000..3dc06ef
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/NoGamepadsSharp_Execute.csproj.nuget.g.targets
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" /> \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.assets.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.assets.json
new file mode 100644
index 0000000..d719216
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.assets.json
@@ -0,0 +1,73 @@
+{
+ "version": 3,
+ "targets": {
+ "net8.0": {}
+ },
+ "libraries": {},
+ "projectFileDependencyGroups": {
+ "net8.0": []
+ },
+ "packageFolders": {
+ "C:\\Users\\CatilGrass\\.nuget\\packages\\": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj",
+ "projectName": "NoGamepadsSharp_Execute",
+ "projectPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj",
+ "packagesPath": "C:\\Users\\CatilGrass\\.nuget\\packages\\",
+ "outputPath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\obj\\",
+ "projectStyle": "PackageReference",
+ "configFilePaths": [
+ "C:\\Users\\CatilGrass\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ }
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.406/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.nuget.cache b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.nuget.cache
new file mode 100644
index 0000000..1840ead
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.nuget.cache
@@ -0,0 +1,8 @@
+{
+ "version": 2,
+ "dgSpecHash": "7zQApaEoWYM=",
+ "success": true,
+ "projectFilePath": "D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj",
+ "expectedPackageFiles": [],
+ "logs": []
+} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.packagespec.json b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.packagespec.json
new file mode 100644
index 0000000..1fa2ff6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/project.packagespec.json
@@ -0,0 +1 @@
+"restore":{"projectUniqueName":"D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj","projectName":"NoGamepadsSharp_Execute","projectPath":"D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\NoGamepadsSharp_Execute.csproj","outputPath":"D:\\TINP\\NoGamepads\\core_csharp\\NoGamepadsSharp\\NoGamepadsSharp_Execute\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.406/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/rider.project.model.nuget.info b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/rider.project.model.nuget.info
new file mode 100644
index 0000000..91b84e6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/rider.project.model.nuget.info
@@ -0,0 +1 @@
+17483964212879694 \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/rider.project.restore.info b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/rider.project.restore.info
new file mode 100644
index 0000000..91b84e6
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/NoGamepadsSharp_Execute/obj/rider.project.restore.info
@@ -0,0 +1 @@
+17483964212879694 \ No newline at end of file
diff --git a/bindings/csharp/NoGamepadsSharp/global.json b/bindings/csharp/NoGamepadsSharp/global.json
new file mode 100644
index 0000000..2ddda36
--- /dev/null
+++ b/bindings/csharp/NoGamepadsSharp/global.json
@@ -0,0 +1,7 @@
+{
+ "sdk": {
+ "version": "8.0.0",
+ "rollForward": "latestMinor",
+ "allowPrerelease": false
+ }
+} \ No newline at end of file