From d6728a69aa4bf247ebe0494bc919763610ed09d7 Mon Sep 17 00:00:00 2001 From: Ambr0se Date: Sat, 15 Nov 2025 13:53:26 +0800 Subject: [PATCH 1/8] feat: Add runtime cross-language interop benchmarks --- generator/native_generator/main.py | 4 +- .../PerformanceBenchmarkPlugin.cs | 257 ++++++++++++++++++ .../SwiftlyS2.Benchmarks.csproj | 21 ++ managed/managed.csproj | 3 +- .../SwiftlyS2.Generated/Natives/Benchmark.cs | 245 +++++++++++++++++ natives/benchmark.native | 28 ++ src/core/entrypoint.cpp | 169 ++++++------ src/scripting/benchmark/benchmark.cpp | 151 ++++++++++ 8 files changed, 792 insertions(+), 86 deletions(-) create mode 100644 managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs create mode 100644 managed/SwiftlyS2.Benchmarks/SwiftlyS2.Benchmarks.csproj create mode 100644 managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs create mode 100644 natives/benchmark.native create mode 100644 src/scripting/benchmark/benchmark.cpp diff --git a/generator/native_generator/main.py b/generator/native_generator/main.py index ace46d3e9..c30214c75 100644 --- a/generator/native_generator/main.py +++ b/generator/native_generator/main.py @@ -267,7 +267,9 @@ def write_with_fixed_blocks(blocks, index=0): write_native_call() writer.add_block(f"public unsafe static {RETURN_TYPE_MAP[return_type]} {function_name}({method_signature})", write_method_content) - writer.add_block(f"internal static class Native{class_name}", write_class_content) + # Benchmark class should be public for external access + access_modifier = "public" if class_name == "Benchmark" else "internal" + writer.add_block(f"{access_modifier} static class Native{class_name}", write_class_content) with open(out_path, "w", encoding="utf-8", newline="") as f: f.write(writer.get_code()) diff --git a/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs b/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs new file mode 100644 index 000000000..e5b1ab7b5 --- /dev/null +++ b/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs @@ -0,0 +1,257 @@ +using System.Runtime.InteropServices; +using SwiftlyS2.Shared; +using SwiftlyS2.Shared.Commands; +using SwiftlyS2.Shared.Plugins; +using SwiftlyS2.Shared.Natives; +using SwiftlyS2.Core.Natives; +using BenchmarkDotNet.Running; +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Jobs; +using BenchmarkDotNet.Toolchains.InProcess.Emit; +using BenchmarkDotNet.Exporters; +using BenchmarkDotNet.Exporters.Csv; +using BenchmarkDotNet.Exporters.Json; +using BenchmarkDotNet.Exporters.Xml; + +namespace SwiftlyS2.Benchmarks; + +[PluginMetadata(Id = "benchmark", Version = "1.0.0")] +public class PerformanceBenchmarkPlugin : BasePlugin +{ + public PerformanceBenchmarkPlugin( ISwiftlyCore core ) : base(core) + { + } + + public override void Load( bool hotReload ) + { + NativeInteropBenchmark.SetCore(Core); + Core.Registrator.Register(this); + } + + [Command("benchmark", true)] + public void RunBenchmark( ICommandContext context ) + { + Console.WriteLine("\n"); + Console.WriteLine("\n"); + + var job = Job.Default + .WithToolchain(InProcessEmitToolchain.Instance) + .WithWarmupCount(3) + .WithIterationCount(10); + + var config = ManualConfig + .Create(DefaultConfig.Instance) + .AddJob(job) + .WithOptions(ConfigOptions.DisableOptimizationsValidator) + .AddExporter(HtmlExporter.Default) + .AddExporter(MarkdownExporter.GitHub) + .AddExporter(CsvExporter.Default) + .AddExporter(JsonExporter.Full) + .KeepBenchmarkFiles(true); + + BenchmarkRunner.Run(config); + + Console.WriteLine("\n"); + Console.WriteLine("\n"); + } + + public override void Unload() + { + } +} + +/// +/// BenchmarkDotNet tests for measuring C# to C++ interop overhead by pattern +/// Tests different interop scenarios using safe benchmark-specific native functions +/// +[MemoryDiagnoser] +public class NativeInteropBenchmark +{ + [DllImport("swiftlys2", EntryPoint = "SwiftlyS2_Benchmark_PInvoke", CallingConvention = CallingConvention.Cdecl)] + private static extern int SwiftlyS2BenchmarkPInvoke(); + + [DllImport("kernel32.dll")] + private static extern int GetCurrentProcessId(); + + public static void SetCore( ISwiftlyCore sw2Core ) { } + + [Benchmark(Baseline = true, Description = "Baseline: Pure C# method")] + public int Baseline_ManagedCall() + { + return 1337; + } + + [Benchmark(Description = "Baseline: P/Invoke (SwiftlyS2 usermode)")] + public int Baseline_PInvoke_Usermode() + { + return SwiftlyS2BenchmarkPInvoke(); + } + + [Benchmark(Description = "Baseline: P/Invoke (kernel32 syscall)")] + public int Baseline_PInvoke_Kernel() + { + return GetCurrentProcessId(); + } + + [Benchmark(Description = "Pattern 1: void -> void (simplest native call)")] + public void Pattern1_VoidToVoid() + { + NativeBenchmark.VoidToVoid(); + } + + [Benchmark(Description = "Pattern 2: void -> int32")] + public int Pattern2_VoidToInt32() + { + return NativeBenchmark.GetInt32(); + } + + [Benchmark(Description = "Pattern 3: void -> ptr")] + public IntPtr Pattern3_VoidToPtr() + { + return NativeBenchmark.GetPtr(); + } + + [Benchmark(Description = "Pattern 4: int32 -> int32 (single primitive)")] + public int Pattern4_Int32ToInt32() + { + return NativeBenchmark.Int32ToInt32(42); + } + + [Benchmark(Description = "Pattern 5: float -> float (single primitive)")] + public float Pattern5_FloatToFloat() + { + return NativeBenchmark.FloatToFloat(3.14f); + } + + [Benchmark(Description = "Pattern 6: string -> string (UTF-8 encoding)")] + public string Pattern6_StringToString() + { + return NativeBenchmark.StringToString("test"); + } + + [Benchmark(Description = "Pattern 7: string -> ptr (UTF-8 encoding)")] + public IntPtr Pattern7_StringToPtr() + { + return NativeBenchmark.StringToPtr("test"); + } + + [Benchmark(Description = "Pattern 8: 5 params (no string)")] + public int Pattern8_MultiPrimitives() + { + return NativeBenchmark.MultiPrimitives(IntPtr.Zero, 100, 3.14f, true, 999UL); + } + + [Benchmark(Description = "Pattern 9: 5 params + 1 string")] + public int Pattern9_MultiWithOneString() + { + return NativeBenchmark.MultiWithOneString(IntPtr.Zero, "test", IntPtr.Zero, 42, 1.5f); + } + + [Benchmark(Description = "Pattern 10: 5 params + 2 strings (heaviest)")] + public void Pattern10_MultiWithTwoStrings() + { + NativeBenchmark.MultiWithTwoStrings(IntPtr.Zero, "test1", IntPtr.Zero, "test2", 100); + } + + [Benchmark(Description = "Pattern 11: void -> bool")] + public bool Pattern11_VoidToBool() + { + return NativeBenchmark.GetBool(); + } + + [Benchmark(Description = "Pattern 12: void -> uint32")] + public uint Pattern12_VoidToUInt32() + { + return NativeBenchmark.GetUInt32(); + } + + [Benchmark(Description = "Pattern 13: void -> int64")] + public long Pattern13_VoidToInt64() + { + return NativeBenchmark.GetInt64(); + } + + [Benchmark(Description = "Pattern 14: void -> uint64")] + public ulong Pattern14_VoidToUInt64() + { + return NativeBenchmark.GetUInt64(); + } + + [Benchmark(Description = "Pattern 15: void -> float")] + public float Pattern15_VoidToFloat() + { + return NativeBenchmark.GetFloat(); + } + + [Benchmark(Description = "Pattern 16: void -> double")] + public double Pattern16_VoidToDouble() + { + return NativeBenchmark.GetDouble(); + } + + [Benchmark(Description = "Pattern 17: bool -> bool")] + public bool Pattern17_BoolToBool() + { + return NativeBenchmark.BoolToBool(true); + } + + [Benchmark(Description = "Pattern 18: uint32 -> uint32")] + public uint Pattern18_UInt32ToUInt32() + { + return NativeBenchmark.UInt32ToUInt32(1337u); + } + + [Benchmark(Description = "Pattern 19: int64 -> int64")] + public long Pattern19_Int64ToInt64() + { + return NativeBenchmark.Int64ToInt64(9999999L); + } + + [Benchmark(Description = "Pattern 20: uint64 -> uint64")] + public ulong Pattern20_UInt64ToUInt64() + { + return NativeBenchmark.UInt64ToUInt64(9999999UL); + } + + [Benchmark(Description = "Pattern 21: double -> double")] + public double Pattern21_DoubleToDouble() + { + return NativeBenchmark.DoubleToDouble(3.14159); + } + + [Benchmark(Description = "Pattern 22: ptr -> ptr")] + public IntPtr Pattern22_PtrToPtr() + { + return NativeBenchmark.PtrToPtr(new IntPtr(0x1234)); + } + + [Benchmark(Description = "Pattern 23: Vector -> Vector (complex type)")] + public Vector Pattern23_VectorToVector() + { + return NativeBenchmark.VectorToVector(new Vector(1.0f, 2.0f, 3.0f)); + } + + [Benchmark(Description = "Pattern 24: QAngle -> QAngle (complex type)")] + public QAngle Pattern24_QAngleToQAngle() + { + return NativeBenchmark.QAngleToQAngle(new QAngle(45.0f, 90.0f, 0.0f)); + } + + [Benchmark(Description = "Pattern 25: Color -> Color (complex type)")] + public Color Pattern25_ColorToColor() + { + return NativeBenchmark.ColorToColor(new Color(255, 128, 64, 255)); + } + + [Benchmark(Description = "Pattern 26: Complex mixed (vector+qangle+string)")] + public void Pattern26_ComplexWithString() + { + NativeBenchmark.ComplexWithString( + IntPtr.Zero, + new Vector(100.0f, 200.0f, 300.0f), + "test_entity", + new QAngle(0.0f, 180.0f, 0.0f) + ); + } +} \ No newline at end of file diff --git a/managed/SwiftlyS2.Benchmarks/SwiftlyS2.Benchmarks.csproj b/managed/SwiftlyS2.Benchmarks/SwiftlyS2.Benchmarks.csproj new file mode 100644 index 000000000..d47a9b802 --- /dev/null +++ b/managed/SwiftlyS2.Benchmarks/SwiftlyS2.Benchmarks.csproj @@ -0,0 +1,21 @@ + + + + Library + net10.0 + enable + enable + true + true + false + + + + + + + + + + + diff --git a/managed/managed.csproj b/managed/managed.csproj index aaca15bb9..7b0728874 100644 --- a/managed/managed.csproj +++ b/managed/managed.csproj @@ -1,4 +1,4 @@ - + @@ -61,6 +61,7 @@ + diff --git a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs new file mode 100644 index 000000000..7ab3adc26 --- /dev/null +++ b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs @@ -0,0 +1,245 @@ +#pragma warning disable CS0649 +#pragma warning disable CS0169 + +using System.Buffers; +using System.Text; +using System.Threading; +using SwiftlyS2.Shared.Natives; + +namespace SwiftlyS2.Core.Natives; + +public static class NativeBenchmark { + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _VoidToVoid; + + public unsafe static void VoidToVoid() { + _VoidToVoid(); + } + + private unsafe static delegate* unmanaged _GetBool; + + public unsafe static bool GetBool() { + var ret = _GetBool(); + return ret == 1; + } + + private unsafe static delegate* unmanaged _GetInt32; + + public unsafe static int GetInt32() { + var ret = _GetInt32(); + return ret; + } + + private unsafe static delegate* unmanaged _GetUInt32; + + public unsafe static uint GetUInt32() { + var ret = _GetUInt32(); + return ret; + } + + private unsafe static delegate* unmanaged _GetInt64; + + public unsafe static long GetInt64() { + var ret = _GetInt64(); + return ret; + } + + private unsafe static delegate* unmanaged _GetUInt64; + + public unsafe static ulong GetUInt64() { + var ret = _GetUInt64(); + return ret; + } + + private unsafe static delegate* unmanaged _GetFloat; + + public unsafe static float GetFloat() { + var ret = _GetFloat(); + return ret; + } + + private unsafe static delegate* unmanaged _GetDouble; + + public unsafe static double GetDouble() { + var ret = _GetDouble(); + return ret; + } + + private unsafe static delegate* unmanaged _GetPtr; + + public unsafe static nint GetPtr() { + var ret = _GetPtr(); + return ret; + } + + private unsafe static delegate* unmanaged _BoolToBool; + + public unsafe static bool BoolToBool(bool value) { + var ret = _BoolToBool(value ? (byte)1 : (byte)0); + return ret == 1; + } + + private unsafe static delegate* unmanaged _Int32ToInt32; + + public unsafe static int Int32ToInt32(int value) { + var ret = _Int32ToInt32(value); + return ret; + } + + private unsafe static delegate* unmanaged _UInt32ToUInt32; + + public unsafe static uint UInt32ToUInt32(uint value) { + var ret = _UInt32ToUInt32(value); + return ret; + } + + private unsafe static delegate* unmanaged _Int64ToInt64; + + public unsafe static long Int64ToInt64(long value) { + var ret = _Int64ToInt64(value); + return ret; + } + + private unsafe static delegate* unmanaged _UInt64ToUInt64; + + public unsafe static ulong UInt64ToUInt64(ulong value) { + var ret = _UInt64ToUInt64(value); + return ret; + } + + private unsafe static delegate* unmanaged _FloatToFloat; + + public unsafe static float FloatToFloat(float value) { + var ret = _FloatToFloat(value); + return ret; + } + + private unsafe static delegate* unmanaged _DoubleToDouble; + + public unsafe static double DoubleToDouble(double value) { + var ret = _DoubleToDouble(value); + return ret; + } + + private unsafe static delegate* unmanaged _PtrToPtr; + + public unsafe static nint PtrToPtr(nint value) { + var ret = _PtrToPtr(value); + return ret; + } + + private unsafe static delegate* unmanaged _StringToString; + + public unsafe static string StringToString(string value) { + var pool = ArrayPool.Shared; + var valueLength = Encoding.UTF8.GetByteCount(value); + var valueBuffer = pool.Rent(valueLength + 1); + Encoding.UTF8.GetBytes(value, valueBuffer); + valueBuffer[valueLength] = 0; + fixed (byte* valueBufferPtr = valueBuffer) { + var ret = _StringToString(null, valueBufferPtr); + var retBuffer = pool.Rent(ret + 1); + fixed (byte* retBufferPtr = retBuffer) { + ret = _StringToString(retBufferPtr, valueBufferPtr); + var retString = Encoding.UTF8.GetString(retBufferPtr, ret); + pool.Return(retBuffer); + pool.Return(valueBuffer); + return retString; + } + } + } + + private unsafe static delegate* unmanaged _StringToPtr; + + public unsafe static nint StringToPtr(string value) { + var pool = ArrayPool.Shared; + var valueLength = Encoding.UTF8.GetByteCount(value); + var valueBuffer = pool.Rent(valueLength + 1); + Encoding.UTF8.GetBytes(value, valueBuffer); + valueBuffer[valueLength] = 0; + fixed (byte* valueBufferPtr = valueBuffer) { + var ret = _StringToPtr(valueBufferPtr); + pool.Return(valueBuffer); + return ret; + } + } + + private unsafe static delegate* unmanaged _MultiPrimitives; + + public unsafe static int MultiPrimitives(nint p1, int i1, float f1, bool b1, ulong u1) { + var ret = _MultiPrimitives(p1, i1, f1, b1 ? (byte)1 : (byte)0, u1); + return ret; + } + + private unsafe static delegate* unmanaged _MultiWithOneString; + + public unsafe static int MultiWithOneString(nint p1, string s1, nint p2, int i1, float f1) { + var pool = ArrayPool.Shared; + var s1Length = Encoding.UTF8.GetByteCount(s1); + var s1Buffer = pool.Rent(s1Length + 1); + Encoding.UTF8.GetBytes(s1, s1Buffer); + s1Buffer[s1Length] = 0; + fixed (byte* s1BufferPtr = s1Buffer) { + var ret = _MultiWithOneString(p1, s1BufferPtr, p2, i1, f1); + pool.Return(s1Buffer); + return ret; + } + } + + private unsafe static delegate* unmanaged _MultiWithTwoStrings; + + public unsafe static void MultiWithTwoStrings(nint p1, string s1, nint p2, string s2, int i1) { + var pool = ArrayPool.Shared; + var s1Length = Encoding.UTF8.GetByteCount(s1); + var s1Buffer = pool.Rent(s1Length + 1); + Encoding.UTF8.GetBytes(s1, s1Buffer); + s1Buffer[s1Length] = 0; + var s2Length = Encoding.UTF8.GetByteCount(s2); + var s2Buffer = pool.Rent(s2Length + 1); + Encoding.UTF8.GetBytes(s2, s2Buffer); + s2Buffer[s2Length] = 0; + fixed (byte* s1BufferPtr = s1Buffer) { + fixed (byte* s2BufferPtr = s2Buffer) { + _MultiWithTwoStrings(p1, s1BufferPtr, p2, s2BufferPtr, i1); + pool.Return(s1Buffer); + pool.Return(s2Buffer); + } + } + } + + private unsafe static delegate* unmanaged _VectorToVector; + + public unsafe static Vector VectorToVector(Vector value) { + var ret = _VectorToVector(value); + return ret; + } + + private unsafe static delegate* unmanaged _QAngleToQAngle; + + public unsafe static QAngle QAngleToQAngle(QAngle value) { + var ret = _QAngleToQAngle(value); + return ret; + } + + private unsafe static delegate* unmanaged _ColorToColor; + + public unsafe static Color ColorToColor(Color value) { + var ret = _ColorToColor(value); + return ret; + } + + private unsafe static delegate* unmanaged _ComplexWithString; + + public unsafe static void ComplexWithString(nint entity, Vector pos, string name, QAngle angle) { + var pool = ArrayPool.Shared; + var nameLength = Encoding.UTF8.GetByteCount(name); + var nameBuffer = pool.Rent(nameLength + 1); + Encoding.UTF8.GetBytes(name, nameBuffer); + nameBuffer[nameLength] = 0; + fixed (byte* nameBufferPtr = nameBuffer) { + _ComplexWithString(entity, pos, nameBufferPtr, angle); + pool.Return(nameBuffer); + } + } +} \ No newline at end of file diff --git a/natives/benchmark.native b/natives/benchmark.native new file mode 100644 index 000000000..6a99c7e48 --- /dev/null +++ b/natives/benchmark.native @@ -0,0 +1,28 @@ +class Benchmark + +void VoidToVoid = void +bool GetBool = void +int32 GetInt32 = void +uint32 GetUInt32 = void +int64 GetInt64 = void +uint64 GetUInt64 = void +float GetFloat = void +double GetDouble = void +ptr GetPtr = void +bool BoolToBool = bool value +int32 Int32ToInt32 = int32 value +uint32 UInt32ToUInt32 = uint32 value +int64 Int64ToInt64 = int64 value +uint64 UInt64ToUInt64 = uint64 value +float FloatToFloat = float value +double DoubleToDouble = double value +ptr PtrToPtr = ptr value +string StringToString = string value +ptr StringToPtr = string value +int32 MultiPrimitives = ptr p1, int32 i1, float f1, bool b1, uint64 u1 +int32 MultiWithOneString = ptr p1, string s1, ptr p2, int32 i1, float f1 +void MultiWithTwoStrings = ptr p1, string s1, ptr p2, string s2, int32 i1 +vector VectorToVector = vector value +qangle QAngleToQAngle = qangle value +color ColorToColor = color value +void ComplexWithString = ptr entity, vector pos, string name, qangle angle \ No newline at end of file diff --git a/src/core/entrypoint.cpp b/src/core/entrypoint.cpp index 6d0981ffe..62ee80f52 100644 --- a/src/core/entrypoint.cpp +++ b/src/core/entrypoint.cpp @@ -17,35 +17,40 @@ ************************************************************************************************/ #include "entrypoint.h" -#include +#include "console/colors.h" #include -#include +#include #include -#include "console/colors.h" +#include #include + #include "managed/host/dynlib.h" #include "managed/host/strconv.h" -#include #include +#include #include #include + #include #include +#include #include #include -#include -#include + #include +#include + #include -#include #include +#include + #include @@ -62,6 +67,16 @@ IVFunctionHook* g_pGameServerSteamAPIDeactivated = nullptr; IVFunctionHook* g_pLoopInitHook = nullptr; IVFunctionHook* g_pLoopShutdownHook = nullptr; +// Simple benchmark function for P/Invoke testing +#ifdef _WIN32 +extern "C" __declspec(dllexport) int32_t SwiftlyS2_Benchmark_PInvoke() +#else +extern "C" __attribute__((visibility("default"))) int32_t SwiftlyS2_Benchmark_PInvoke() +#endif +{ + return 1337; +} + void GameServerSteamAPIActivatedHook(void* _this); void GameServerSteamAPIDeactivatedHook(void* _this); @@ -78,19 +93,9 @@ bool SwiftlyCore::Load(BridgeKind_t kind) s2binlib_initialize(Plat_GetGameDirectory(), "csgo"); #ifdef _WIN32 - void* libServer = load_library( - (const char_t*)WIN_LINUX( - StringWide((Plat_GetGameDirectory() + std::string("\\csgo\\bin\\win64\\server.dll"))).c_str(), - (Plat_GetGameDirectory() + std::string("/csgo/bin/linuxsteamrt64/libserver.so")).c_str() - ) - ); - - void* libEngine = load_library( - (const char_t*)WIN_LINUX( - StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\engine2.dll")).c_str(), - (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libengine2.so")).c_str() - ) - ); + void* libServer = load_library((const char_t*)WIN_LINUX(StringWide((Plat_GetGameDirectory() + std::string("\\csgo\\bin\\win64\\server.dll"))).c_str(), (Plat_GetGameDirectory() + std::string("/csgo/bin/linuxsteamrt64/libserver.so")).c_str())); + + void* libEngine = load_library((const char_t*)WIN_LINUX(StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\engine2.dll")).c_str(), (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libengine2.so")).c_str())); s2binlib_set_module_base_from_pointer("server", libServer); s2binlib_set_module_base_from_pointer("engine2", libEngine); @@ -104,22 +109,27 @@ bool SwiftlyCore::Load(BridgeKind_t kind) auto logger = g_ifaceService.FetchInterface(LOGGER_INTERFACE_VERSION); - if (GetCurrentGame() == "unknown") { + if (GetCurrentGame() == "unknown") + { auto engine = g_ifaceService.FetchInterface(INTERFACEVERSION_VENGINESERVER); - if (engine) logger->Error("Entrypoint", fmt::format("Unknown game detected. App ID: {}", engine->GetAppID())); - else logger->Error("Entrypoint", "Unknown game detected. No engine interface available."); + if (engine) + logger->Error("Entrypoint", fmt::format("Unknown game detected. App ID: {}", engine->GetAppID())); + else + logger->Error("Entrypoint", "Unknown game detected. No engine interface available."); return false; } m_sCorePath = CommandLine()->ParmValue(CUtlStringToken("-sw_path"), WIN_LINUX("addons\\swiftlys2", "addons/swiftlys2")); - if (!ends_with(m_sCorePath, WIN_LINUX("\\", "/"))) m_sCorePath += WIN_LINUX("\\", "/"); + if (!ends_with(m_sCorePath, WIN_LINUX("\\", "/"))) + m_sCorePath += WIN_LINUX("\\", "/"); auto configuration = g_ifaceService.FetchInterface(CONFIGURATION_INTERFACE_VERSION); configuration->InitializeExamples(); - if (!configuration->Load()) { + if (!configuration->Load()) + { logger->Error("Entrypoint", "Couldn't load the core configuration."); return false; } @@ -133,14 +143,18 @@ bool SwiftlyCore::Load(BridgeKind_t kind) gamedata->GetSignatures()->Load(GetCurrentGame()); gamedata->GetPatches()->Load(GetCurrentGame()); - if (std::string* s = std::get_if(&configuration->GetValue("core.PatchesToPerform"))) { + if (std::string* s = std::get_if(&configuration->GetValue("core.PatchesToPerform"))) + { auto patches = explodeToSet(*s, " "); - for (const auto& patch : patches) { - if (gamedata->GetPatches()->Exists(patch)) { + for (const auto& patch : patches) + { + if (gamedata->GetPatches()->Exists(patch)) + { gamedata->GetPatches()->Apply(patch); logger->Info("Patching", fmt::format("Applied patch: {}", patch)); } - else { + else + { logger->Warning("Patching", fmt::format("Couldn't find patch: {}", patch)); } } @@ -149,7 +163,8 @@ bool SwiftlyCore::Load(BridgeKind_t kind) auto consoleoutput = g_ifaceService.FetchInterface(CONSOLEOUTPUT_INTERFACE_VERSION); consoleoutput->Initialize(); if (bool* b = std::get_if(&configuration->GetValue("core.ConsoleFilter"))) - if (*b) consoleoutput->ToggleFilter(); + if (*b) + consoleoutput->ToggleFilter(); auto entsystem = g_ifaceService.FetchInterface(ENTITYSYSTEM_INTERFACE_VERSION); entsystem->Initialize(); @@ -160,7 +175,8 @@ bool SwiftlyCore::Load(BridgeKind_t kind) auto evmanager = g_ifaceService.FetchInterface(GAMEEVENTMANAGER_INTERFACE_VERSION); evmanager->Initialize(GetCurrentGame()); - if (!InitGameSystem()) { + if (!InitGameSystem()) + { logger->Error("Game System", "Couldn't initialize the Game System.\n"); return false; } @@ -310,13 +326,13 @@ void SwiftlyCore::OnMapLoad(std::string map_name) current_map = map_name; if (g_pOnMapLoadCallback) - reinterpret_cast(g_pOnMapLoadCallback)(map_name.c_str()); + reinterpret_cast(g_pOnMapLoadCallback)(map_name.c_str()); } void SwiftlyCore::OnMapUnload() { if (g_pOnMapUnloadCallback) - reinterpret_cast(g_pOnMapUnloadCallback)(current_map.c_str()); + reinterpret_cast(g_pOnMapUnloadCallback)(current_map.c_str()); current_map = ""; } @@ -331,63 +347,39 @@ void* SwiftlyCore::GetInterface(const std::string& interface_name) void* ifaceptr = nullptr; void* ifaceCreate = nullptr; - if (INTERFACEVERSION_SERVERGAMEDLL == interface_name || INTERFACEVERSION_SERVERGAMECLIENTS == interface_name || SOURCE2GAMEENTITIES_INTERFACE_VERSION == interface_name) { - void* lib = load_library( - (const char_t*)WIN_LINUX( - StringWide((Plat_GetGameDirectory() + std::string("\\csgo\\bin\\win64\\server.dll"))).c_str(), - (Plat_GetGameDirectory() + std::string("/csgo/bin/linuxsteamrt64/libserver.so")).c_str() - ) - ); + if (INTERFACEVERSION_SERVERGAMEDLL == interface_name || INTERFACEVERSION_SERVERGAMECLIENTS == interface_name || SOURCE2GAMEENTITIES_INTERFACE_VERSION == interface_name) + { + void* lib = load_library((const char_t*)WIN_LINUX(StringWide((Plat_GetGameDirectory() + std::string("\\csgo\\bin\\win64\\server.dll"))).c_str(), (Plat_GetGameDirectory() + std::string("/csgo/bin/linuxsteamrt64/libserver.so")).c_str())); ifaceCreate = get_export(lib, "CreateInterface"); unload_library(lib); } - else if (SCHEMASYSTEM_INTERFACE_VERSION == interface_name) { - void* lib = load_library( - (const char_t*)WIN_LINUX( - StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\schemasystem.dll")).c_str(), - (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libschemasystem.so")).c_str() - ) - ); + else if (SCHEMASYSTEM_INTERFACE_VERSION == interface_name) + { + void* lib = load_library((const char_t*)WIN_LINUX(StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\schemasystem.dll")).c_str(), (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libschemasystem.so")).c_str())); ifaceCreate = get_export(lib, "CreateInterface"); unload_library(lib); } - else if (CVAR_INTERFACE_VERSION == interface_name) { - void* lib = load_library( - (const char_t*)WIN_LINUX( - StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\tier0.dll")).c_str(), - (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libtier0.so")).c_str() - ) - ); + else if (CVAR_INTERFACE_VERSION == interface_name) + { + void* lib = load_library((const char_t*)WIN_LINUX(StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\tier0.dll")).c_str(), (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libtier0.so")).c_str())); ifaceCreate = get_export(lib, "CreateInterface"); unload_library(lib); } - else if (NETWORKMESSAGES_INTERFACE_VERSION == interface_name || NETWORKSYSTEM_INTERFACE_VERSION == interface_name) { - void* lib = load_library( - (const char_t*)WIN_LINUX( - StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\networksystem.dll")).c_str(), - (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libnetworksystem.so")).c_str() - ) - ); + else if (NETWORKMESSAGES_INTERFACE_VERSION == interface_name || NETWORKSYSTEM_INTERFACE_VERSION == interface_name) + { + void* lib = load_library((const char_t*)WIN_LINUX(StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\networksystem.dll")).c_str(), (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libnetworksystem.so")).c_str())); ifaceCreate = get_export(lib, "CreateInterface"); unload_library(lib); } - else if (SOUNDSYSTEM_INTERFACE_VERSION == interface_name || SOUNDOPSYSTEM_INTERFACE_VERSION == interface_name) { - void* lib = load_library( - (const char_t*)WIN_LINUX( - StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\soundsystem.dll")).c_str(), - (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libsoundsystem.so")).c_str() - ) - ); + else if (SOUNDSYSTEM_INTERFACE_VERSION == interface_name || SOUNDOPSYSTEM_INTERFACE_VERSION == interface_name) + { + void* lib = load_library((const char_t*)WIN_LINUX(StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\soundsystem.dll")).c_str(), (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libsoundsystem.so")).c_str())); ifaceCreate = get_export(lib, "CreateInterface"); unload_library(lib); } - else { - void* lib = load_library( - (const char_t*)WIN_LINUX( - StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\engine2.dll")).c_str(), - (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libengine2.so")).c_str() - ) - ); + else + { + void* lib = load_library((const char_t*)WIN_LINUX(StringWide(Plat_GetGameDirectory() + std::string("\\bin\\win64\\engine2.dll")).c_str(), (Plat_GetGameDirectory() + std::string("/bin/linuxsteamrt64/libengine2.so")).c_str())); ifaceCreate = get_export(lib, "CreateInterface"); unload_library(lib); } @@ -397,7 +389,8 @@ void* SwiftlyCore::GetInterface(const std::string& interface_name) ifaceptr = reinterpret_cast(ifaceCreate)(interface_name.c_str(), nullptr); } - if (ifaceptr != nullptr) g_mInterfacesCache.insert({ interface_name, ifaceptr }); + if (ifaceptr != nullptr) + g_mInterfacesCache.insert({interface_name, ifaceptr}); return ifaceptr; } @@ -410,22 +403,30 @@ void SwiftlyCore::SendConsoleMessage(const std::string& message) std::string SwiftlyCore::GetCurrentGame() { auto engine = g_ifaceService.FetchInterface(INTERFACEVERSION_VENGINESERVER); - if (!engine) return "unknown"; + if (!engine) + return "unknown"; - switch (engine->GetAppID()) { - case 730: return "cs2"; - default: return "unknown"; + switch (engine->GetAppID()) + { + case 730: + return "cs2"; + default: + return "unknown"; } } int SwiftlyCore::GetMaxGameClients() { auto engine = g_ifaceService.FetchInterface(INTERFACEVERSION_VENGINESERVER); - if (!engine) return 0; + if (!engine) + return 0; - switch (engine->GetAppID()) { - case 730: return 64; - default: return 0; + switch (engine->GetAppID()) + { + case 730: + return 64; + default: + return 0; } } diff --git a/src/scripting/benchmark/benchmark.cpp b/src/scripting/benchmark/benchmark.cpp new file mode 100644 index 000000000..d18bc8ad5 --- /dev/null +++ b/src/scripting/benchmark/benchmark.cpp @@ -0,0 +1,151 @@ +/************************************************************************************************ + * SwiftlyS2 Benchmark Module + * Provides safe native functions for C# to C++ interop performance testing + * All functions are designed to be lightweight and safe for repeated calls + ************************************************************************************************/ + +#include +#include +#include +#include + + +// Pattern 1: void -> void +void Bridge_Benchmark_VoidToVoid() {} + +// Pattern 2: void -> primitive types +bool Bridge_Benchmark_GetBool() +{ + return true; +} +int32_t Bridge_Benchmark_GetInt32() +{ + return 42; +} +uint32_t Bridge_Benchmark_GetUInt32() +{ + return 1337u; +} +int64_t Bridge_Benchmark_GetInt64() +{ + return 42000000LL; +} +uint64_t Bridge_Benchmark_GetUInt64() +{ + return 1337000000ULL; +} +float Bridge_Benchmark_GetFloat() +{ + return 3.14f; +} +double Bridge_Benchmark_GetDouble() +{ + return 3.14159; +} +void* Bridge_Benchmark_GetPtr() +{ + return reinterpret_cast(0x1337); +} + +// Pattern 3: Single primitive -> same primitive +bool Bridge_Benchmark_BoolToBool(bool value) +{ + return !value; +} +int32_t Bridge_Benchmark_Int32ToInt32(int32_t value) +{ + return value + 1; +} +uint32_t Bridge_Benchmark_UInt32ToUInt32(uint32_t value) +{ + return value + 1; +} +int64_t Bridge_Benchmark_Int64ToInt64(int64_t value) +{ + return value + 1; +} +uint64_t Bridge_Benchmark_UInt64ToUInt64(uint64_t value) +{ + return value + 1; +} +float Bridge_Benchmark_FloatToFloat(float value) +{ + return value + 1.0f; +} +double Bridge_Benchmark_DoubleToDouble(double value) +{ + return value + 1.0; +} +void* Bridge_Benchmark_PtrToPtr(void* value) +{ + return value; +} + +// Pattern 4: String (UTF-8 encoding test) +const char* Bridge_Benchmark_StringToString(const char* value) +{ + return "test"; +} +void* Bridge_Benchmark_StringToPtr(const char* value) +{ + return reinterpret_cast(0xBEEF); +} + +// Pattern 5: Multiple primitives (no string) +int32_t Bridge_Benchmark_MultiPrimitives(void* p1, int32_t i1, float f1, bool b1, uint64_t u1) +{ + return i1 + (int32_t)f1; +} + +// Pattern 6: Multiple with 1 string +int32_t Bridge_Benchmark_MultiWithOneString(void* p1, const char* s1, void* p2, int32_t i1, float f1) +{ + return i1; +} + +// Pattern 7: Multiple with 2 strings (heaviest encoding) +void Bridge_Benchmark_MultiWithTwoStrings(void* p1, const char* s1, void* p2, const char* s2, int32_t i1) {} + +// Pattern 8: Complex types (vector, qangle, color) +Vector Bridge_Benchmark_VectorToVector(Vector value) +{ + return Vector(value.x + 1, value.y + 1, value.z + 1); +} +QAngle Bridge_Benchmark_QAngleToQAngle(QAngle value) +{ + return QAngle(value.x + 1, value.y + 1, value.z + 1); +} +Color Bridge_Benchmark_ColorToColor(Color value) +{ + return Color(255, 0, 0, 255); +} + +// Pattern 9: Mixed complex + string +void Bridge_Benchmark_ComplexWithString(void* entity, Vector pos, const char* name, QAngle angle) {} + +DEFINE_NATIVE("Benchmark.VoidToVoid", Bridge_Benchmark_VoidToVoid); +DEFINE_NATIVE("Benchmark.GetBool", Bridge_Benchmark_GetBool); +DEFINE_NATIVE("Benchmark.GetInt32", Bridge_Benchmark_GetInt32); +DEFINE_NATIVE("Benchmark.GetUInt32", Bridge_Benchmark_GetUInt32); +DEFINE_NATIVE("Benchmark.GetInt64", Bridge_Benchmark_GetInt64); +DEFINE_NATIVE("Benchmark.GetUInt64", Bridge_Benchmark_GetUInt64); +DEFINE_NATIVE("Benchmark.GetFloat", Bridge_Benchmark_GetFloat); +DEFINE_NATIVE("Benchmark.GetDouble", Bridge_Benchmark_GetDouble); +DEFINE_NATIVE("Benchmark.GetPtr", Bridge_Benchmark_GetPtr); +DEFINE_NATIVE("Benchmark.BoolToBool", Bridge_Benchmark_BoolToBool); +DEFINE_NATIVE("Benchmark.Int32ToInt32", Bridge_Benchmark_Int32ToInt32); +DEFINE_NATIVE("Benchmark.UInt32ToUInt32", Bridge_Benchmark_UInt32ToUInt32); +DEFINE_NATIVE("Benchmark.Int64ToInt64", Bridge_Benchmark_Int64ToInt64); +DEFINE_NATIVE("Benchmark.UInt64ToUInt64", Bridge_Benchmark_UInt64ToUInt64); +DEFINE_NATIVE("Benchmark.FloatToFloat", Bridge_Benchmark_FloatToFloat); +DEFINE_NATIVE("Benchmark.DoubleToDouble", Bridge_Benchmark_DoubleToDouble); +DEFINE_NATIVE("Benchmark.PtrToPtr", Bridge_Benchmark_PtrToPtr); +DEFINE_NATIVE("Benchmark.StringToString", Bridge_Benchmark_StringToString); +DEFINE_NATIVE("Benchmark.StringToPtr", Bridge_Benchmark_StringToPtr); +DEFINE_NATIVE("Benchmark.MultiPrimitives", Bridge_Benchmark_MultiPrimitives); +DEFINE_NATIVE("Benchmark.MultiWithOneString", Bridge_Benchmark_MultiWithOneString); +DEFINE_NATIVE("Benchmark.MultiWithTwoStrings", Bridge_Benchmark_MultiWithTwoStrings); +DEFINE_NATIVE("Benchmark.VectorToVector", Bridge_Benchmark_VectorToVector); +DEFINE_NATIVE("Benchmark.QAngleToQAngle", Bridge_Benchmark_QAngleToQAngle); +DEFINE_NATIVE("Benchmark.ColorToColor", Bridge_Benchmark_ColorToColor); +DEFINE_NATIVE("Benchmark.ComplexWithString", Bridge_Benchmark_ComplexWithString); \ No newline at end of file From 2db01fa055bb8272ae8deaf5380e984f3a0997de Mon Sep 17 00:00:00 2001 From: Ambr0se Date: Sat, 15 Nov 2025 14:40:37 +0800 Subject: [PATCH 2/8] refactor: Improve benchmark precision --- .../PerformanceBenchmarkPlugin.cs | 72 ++++++++++--------- .../SwiftlyS2.Generated/Natives/Benchmark.cs | 21 ++---- natives/benchmark.native | 5 +- src/scripting/benchmark/benchmark.cpp | 40 +++++------ 4 files changed, 66 insertions(+), 72 deletions(-) diff --git a/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs b/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs index e5b1ab7b5..259d5e2e2 100644 --- a/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs +++ b/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs @@ -1,18 +1,19 @@ using System.Runtime.InteropServices; -using SwiftlyS2.Shared; -using SwiftlyS2.Shared.Commands; -using SwiftlyS2.Shared.Plugins; -using SwiftlyS2.Shared.Natives; -using SwiftlyS2.Core.Natives; +using BenchmarkDotNet.Jobs; +using BenchmarkDotNet.Columns; using BenchmarkDotNet.Running; -using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; -using BenchmarkDotNet.Jobs; -using BenchmarkDotNet.Toolchains.InProcess.Emit; using BenchmarkDotNet.Exporters; +using BenchmarkDotNet.Attributes; +using BenchmarkDotNet.Exporters.Xml; using BenchmarkDotNet.Exporters.Csv; using BenchmarkDotNet.Exporters.Json; -using BenchmarkDotNet.Exporters.Xml; +using BenchmarkDotNet.Toolchains.InProcess.Emit; +using SwiftlyS2.Shared; +using SwiftlyS2.Shared.Commands; +using SwiftlyS2.Shared.Plugins; +using SwiftlyS2.Shared.Natives; +using SwiftlyS2.Core.Natives; namespace SwiftlyS2.Benchmarks; @@ -37,13 +38,20 @@ public void RunBenchmark( ICommandContext context ) var job = Job.Default .WithToolchain(InProcessEmitToolchain.Instance) - .WithWarmupCount(3) - .WithIterationCount(10); + .WithWarmupCount(5) + .WithIterationCount(20) + .WithMinIterationCount(15) + .WithMaxIterationCount(30) + .WithGcServer(true) + .WithGcForce(false); var config = ManualConfig .Create(DefaultConfig.Instance) .AddJob(job) .WithOptions(ConfigOptions.DisableOptimizationsValidator) + .AddColumn(StatisticColumn.P95) + .AddColumn(StatisticColumn.StdDev) + .AddColumn(StatisticColumn.Median) .AddExporter(HtmlExporter.Default) .AddExporter(MarkdownExporter.GitHub) .AddExporter(CsvExporter.Default) @@ -82,19 +90,19 @@ public int Baseline_ManagedCall() return 1337; } - [Benchmark(Description = "Baseline: P/Invoke (SwiftlyS2 usermode)")] + [Benchmark(Description = "Baseline: P/Invoke (usermode)")] public int Baseline_PInvoke_Usermode() { return SwiftlyS2BenchmarkPInvoke(); } - [Benchmark(Description = "Baseline: P/Invoke (kernel32 syscall)")] + [Benchmark(Description = "Baseline: P/Invoke (kernel32)")] public int Baseline_PInvoke_Kernel() { return GetCurrentProcessId(); } - [Benchmark(Description = "Pattern 1: void -> void (simplest native call)")] + [Benchmark(Description = "Pattern 1: void -> void")] public void Pattern1_VoidToVoid() { NativeBenchmark.VoidToVoid(); @@ -112,31 +120,31 @@ public IntPtr Pattern3_VoidToPtr() return NativeBenchmark.GetPtr(); } - [Benchmark(Description = "Pattern 4: int32 -> int32 (single primitive)")] + [Benchmark(Description = "Pattern 4: int32 -> int32")] public int Pattern4_Int32ToInt32() { return NativeBenchmark.Int32ToInt32(42); } - [Benchmark(Description = "Pattern 5: float -> float (single primitive)")] + [Benchmark(Description = "Pattern 5: float -> float")] public float Pattern5_FloatToFloat() { return NativeBenchmark.FloatToFloat(3.14f); } - [Benchmark(Description = "Pattern 6: string -> string (UTF-8 encoding)")] + [Benchmark(Description = "Pattern 6: string -> string")] public string Pattern6_StringToString() { return NativeBenchmark.StringToString("test"); } - [Benchmark(Description = "Pattern 7: string -> ptr (UTF-8 encoding)")] + [Benchmark(Description = "Pattern 7: string -> ptr")] public IntPtr Pattern7_StringToPtr() { return NativeBenchmark.StringToPtr("test"); } - [Benchmark(Description = "Pattern 8: 5 params (no string)")] + [Benchmark(Description = "Pattern 8: 5 params")] public int Pattern8_MultiPrimitives() { return NativeBenchmark.MultiPrimitives(IntPtr.Zero, 100, 3.14f, true, 999UL); @@ -148,7 +156,7 @@ public int Pattern9_MultiWithOneString() return NativeBenchmark.MultiWithOneString(IntPtr.Zero, "test", IntPtr.Zero, 42, 1.5f); } - [Benchmark(Description = "Pattern 10: 5 params + 2 strings (heaviest)")] + [Benchmark(Description = "Pattern 10: 5 params + 2 strings")] public void Pattern10_MultiWithTwoStrings() { NativeBenchmark.MultiWithTwoStrings(IntPtr.Zero, "test1", IntPtr.Zero, "test2", 100); @@ -226,25 +234,23 @@ public IntPtr Pattern22_PtrToPtr() return NativeBenchmark.PtrToPtr(new IntPtr(0x1234)); } - [Benchmark(Description = "Pattern 23: Vector -> Vector (complex type)")] - public Vector Pattern23_VectorToVector() - { - return NativeBenchmark.VectorToVector(new Vector(1.0f, 2.0f, 3.0f)); - } - - [Benchmark(Description = "Pattern 24: QAngle -> QAngle (complex type)")] - public QAngle Pattern24_QAngleToQAngle() + [Benchmark(Description = "Pattern 23: Vector -> Vector")] + public unsafe Vector Pattern23_VectorToVector() { - return NativeBenchmark.QAngleToQAngle(new QAngle(45.0f, 90.0f, 0.0f)); + Vector result; + NativeBenchmark.VectorToVector((nint)(&result), new Vector(1.0f, 2.0f, 3.0f)); + return result; } - [Benchmark(Description = "Pattern 25: Color -> Color (complex type)")] - public Color Pattern25_ColorToColor() + [Benchmark(Description = "Pattern 24: QAngle -> QAngle")] + public unsafe QAngle Pattern24_QAngleToQAngle() { - return NativeBenchmark.ColorToColor(new Color(255, 128, 64, 255)); + QAngle result; + NativeBenchmark.QAngleToQAngle((nint)(&result), new QAngle(45.0f, 90.0f, 0.0f)); + return result; } - [Benchmark(Description = "Pattern 26: Complex mixed (vector+qangle+string)")] + [Benchmark(Description = "Pattern 25: Vector + QAngle + String)")] public void Pattern26_ComplexWithString() { NativeBenchmark.ComplexWithString( diff --git a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs index 7ab3adc26..57e4a6fbc 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs @@ -208,25 +208,16 @@ public unsafe static void MultiWithTwoStrings(nint p1, string s1, nint p2, strin } } - private unsafe static delegate* unmanaged _VectorToVector; + private unsafe static delegate* unmanaged _VectorToVector; - public unsafe static Vector VectorToVector(Vector value) { - var ret = _VectorToVector(value); - return ret; - } - - private unsafe static delegate* unmanaged _QAngleToQAngle; - - public unsafe static QAngle QAngleToQAngle(QAngle value) { - var ret = _QAngleToQAngle(value); - return ret; + public unsafe static void VectorToVector(nint result, Vector value) { + _VectorToVector(result, value); } - private unsafe static delegate* unmanaged _ColorToColor; + private unsafe static delegate* unmanaged _QAngleToQAngle; - public unsafe static Color ColorToColor(Color value) { - var ret = _ColorToColor(value); - return ret; + public unsafe static void QAngleToQAngle(nint result, QAngle value) { + _QAngleToQAngle(result, value); } private unsafe static delegate* unmanaged _ComplexWithString; diff --git a/natives/benchmark.native b/natives/benchmark.native index 6a99c7e48..32d21863c 100644 --- a/natives/benchmark.native +++ b/natives/benchmark.native @@ -22,7 +22,6 @@ ptr StringToPtr = string value int32 MultiPrimitives = ptr p1, int32 i1, float f1, bool b1, uint64 u1 int32 MultiWithOneString = ptr p1, string s1, ptr p2, int32 i1, float f1 void MultiWithTwoStrings = ptr p1, string s1, ptr p2, string s2, int32 i1 -vector VectorToVector = vector value -qangle QAngleToQAngle = qangle value -color ColorToColor = color value +void VectorToVector = ptr result, vector value +void QAngleToQAngle = ptr result, qangle value void ComplexWithString = ptr entity, vector pos, string name, qangle angle \ No newline at end of file diff --git a/src/scripting/benchmark/benchmark.cpp b/src/scripting/benchmark/benchmark.cpp index d18bc8ad5..70998a5db 100644 --- a/src/scripting/benchmark/benchmark.cpp +++ b/src/scripting/benchmark/benchmark.cpp @@ -9,18 +9,17 @@ #include #include - -// Pattern 1: void -> void +// Pattern 1 void Bridge_Benchmark_VoidToVoid() {} -// Pattern 2: void -> primitive types +// Pattern 2 bool Bridge_Benchmark_GetBool() { return true; } int32_t Bridge_Benchmark_GetInt32() { - return 42; + return 1337; } uint32_t Bridge_Benchmark_GetUInt32() { @@ -28,7 +27,7 @@ uint32_t Bridge_Benchmark_GetUInt32() } int64_t Bridge_Benchmark_GetInt64() { - return 42000000LL; + return 1337000000LL; } uint64_t Bridge_Benchmark_GetUInt64() { @@ -47,7 +46,7 @@ void* Bridge_Benchmark_GetPtr() return reinterpret_cast(0x1337); } -// Pattern 3: Single primitive -> same primitive +// Pattern 3 bool Bridge_Benchmark_BoolToBool(bool value) { return !value; @@ -81,7 +80,7 @@ void* Bridge_Benchmark_PtrToPtr(void* value) return value; } -// Pattern 4: String (UTF-8 encoding test) +// Pattern 4 const char* Bridge_Benchmark_StringToString(const char* value) { return "test"; @@ -91,36 +90,36 @@ void* Bridge_Benchmark_StringToPtr(const char* value) return reinterpret_cast(0xBEEF); } -// Pattern 5: Multiple primitives (no string) +// Pattern 5 int32_t Bridge_Benchmark_MultiPrimitives(void* p1, int32_t i1, float f1, bool b1, uint64_t u1) { return i1 + (int32_t)f1; } -// Pattern 6: Multiple with 1 string +// Pattern 6 int32_t Bridge_Benchmark_MultiWithOneString(void* p1, const char* s1, void* p2, int32_t i1, float f1) { return i1; } -// Pattern 7: Multiple with 2 strings (heaviest encoding) +// Pattern 7 void Bridge_Benchmark_MultiWithTwoStrings(void* p1, const char* s1, void* p2, const char* s2, int32_t i1) {} -// Pattern 8: Complex types (vector, qangle, color) -Vector Bridge_Benchmark_VectorToVector(Vector value) -{ - return Vector(value.x + 1, value.y + 1, value.z + 1); -} -QAngle Bridge_Benchmark_QAngleToQAngle(QAngle value) +// Pattern 8 +void Bridge_Benchmark_VectorToVector(Vector* result, Vector value) { - return QAngle(value.x + 1, value.y + 1, value.z + 1); + result->x = value.x + 1; + result->y = value.y + 1; + result->z = value.z + 1; } -Color Bridge_Benchmark_ColorToColor(Color value) +void Bridge_Benchmark_QAngleToQAngle(QAngle* result, QAngle value) { - return Color(255, 0, 0, 255); + result->x = value.x + 1; + result->y = value.y + 1; + result->z = value.z + 1; } -// Pattern 9: Mixed complex + string +// Pattern 9 void Bridge_Benchmark_ComplexWithString(void* entity, Vector pos, const char* name, QAngle angle) {} DEFINE_NATIVE("Benchmark.VoidToVoid", Bridge_Benchmark_VoidToVoid); @@ -147,5 +146,4 @@ DEFINE_NATIVE("Benchmark.MultiWithOneString", Bridge_Benchmark_MultiWithOneStrin DEFINE_NATIVE("Benchmark.MultiWithTwoStrings", Bridge_Benchmark_MultiWithTwoStrings); DEFINE_NATIVE("Benchmark.VectorToVector", Bridge_Benchmark_VectorToVector); DEFINE_NATIVE("Benchmark.QAngleToQAngle", Bridge_Benchmark_QAngleToQAngle); -DEFINE_NATIVE("Benchmark.ColorToColor", Bridge_Benchmark_ColorToColor); DEFINE_NATIVE("Benchmark.ComplexWithString", Bridge_Benchmark_ComplexWithString); \ No newline at end of file From dabd54e27efbdcfe52663b77233e912f386c6874 Mon Sep 17 00:00:00 2001 From: Ambr0se Date: Sat, 15 Nov 2025 16:07:25 +0800 Subject: [PATCH 3/8] chore: Archive performance report --- .../SwiftlyS2.Benchmarks/perf/cssharp.json | 117 ++++++++++ .../SwiftlyS2.Benchmarks/perf/modsharp.json | 125 ++++++++++ .../SwiftlyS2.Benchmarks/perf/swiftly.json | 221 ++++++++++++++++++ 3 files changed, 463 insertions(+) create mode 100644 managed/SwiftlyS2.Benchmarks/perf/cssharp.json create mode 100644 managed/SwiftlyS2.Benchmarks/perf/modsharp.json create mode 100644 managed/SwiftlyS2.Benchmarks/perf/swiftly.json diff --git a/managed/SwiftlyS2.Benchmarks/perf/cssharp.json b/managed/SwiftlyS2.Benchmarks/perf/cssharp.json new file mode 100644 index 000000000..991a88a4a --- /dev/null +++ b/managed/SwiftlyS2.Benchmarks/perf/cssharp.json @@ -0,0 +1,117 @@ +{ + "traceEvents": [ + { + "args": { + "name": "Swiftly" + }, + "cat": "__metadata", + "name": "process_name", + "ph": "M", + "pid": 1, + "tid": 1, + "ts": 0 + }, + { + "args": { + "name": "Swiftly Main" + }, + "cat": "__metadata", + "name": "thread_name", + "ph": "M", + "pid": 1, + "tid": 1, + "ts": 0 + }, + { + "args": { + "name": "Swiftly Profiler" + }, + "cat": "__metadata", + "name": "thread_name", + "ph": "M", + "pid": 1, + "tid": 2, + "ts": 0 + }, + { + "name": "StartTest Create Entities [CounterStrikeSharp] (min=149.56ms,avg=149.56ms,max=149.56ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 149560 + }, + { + "name": "SetupEntities Schema Write [CounterStrikeSharp] (min=13.74ms,avg=13.74ms,max=13.74ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 13741 + }, + { + "name": "SetupEntities Schema Read [CounterStrikeSharp] (min=1.45ms,avg=1.45ms,max=1.45ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 1447 + }, + { + "name": "SetupEntities Virtual Call [CounterStrikeSharp] (min=9.89ms,avg=9.89ms,max=9.89ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 9891 + }, + { + "name": "StartTest Setup Entities [CounterStrikeSharp] (min=25.56ms,avg=25.56ms,max=25.56ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 25563 + }, + { + "name": "Entity Spawn -\u003E Despawn [CounterStrikeSharp] (min=1.00\u03BCs,avg=2.00\u03BCs,max=0.22ms,count=1024)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 2220 + }, + { + "name": "StartTest Dispatch Spawn [CounterStrikeSharp] (min=13.44ms,avg=13.44ms,max=13.44ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 13436 + }, + { + "name": "OnTick Teleport All Entities [CounterStrikeSharp] (min=1.79ms,avg=2.10ms,max=8.89ms,count=1336)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 2800584 + }, + { + "name": "OnTick Call NetMessage [CounterStrikeSharp] (min=0.02ms,avg=0.03ms,max=0.80ms,count=1336)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 42369 + }, + { + "name": "CMsgSosStartSoundEvent Change Recipients [CounterStrikeSharp] (min=2.00\u03BCs,avg=9.00\u03BCs,max=0.43ms,count=99)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 979 + } + ] +} \ No newline at end of file diff --git a/managed/SwiftlyS2.Benchmarks/perf/modsharp.json b/managed/SwiftlyS2.Benchmarks/perf/modsharp.json new file mode 100644 index 000000000..8d2b4d08f --- /dev/null +++ b/managed/SwiftlyS2.Benchmarks/perf/modsharp.json @@ -0,0 +1,125 @@ +{ + "traceEvents": [ + { + "args": { + "name": "Swiftly" + }, + "cat": "__metadata", + "name": "process_name", + "ph": "M", + "pid": 1, + "tid": 1, + "ts": 0 + }, + { + "args": { + "name": "Swiftly Main" + }, + "cat": "__metadata", + "name": "thread_name", + "ph": "M", + "pid": 1, + "tid": 1, + "ts": 0 + }, + { + "args": { + "name": "Swiftly Profiler" + }, + "cat": "__metadata", + "name": "thread_name", + "ph": "M", + "pid": 1, + "tid": 2, + "ts": 0 + }, + { + "name": "StartTest Create Entities [ModSharp] (min=8.59ms,avg=8.59ms,max=8.59ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 8585 + }, + { + "name": "SetupEntities Schema Write [ModSharp] (min=3.93ms,avg=3.93ms,max=3.93ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 3931 + }, + { + "name": "SetupEntities Schema Read [ModSharp] (min=0.85ms,avg=0.85ms,max=0.85ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 847 + }, + { + "name": "SetupEntities Virtual Call [ModSharp] (min=0.74ms,avg=0.74ms,max=0.74ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 743 + }, + { + "name": "StartTest Setup Entities [ModSharp] (min=5.98ms,avg=5.98ms,max=5.98ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 5978 + }, + { + "name": "Entity Spawn -\u003E Despawn [ModSharp] (min=0.00\u03BCs,avg=0.00\u03BCs,max=0.08ms,count=1024)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 331 + }, + { + "name": "StartTest Dispatch Spawn [ModSharp] (min=12.28ms,avg=12.28ms,max=12.28ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 12283 + }, + { + "name": "OnTick Teleport All Entities [ModSharp] (min=0.33ms,avg=0.43ms,max=11.27ms,count=2205)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 955898 + }, + { + "name": "OnTick Send 1024 sv_cs_player_speed_has_hostage convar to all players [ModSharp] (min=0.04ms,avg=0.06ms,max=3.41ms,count=2205)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 130724 + }, + { + "name": "OnTick Call NetMessage [ModSharp] (min=4.00\u03BCs,avg=5.00\u03BCs,max=0.55ms,count=2205)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 12955 + }, + { + "name": "CMsgSosStartSoundEvent Change Recipients [ModSharp] (min=1.00\u03BCs,avg=5.00\u03BCs,max=0.44ms,count=160)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 849 + } + ] +} \ No newline at end of file diff --git a/managed/SwiftlyS2.Benchmarks/perf/swiftly.json b/managed/SwiftlyS2.Benchmarks/perf/swiftly.json new file mode 100644 index 000000000..8dccd18ae --- /dev/null +++ b/managed/SwiftlyS2.Benchmarks/perf/swiftly.json @@ -0,0 +1,221 @@ +{ + "traceEvents": [ + { + "args": { + "name": "Swiftly" + }, + "cat": "__metadata", + "name": "process_name", + "ph": "M", + "pid": 1, + "tid": 1, + "ts": 0 + }, + { + "args": { + "name": "Swiftly Main" + }, + "cat": "__metadata", + "name": "thread_name", + "ph": "M", + "pid": 1, + "tid": 1, + "ts": 0 + }, + { + "args": { + "name": "Swiftly Profiler" + }, + "cat": "__metadata", + "name": "thread_name", + "ph": "M", + "pid": 1, + "tid": 2, + "ts": 0 + }, + { + "name": "Event::OnCommandExecuteHook [SwiftlyS2] (min=4.00\u03BCs,avg=0.42ms,max=0.84ms,count=2)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 848 + }, + { + "name": "Event::OnConsoleOutput [SwiftlyS2] (min=1.00\u03BCs,avg=2.00\u03BCs,max=5.00\u03BCs,count=29)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 59 + }, + { + "name": "Event::OnTick [SwiftlyS2] (min=0.00\u03BCs,avg=0.00\u03BCs,max=0.03ms,count=3419)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 2254 + }, + { + "name": "Event::OnClientDisconnected [SwiftlyS2] (min=2.26ms,avg=2.26ms,max=2.26ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 2256 + }, + { + "name": "Event::OnEntitySpawned [PerformanceTest] (min=0.00\u03BCs,avg=1.00\u03BCs,max=0.38ms,count=1091)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 1160 + }, + { + "name": "NetMessageServerHookCallback::CMsgSosStartSoundEvent [PerformanceTest] (min=0.00\u03BCs,avg=0.04ms,max=1.43ms,count=234)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 8841 + }, + { + "name": "Event::OnTick [PerformanceTest] (min=0.00\u03BCs,avg=2.09ms,max=15.54ms,count=3419)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 7153587 + }, + { + "name": "NetMessageClientHookCallback::CCLCMsg_Move [PerformanceTest] (min=0.00\u03BCs,avg=0.02ms,max=1.86ms,count=3140)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 50127 + }, + { + "name": "Event::OnClientDisconnected [PerformanceTest] (min=0.02ms,avg=0.02ms,max=0.02ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 20 + }, + { + "name": "StartTest Create Entities [PerformanceTest] (min=45.48ms,avg=45.48ms,max=45.48ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 45480 + }, + { + "name": "SetupEntities Schema Write [PerformanceTest] (min=1.70ms,avg=1.70ms,max=1.70ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 1698 + }, + { + "name": "SetupEntities Schema Read [PerformanceTest] (min=0.24ms,avg=0.24ms,max=0.24ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 242 + }, + { + "name": "SetupEntities Virtual Call [PerformanceTest] (min=1.28ms,avg=1.28ms,max=1.28ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 1277 + }, + { + "name": "StartTest Setup Entities [PerformanceTest] (min=5.00ms,avg=5.00ms,max=5.00ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 4996 + }, + { + "name": "Entity Spawn -\u003E Despawn [PerformanceTest] (min=0.00\u03BCs,avg=0.00\u03BCs,max=0.38ms,count=1024)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 785 + }, + { + "name": "StartTest Dispatch Spawn [PerformanceTest] (min=22.00ms,avg=22.00ms,max=22.00ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 22002 + }, + { + "name": "CommandCallback::starttest [PerformanceTest] (min=85.65ms,avg=85.65ms,max=85.65ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 85655 + }, + { + "name": "CCLCMsg_Move [PerformanceTest] (min=3.00\u03BCs,avg=0.01ms,max=0.53ms,count=2506)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 35801 + }, + { + "name": "OnTick Teleport All Entities [PerformanceTest] (min=0.51ms,avg=0.62ms,max=3.78ms,count=2506)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 1560041 + }, + { + "name": "OnTick Send 1024 sv_cs_player_speed_has_hostage convar to all players [PerformanceTest] (min=1.88ms,avg=2.19ms,max=10.80ms,count=2506)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 5486880 + }, + { + "name": "OnTick Call NetMessage [PerformanceTest] (min=0.03ms,avg=0.04ms,max=2.76ms,count=2506)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 93488 + }, + { + "name": "CMsgSosStartSoundEvent Change Recipients [PerformanceTest] (min=0.03ms,avg=0.03ms,max=0.06ms,count=210)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 6588 + }, + { + "name": "CommandCallback::stoptest [PerformanceTest] (min=3.00ms,avg=3.00ms,max=3.00ms,count=1)", + "ph": "X", + "tid": 2, + "pid": 1, + "ts": 0, + "dur": 2999 + } + ] +} \ No newline at end of file From 6cb8ba7f5d3e818e06574117cc555742c8710f9e Mon Sep 17 00:00:00 2001 From: Ambr0se Date: Sat, 15 Nov 2025 17:48:46 +0800 Subject: [PATCH 4/8] perf: Refactor native interop generator for improved performance --- generator/native_generator/main.py | 152 +- .../PerformanceBenchmarkPlugin.cs | 290 +-- .../SwiftlyS2.Generated/Natives/Allocator.cs | 173 +- .../SwiftlyS2.Generated/Natives/Benchmark.cs | 389 +-- .../Natives/CEntityKeyValues.cs | 836 +++---- .../Natives/CommandLine.cs | 177 +- .../SwiftlyS2.Generated/Natives/Commands.cs | 184 +- .../Natives/ConsoleOutput.cs | 161 +- .../SwiftlyS2.Generated/Natives/Convars.cs | 1129 ++++----- .../SwiftlyS2.Generated/Natives/Database.cs | 101 +- .../Natives/EngineHelpers.cs | 284 ++- .../Natives/EntitySystem.cs | 600 +++-- .../src/SwiftlyS2.Generated/Natives/Events.cs | 310 +-- .../SwiftlyS2.Generated/Natives/FileSystem.cs | 407 ++-- .../SwiftlyS2.Generated/Natives/GameEvents.cs | 889 ++++--- .../src/SwiftlyS2.Generated/Natives/Hooks.cs | 224 +- .../Natives/MemoryHelpers.cs | 150 +- .../Natives/NetMessages.cs | 2102 ++++++++--------- .../SwiftlyS2.Generated/Natives/Offsets.cs | 48 +- .../SwiftlyS2.Generated/Natives/Patches.cs | 73 +- .../src/SwiftlyS2.Generated/Natives/Player.cs | 331 +-- .../Natives/PlayerManager.cs | 76 +- .../src/SwiftlyS2.Generated/Natives/Schema.cs | 132 +- .../Natives/ServerHelpers.cs | 64 +- .../SwiftlyS2.Generated/Natives/Signatures.cs | 48 +- .../src/SwiftlyS2.Generated/Natives/Sounds.cs | 481 ++-- .../src/SwiftlyS2.Generated/Natives/Test.cs | 17 +- .../src/SwiftlyS2.Generated/Natives/VGUI.cs | 78 +- .../Natives/VoiceManager.cs | 46 +- 29 files changed, 4622 insertions(+), 5330 deletions(-) diff --git a/generator/native_generator/main.py b/generator/native_generator/main.py index c30214c75..97f8f60ef 100644 --- a/generator/native_generator/main.py +++ b/generator/native_generator/main.py @@ -51,7 +51,7 @@ def __init__(self): def add_line(self, text: str = ""): if text.strip(): - self.lines.append(" " * self.indent_level + text) + self.lines.append(" " * self.indent_level + text) else: self.lines.append("") @@ -62,14 +62,15 @@ def dedent(self): self.indent_level = max(0, self.indent_level - 1) def add_block(self, header: str, content_func): - self.add_line(header + " {") + self.add_line(header) + self.add_line("{") self.indent() content_func() self.dedent() self.add_line("}") def get_code(self) -> str: - return "\n".join(self.lines) + return "\r\n".join(self.lines) def split_by_last_dot(value: str): @@ -94,7 +95,6 @@ def parse_native(lines: list[str]): writer.add_line("#pragma warning disable CS0649") writer.add_line("#pragma warning disable CS0169") writer.add_line() - writer.add_line("using System.Buffers;") writer.add_line("using System.Text;") writer.add_line("using System.Threading;") writer.add_line("using SwiftlyS2.Shared.Natives;") @@ -158,23 +158,64 @@ def write_method_content(): if is_marked_sync: writer.add_block("if (Thread.CurrentThread.ManagedThreadId != _MainThreadID)", lambda: writer.add_line('throw new InvalidOperationException("This method can only be called from the main thread.");')) - string_params = [] - bytes_params = [] - pool_declared = False - - for t, n in param_signatures: - if t == "string": - if not pool_declared: - writer.add_line("var pool = ArrayPool.Shared;") - pool_declared = True - writer.add_line(f"var {n}Length = Encoding.UTF8.GetByteCount({n});") - writer.add_line(f"var {n}Buffer = pool.Rent({n}Length + 1);") - writer.add_line(f"Encoding.UTF8.GetBytes({n}, {n}Buffer);") - writer.add_line(f"{n}Buffer[{n}Length] = 0;") - string_params.append(n) - elif t == "byte[]": - writer.add_line(f"var {n}Length = {n}.Length;") - bytes_params.append(n) + string_params = [n for t, n in param_signatures if t == "string"] + bytes_params = [n for t, n in param_signatures if t == "byte[]"] + + for param in bytes_params: + writer.add_line(f"var {param}Length = {param}.Length;") + + if not string_params: + fixed_blocks = [] + for param in bytes_params: + fixed_blocks.append(f"fixed (byte* {param}BufferPtr = {param})") + + def write_simple_call(): + call_args = [] + for t, n in param_signatures: + if t == "byte[]": + call_args.extend([f"{n}BufferPtr", f"{n}Length"]) + elif t == "bool": + call_args.append(f"{n} ? (byte)1 : (byte)0") + else: + call_args.append(n) + + if is_buffer_return(return_type): + first_call_args = ["null"] + call_args + writer.add_line(f"var ret = _{function_name}({', '.join(first_call_args)});") + writer.add_line("var retBuffer = new byte[ret];") + + def write_ret_fixed(): + second_call_args = ["retBufferPtr"] + call_args + writer.add_line(f"ret = _{function_name}({', '.join(second_call_args)});") + if return_type == "string": + writer.add_line("return Encoding.UTF8.GetString(retBufferPtr, ret);") + else: + writer.add_line("var retBytes = new byte[ret];") + writer.add_line("for (int i = 0; i < ret; i++) retBytes[i] = retBufferPtr[i];") + writer.add_line("return retBytes;") + + writer.add_block("fixed (byte* retBufferPtr = retBuffer)", write_ret_fixed) + else: + if return_type == "void": + writer.add_line(f"_{function_name}({', '.join(call_args)});") + else: + writer.add_line(f"var ret = _{function_name}({', '.join(call_args)});") + writer.add_line("return ret == 1;" if return_type == "bool" else "return ret;") + + def write_with_fixed_blocks(blocks, index=0): + if index < len(blocks): + writer.add_block(blocks[index], lambda: write_with_fixed_blocks(blocks, index + 1)) + else: + write_simple_call() + + if fixed_blocks: + write_with_fixed_blocks(fixed_blocks) + else: + write_simple_call() + return + + for param in string_params: + writer.add_line(f"byte[] {param}Buffer = Encoding.UTF8.GetBytes({param});") fixed_blocks = [] for param in string_params: @@ -184,77 +225,39 @@ def write_method_content(): def write_native_call(): call_args = [] + for t, n in param_signatures: + if t == "string": + call_args.append(f"{n}BufferPtr") + elif t == "byte[]": + call_args.extend([f"{n}BufferPtr", f"{n}Length"]) + elif t == "bool": + call_args.append(f"{n} ? (byte)1 : (byte)0") + else: + call_args.append(n) if is_buffer_return(return_type): - first_call_args = ["null"] - for t, n in param_signatures: - if t == "string": - first_call_args.append(f"{n}BufferPtr") - elif t == "byte[]": - first_call_args.extend([f"{n}BufferPtr", f"{n}Length"]) - elif t == "bool": - first_call_args.append(f"{n} ? (byte)1 : (byte)0") - else: - first_call_args.append(n) - + first_call_args = ["null"] + call_args writer.add_line(f"var ret = _{function_name}({', '.join(first_call_args)});") - - if not pool_declared: - writer.add_line("var pool = ArrayPool.Shared;") - writer.add_line("var retBuffer = pool.Rent(ret + 1);") + writer.add_line("var retBuffer = new byte[ret];") def write_ret_fixed(): - second_call_args = ["retBufferPtr"] - for t, n in param_signatures: - if t == "string": - second_call_args.append(f"{n}BufferPtr") - elif t == "byte[]": - second_call_args.extend([f"{n}BufferPtr", f"{n}Length"]) - elif t == "bool": - second_call_args.append(f"{n} ? (byte)1 : (byte)0") - else: - second_call_args.append(n) - + second_call_args = ["retBufferPtr"] + call_args writer.add_line(f"ret = _{function_name}({', '.join(second_call_args)});") - if return_type == "string": - writer.add_line("var retString = Encoding.UTF8.GetString(retBufferPtr, ret);") - writer.add_line("pool.Return(retBuffer);") - for param in string_params: - writer.add_line(f"pool.Return({param}Buffer);") - writer.add_line("return retString;") + writer.add_line("return Encoding.UTF8.GetString(retBufferPtr, ret);") else: writer.add_line("var retBytes = new byte[ret];") writer.add_line("for (int i = 0; i < ret; i++) retBytes[i] = retBufferPtr[i];") - writer.add_line("pool.Return(retBuffer);") - for param in string_params: - writer.add_line(f"pool.Return({param}Buffer);") writer.add_line("return retBytes;") writer.add_block("fixed (byte* retBufferPtr = retBuffer)", write_ret_fixed) - else: - for t, n in param_signatures: - if t == "string": - call_args.append(f"{n}BufferPtr") - elif t == "byte[]": - call_args.extend([f"{n}BufferPtr", f"{n}Length"]) - elif t == "bool": - call_args.append(f"{n} ? (byte)1 : (byte)0") - else: - call_args.append(n) - if return_type == "void": writer.add_line(f"_{function_name}({', '.join(call_args)});") else: writer.add_line(f"var ret = _{function_name}({', '.join(call_args)});") - - for param in string_params: - writer.add_line(f"pool.Return({param}Buffer);") - - if return_type != "void": - writer.add_line("return ret == 1;" if return_type == "bool" else f"return ret;") - + writer.add_line("return ret == 1;" if return_type == "bool" else "return ret;") + def write_with_fixed_blocks(blocks, index=0): if index < len(blocks): writer.add_block(blocks[index], lambda: write_with_fixed_blocks(blocks, index + 1)) @@ -267,6 +270,7 @@ def write_with_fixed_blocks(blocks, index=0): write_native_call() writer.add_block(f"public unsafe static {RETURN_TYPE_MAP[return_type]} {function_name}({method_signature})", write_method_content) + # Benchmark class should be public for external access access_modifier = "public" if class_name == "Benchmark" else "internal" writer.add_block(f"{access_modifier} static class Native{class_name}", write_class_content) diff --git a/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs b/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs index 259d5e2e2..86ee0f316 100644 --- a/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs +++ b/managed/SwiftlyS2.Benchmarks/PerformanceBenchmarkPlugin.cs @@ -84,59 +84,59 @@ public class NativeInteropBenchmark public static void SetCore( ISwiftlyCore sw2Core ) { } - [Benchmark(Baseline = true, Description = "Baseline: Pure C# method")] - public int Baseline_ManagedCall() - { - return 1337; - } - - [Benchmark(Description = "Baseline: P/Invoke (usermode)")] - public int Baseline_PInvoke_Usermode() - { - return SwiftlyS2BenchmarkPInvoke(); - } - - [Benchmark(Description = "Baseline: P/Invoke (kernel32)")] - public int Baseline_PInvoke_Kernel() - { - return GetCurrentProcessId(); - } - - [Benchmark(Description = "Pattern 1: void -> void")] - public void Pattern1_VoidToVoid() - { - NativeBenchmark.VoidToVoid(); - } - - [Benchmark(Description = "Pattern 2: void -> int32")] - public int Pattern2_VoidToInt32() - { - return NativeBenchmark.GetInt32(); - } - - [Benchmark(Description = "Pattern 3: void -> ptr")] - public IntPtr Pattern3_VoidToPtr() - { - return NativeBenchmark.GetPtr(); - } - - [Benchmark(Description = "Pattern 4: int32 -> int32")] - public int Pattern4_Int32ToInt32() - { - return NativeBenchmark.Int32ToInt32(42); - } - - [Benchmark(Description = "Pattern 5: float -> float")] - public float Pattern5_FloatToFloat() - { - return NativeBenchmark.FloatToFloat(3.14f); - } - - [Benchmark(Description = "Pattern 6: string -> string")] - public string Pattern6_StringToString() - { - return NativeBenchmark.StringToString("test"); - } + // [Benchmark(Baseline = true, Description = "Baseline: Pure C# method")] + // public int Baseline_ManagedCall() + // { + // return 1337; + // } + + // [Benchmark(Description = "Baseline: P/Invoke (usermode)")] + // public int Baseline_PInvoke_Usermode() + // { + // return SwiftlyS2BenchmarkPInvoke(); + // } + + // [Benchmark(Description = "Baseline: P/Invoke (kernel32)")] + // public int Baseline_PInvoke_Kernel() + // { + // return GetCurrentProcessId(); + // } + + // [Benchmark(Description = "Pattern 1: void -> void")] + // public void Pattern1_VoidToVoid() + // { + // NativeBenchmark.VoidToVoid(); + // } + + // [Benchmark(Description = "Pattern 2: void -> int32")] + // public int Pattern2_VoidToInt32() + // { + // return NativeBenchmark.GetInt32(); + // } + + // [Benchmark(Description = "Pattern 3: void -> ptr")] + // public IntPtr Pattern3_VoidToPtr() + // { + // return NativeBenchmark.GetPtr(); + // } + + // [Benchmark(Description = "Pattern 4: int32 -> int32")] + // public int Pattern4_Int32ToInt32() + // { + // return NativeBenchmark.Int32ToInt32(42); + // } + + // [Benchmark(Description = "Pattern 5: float -> float")] + // public float Pattern5_FloatToFloat() + // { + // return NativeBenchmark.FloatToFloat(3.14f); + // } + + // [Benchmark(Description = "Pattern 6: string -> string")] + // public string Pattern6_StringToString() + // { + // return NativeBenchmark.StringToString("test"); + // } [Benchmark(Description = "Pattern 7: string -> ptr")] public IntPtr Pattern7_StringToPtr() @@ -144,11 +144,11 @@ public IntPtr Pattern7_StringToPtr() return NativeBenchmark.StringToPtr("test"); } - [Benchmark(Description = "Pattern 8: 5 params")] - public int Pattern8_MultiPrimitives() - { - return NativeBenchmark.MultiPrimitives(IntPtr.Zero, 100, 3.14f, true, 999UL); - } + // [Benchmark(Description = "Pattern 8: 5 params")] + // public int Pattern8_MultiPrimitives() + // { + // return NativeBenchmark.MultiPrimitives(IntPtr.Zero, 100, 3.14f, true, 999UL); + // } [Benchmark(Description = "Pattern 9: 5 params + 1 string")] public int Pattern9_MultiWithOneString() @@ -162,93 +162,93 @@ public void Pattern10_MultiWithTwoStrings() NativeBenchmark.MultiWithTwoStrings(IntPtr.Zero, "test1", IntPtr.Zero, "test2", 100); } - [Benchmark(Description = "Pattern 11: void -> bool")] - public bool Pattern11_VoidToBool() - { - return NativeBenchmark.GetBool(); - } - - [Benchmark(Description = "Pattern 12: void -> uint32")] - public uint Pattern12_VoidToUInt32() - { - return NativeBenchmark.GetUInt32(); - } - - [Benchmark(Description = "Pattern 13: void -> int64")] - public long Pattern13_VoidToInt64() - { - return NativeBenchmark.GetInt64(); - } - - [Benchmark(Description = "Pattern 14: void -> uint64")] - public ulong Pattern14_VoidToUInt64() - { - return NativeBenchmark.GetUInt64(); - } - - [Benchmark(Description = "Pattern 15: void -> float")] - public float Pattern15_VoidToFloat() - { - return NativeBenchmark.GetFloat(); - } - - [Benchmark(Description = "Pattern 16: void -> double")] - public double Pattern16_VoidToDouble() - { - return NativeBenchmark.GetDouble(); - } - - [Benchmark(Description = "Pattern 17: bool -> bool")] - public bool Pattern17_BoolToBool() - { - return NativeBenchmark.BoolToBool(true); - } - - [Benchmark(Description = "Pattern 18: uint32 -> uint32")] - public uint Pattern18_UInt32ToUInt32() - { - return NativeBenchmark.UInt32ToUInt32(1337u); - } - - [Benchmark(Description = "Pattern 19: int64 -> int64")] - public long Pattern19_Int64ToInt64() - { - return NativeBenchmark.Int64ToInt64(9999999L); - } - - [Benchmark(Description = "Pattern 20: uint64 -> uint64")] - public ulong Pattern20_UInt64ToUInt64() - { - return NativeBenchmark.UInt64ToUInt64(9999999UL); - } - - [Benchmark(Description = "Pattern 21: double -> double")] - public double Pattern21_DoubleToDouble() - { - return NativeBenchmark.DoubleToDouble(3.14159); - } - - [Benchmark(Description = "Pattern 22: ptr -> ptr")] - public IntPtr Pattern22_PtrToPtr() - { - return NativeBenchmark.PtrToPtr(new IntPtr(0x1234)); - } - - [Benchmark(Description = "Pattern 23: Vector -> Vector")] - public unsafe Vector Pattern23_VectorToVector() - { - Vector result; - NativeBenchmark.VectorToVector((nint)(&result), new Vector(1.0f, 2.0f, 3.0f)); - return result; - } - - [Benchmark(Description = "Pattern 24: QAngle -> QAngle")] - public unsafe QAngle Pattern24_QAngleToQAngle() - { - QAngle result; - NativeBenchmark.QAngleToQAngle((nint)(&result), new QAngle(45.0f, 90.0f, 0.0f)); - return result; - } + // [Benchmark(Description = "Pattern 11: void -> bool")] + // public bool Pattern11_VoidToBool() + // { + // return NativeBenchmark.GetBool(); + // } + + // [Benchmark(Description = "Pattern 12: void -> uint32")] + // public uint Pattern12_VoidToUInt32() + // { + // return NativeBenchmark.GetUInt32(); + // } + + // [Benchmark(Description = "Pattern 13: void -> int64")] + // public long Pattern13_VoidToInt64() + // { + // return NativeBenchmark.GetInt64(); + // } + + // [Benchmark(Description = "Pattern 14: void -> uint64")] + // public ulong Pattern14_VoidToUInt64() + // { + // return NativeBenchmark.GetUInt64(); + // } + + // [Benchmark(Description = "Pattern 15: void -> float")] + // public float Pattern15_VoidToFloat() + // { + // return NativeBenchmark.GetFloat(); + // } + + // [Benchmark(Description = "Pattern 16: void -> double")] + // public double Pattern16_VoidToDouble() + // { + // return NativeBenchmark.GetDouble(); + // } + + // [Benchmark(Description = "Pattern 17: bool -> bool")] + // public bool Pattern17_BoolToBool() + // { + // return NativeBenchmark.BoolToBool(true); + // } + + // [Benchmark(Description = "Pattern 18: uint32 -> uint32")] + // public uint Pattern18_UInt32ToUInt32() + // { + // return NativeBenchmark.UInt32ToUInt32(1337u); + // } + + // [Benchmark(Description = "Pattern 19: int64 -> int64")] + // public long Pattern19_Int64ToInt64() + // { + // return NativeBenchmark.Int64ToInt64(9999999L); + // } + + // [Benchmark(Description = "Pattern 20: uint64 -> uint64")] + // public ulong Pattern20_UInt64ToUInt64() + // { + // return NativeBenchmark.UInt64ToUInt64(9999999UL); + // } + + // [Benchmark(Description = "Pattern 21: double -> double")] + // public double Pattern21_DoubleToDouble() + // { + // return NativeBenchmark.DoubleToDouble(3.14159); + // } + + // [Benchmark(Description = "Pattern 22: ptr -> ptr")] + // public IntPtr Pattern22_PtrToPtr() + // { + // return NativeBenchmark.PtrToPtr(new IntPtr(0x1234)); + // } + + // [Benchmark(Description = "Pattern 23: Vector -> Vector")] + // public unsafe Vector Pattern23_VectorToVector() + // { + // Vector result; + // NativeBenchmark.VectorToVector((nint)(&result), new Vector(1.0f, 2.0f, 3.0f)); + // return result; + // } + + // [Benchmark(Description = "Pattern 24: QAngle -> QAngle")] + // public unsafe QAngle Pattern24_QAngleToQAngle() + // { + // QAngle result; + // NativeBenchmark.QAngleToQAngle((nint)(&result), new QAngle(45.0f, 90.0f, 0.0f)); + // return result; + // } [Benchmark(Description = "Pattern 25: Vector + QAngle + String)")] public void Pattern26_ComplexWithString() diff --git a/managed/src/SwiftlyS2.Generated/Natives/Allocator.cs b/managed/src/SwiftlyS2.Generated/Natives/Allocator.cs index 945494fc4..717ea2d0f 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Allocator.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Allocator.cs @@ -1,106 +1,105 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeAllocator { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _Alloc; - - public unsafe static nint Alloc(ulong size) { - var ret = _Alloc(size); - return ret; - } - - private unsafe static delegate* unmanaged _TrackedAlloc; - - public unsafe static nint TrackedAlloc(ulong size, string identifier, string details) { - var pool = ArrayPool.Shared; - var identifierLength = Encoding.UTF8.GetByteCount(identifier); - var identifierBuffer = pool.Rent(identifierLength + 1); - Encoding.UTF8.GetBytes(identifier, identifierBuffer); - identifierBuffer[identifierLength] = 0; - var detailsLength = Encoding.UTF8.GetByteCount(details); - var detailsBuffer = pool.Rent(detailsLength + 1); - Encoding.UTF8.GetBytes(details, detailsBuffer); - detailsBuffer[detailsLength] = 0; - fixed (byte* identifierBufferPtr = identifierBuffer) { - fixed (byte* detailsBufferPtr = detailsBuffer) { - var ret = _TrackedAlloc(size, identifierBufferPtr, detailsBufferPtr); - pool.Return(identifierBuffer); - pool.Return(detailsBuffer); +internal static class NativeAllocator +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _Alloc; + + public unsafe static nint Alloc(ulong size) + { + var ret = _Alloc(size); + return ret; + } + + private unsafe static delegate* unmanaged _TrackedAlloc; + + public unsafe static nint TrackedAlloc(ulong size, string identifier, string details) + { + byte[] identifierBuffer = Encoding.UTF8.GetBytes(identifier); + byte[] detailsBuffer = Encoding.UTF8.GetBytes(details); + fixed (byte* identifierBufferPtr = identifierBuffer) + { + fixed (byte* detailsBufferPtr = detailsBuffer) + { + var ret = _TrackedAlloc(size, identifierBufferPtr, detailsBufferPtr); + return ret; + } + } + } + + private unsafe static delegate* unmanaged _Free; + + public unsafe static void Free(nint pointer) + { + _Free(pointer); + } + + private unsafe static delegate* unmanaged _Resize; + + public unsafe static nint Resize(nint pointer, ulong new_size) + { + var ret = _Resize(pointer, new_size); + return ret; + } + + private unsafe static delegate* unmanaged _GetSize; + + /// + /// works only for pointers allocated through Memory.Allocator + /// + public unsafe static ulong GetSize(nint pointer) + { + var ret = _GetSize(pointer); + return ret; + } + + private unsafe static delegate* unmanaged _GetTotalAllocated; + + public unsafe static ulong GetTotalAllocated() + { + var ret = _GetTotalAllocated(); return ret; - } } - } - - private unsafe static delegate* unmanaged _Free; - - public unsafe static void Free(nint pointer) { - _Free(pointer); - } - - private unsafe static delegate* unmanaged _Resize; - - public unsafe static nint Resize(nint pointer, ulong new_size) { - var ret = _Resize(pointer, new_size); - return ret; - } - - private unsafe static delegate* unmanaged _GetSize; - - /// - /// works only for pointers allocated through Memory.Allocator - /// - public unsafe static ulong GetSize(nint pointer) { - var ret = _GetSize(pointer); - return ret; - } - - private unsafe static delegate* unmanaged _GetTotalAllocated; - - public unsafe static ulong GetTotalAllocated() { - var ret = _GetTotalAllocated(); - return ret; - } - - private unsafe static delegate* unmanaged _GetAllocatedByTrackedIdentifier; - - public unsafe static ulong GetAllocatedByTrackedIdentifier(string identifier) { - var pool = ArrayPool.Shared; - var identifierLength = Encoding.UTF8.GetByteCount(identifier); - var identifierBuffer = pool.Rent(identifierLength + 1); - Encoding.UTF8.GetBytes(identifier, identifierBuffer); - identifierBuffer[identifierLength] = 0; - fixed (byte* identifierBufferPtr = identifierBuffer) { - var ret = _GetAllocatedByTrackedIdentifier(identifierBufferPtr); - pool.Return(identifierBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetAllocatedByTrackedIdentifier; + + public unsafe static ulong GetAllocatedByTrackedIdentifier(string identifier) + { + byte[] identifierBuffer = Encoding.UTF8.GetBytes(identifier); + fixed (byte* identifierBufferPtr = identifierBuffer) + { + var ret = _GetAllocatedByTrackedIdentifier(identifierBufferPtr); + return ret; + } } - } - private unsafe static delegate* unmanaged _IsPointerValid; + private unsafe static delegate* unmanaged _IsPointerValid; - public unsafe static bool IsPointerValid(nint pointer) { - var ret = _IsPointerValid(pointer); - return ret == 1; - } + public unsafe static bool IsPointerValid(nint pointer) + { + var ret = _IsPointerValid(pointer); + return ret == 1; + } - private unsafe static delegate* unmanaged _Copy; + private unsafe static delegate* unmanaged _Copy; - public unsafe static void Copy(nint dst, nint src, ulong size) { - _Copy(dst, src, size); - } + public unsafe static void Copy(nint dst, nint src, ulong size) + { + _Copy(dst, src, size); + } - private unsafe static delegate* unmanaged _Move; + private unsafe static delegate* unmanaged _Move; - public unsafe static void Move(nint dst, nint src, ulong size) { - _Move(dst, src, size); - } + public unsafe static void Move(nint dst, nint src, ulong size) + { + _Move(dst, src, size); + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs index 57e4a6fbc..d14d4ed99 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs @@ -1,236 +1,237 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -public static class NativeBenchmark { - private static int _MainThreadID; +public static class NativeBenchmark +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _VoidToVoid; + private unsafe static delegate* unmanaged _VoidToVoid; - public unsafe static void VoidToVoid() { - _VoidToVoid(); - } + public unsafe static void VoidToVoid() + { + _VoidToVoid(); + } - private unsafe static delegate* unmanaged _GetBool; + private unsafe static delegate* unmanaged _GetBool; - public unsafe static bool GetBool() { - var ret = _GetBool(); - return ret == 1; - } + public unsafe static bool GetBool() + { + var ret = _GetBool(); + return ret == 1; + } - private unsafe static delegate* unmanaged _GetInt32; + private unsafe static delegate* unmanaged _GetInt32; - public unsafe static int GetInt32() { - var ret = _GetInt32(); - return ret; - } + public unsafe static int GetInt32() + { + var ret = _GetInt32(); + return ret; + } - private unsafe static delegate* unmanaged _GetUInt32; + private unsafe static delegate* unmanaged _GetUInt32; - public unsafe static uint GetUInt32() { - var ret = _GetUInt32(); - return ret; - } + public unsafe static uint GetUInt32() + { + var ret = _GetUInt32(); + return ret; + } - private unsafe static delegate* unmanaged _GetInt64; + private unsafe static delegate* unmanaged _GetInt64; - public unsafe static long GetInt64() { - var ret = _GetInt64(); - return ret; - } + public unsafe static long GetInt64() + { + var ret = _GetInt64(); + return ret; + } - private unsafe static delegate* unmanaged _GetUInt64; + private unsafe static delegate* unmanaged _GetUInt64; - public unsafe static ulong GetUInt64() { - var ret = _GetUInt64(); - return ret; - } + public unsafe static ulong GetUInt64() + { + var ret = _GetUInt64(); + return ret; + } - private unsafe static delegate* unmanaged _GetFloat; + private unsafe static delegate* unmanaged _GetFloat; - public unsafe static float GetFloat() { - var ret = _GetFloat(); - return ret; - } + public unsafe static float GetFloat() + { + var ret = _GetFloat(); + return ret; + } - private unsafe static delegate* unmanaged _GetDouble; + private unsafe static delegate* unmanaged _GetDouble; - public unsafe static double GetDouble() { - var ret = _GetDouble(); - return ret; - } + public unsafe static double GetDouble() + { + var ret = _GetDouble(); + return ret; + } - private unsafe static delegate* unmanaged _GetPtr; + private unsafe static delegate* unmanaged _GetPtr; - public unsafe static nint GetPtr() { - var ret = _GetPtr(); - return ret; - } + public unsafe static nint GetPtr() + { + var ret = _GetPtr(); + return ret; + } - private unsafe static delegate* unmanaged _BoolToBool; + private unsafe static delegate* unmanaged _BoolToBool; - public unsafe static bool BoolToBool(bool value) { - var ret = _BoolToBool(value ? (byte)1 : (byte)0); - return ret == 1; - } + public unsafe static bool BoolToBool(bool value) + { + var ret = _BoolToBool(value ? (byte)1 : (byte)0); + return ret == 1; + } - private unsafe static delegate* unmanaged _Int32ToInt32; + private unsafe static delegate* unmanaged _Int32ToInt32; - public unsafe static int Int32ToInt32(int value) { - var ret = _Int32ToInt32(value); - return ret; - } + public unsafe static int Int32ToInt32(int value) + { + var ret = _Int32ToInt32(value); + return ret; + } - private unsafe static delegate* unmanaged _UInt32ToUInt32; + private unsafe static delegate* unmanaged _UInt32ToUInt32; - public unsafe static uint UInt32ToUInt32(uint value) { - var ret = _UInt32ToUInt32(value); - return ret; - } + public unsafe static uint UInt32ToUInt32(uint value) + { + var ret = _UInt32ToUInt32(value); + return ret; + } + + private unsafe static delegate* unmanaged _Int64ToInt64; + + public unsafe static long Int64ToInt64(long value) + { + var ret = _Int64ToInt64(value); + return ret; + } + + private unsafe static delegate* unmanaged _UInt64ToUInt64; - private unsafe static delegate* unmanaged _Int64ToInt64; + public unsafe static ulong UInt64ToUInt64(ulong value) + { + var ret = _UInt64ToUInt64(value); + return ret; + } - public unsafe static long Int64ToInt64(long value) { - var ret = _Int64ToInt64(value); - return ret; - } + private unsafe static delegate* unmanaged _FloatToFloat; - private unsafe static delegate* unmanaged _UInt64ToUInt64; - - public unsafe static ulong UInt64ToUInt64(ulong value) { - var ret = _UInt64ToUInt64(value); - return ret; - } + public unsafe static float FloatToFloat(float value) + { + var ret = _FloatToFloat(value); + return ret; + } - private unsafe static delegate* unmanaged _FloatToFloat; + private unsafe static delegate* unmanaged _DoubleToDouble; - public unsafe static float FloatToFloat(float value) { - var ret = _FloatToFloat(value); - return ret; - } - - private unsafe static delegate* unmanaged _DoubleToDouble; + public unsafe static double DoubleToDouble(double value) + { + var ret = _DoubleToDouble(value); + return ret; + } - public unsafe static double DoubleToDouble(double value) { - var ret = _DoubleToDouble(value); - return ret; - } + private unsafe static delegate* unmanaged _PtrToPtr; - private unsafe static delegate* unmanaged _PtrToPtr; + public unsafe static nint PtrToPtr(nint value) + { + var ret = _PtrToPtr(value); + return ret; + } - public unsafe static nint PtrToPtr(nint value) { - var ret = _PtrToPtr(value); - return ret; - } - - private unsafe static delegate* unmanaged _StringToString; - - public unsafe static string StringToString(string value) { - var pool = ArrayPool.Shared; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* valueBufferPtr = valueBuffer) { - var ret = _StringToString(null, valueBufferPtr); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _StringToString(retBufferPtr, valueBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(valueBuffer); - return retString; - } - } - } - - private unsafe static delegate* unmanaged _StringToPtr; - - public unsafe static nint StringToPtr(string value) { - var pool = ArrayPool.Shared; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* valueBufferPtr = valueBuffer) { - var ret = _StringToPtr(valueBufferPtr); - pool.Return(valueBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _MultiPrimitives; - - public unsafe static int MultiPrimitives(nint p1, int i1, float f1, bool b1, ulong u1) { - var ret = _MultiPrimitives(p1, i1, f1, b1 ? (byte)1 : (byte)0, u1); - return ret; - } - - private unsafe static delegate* unmanaged _MultiWithOneString; - - public unsafe static int MultiWithOneString(nint p1, string s1, nint p2, int i1, float f1) { - var pool = ArrayPool.Shared; - var s1Length = Encoding.UTF8.GetByteCount(s1); - var s1Buffer = pool.Rent(s1Length + 1); - Encoding.UTF8.GetBytes(s1, s1Buffer); - s1Buffer[s1Length] = 0; - fixed (byte* s1BufferPtr = s1Buffer) { - var ret = _MultiWithOneString(p1, s1BufferPtr, p2, i1, f1); - pool.Return(s1Buffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _MultiWithTwoStrings; - - public unsafe static void MultiWithTwoStrings(nint p1, string s1, nint p2, string s2, int i1) { - var pool = ArrayPool.Shared; - var s1Length = Encoding.UTF8.GetByteCount(s1); - var s1Buffer = pool.Rent(s1Length + 1); - Encoding.UTF8.GetBytes(s1, s1Buffer); - s1Buffer[s1Length] = 0; - var s2Length = Encoding.UTF8.GetByteCount(s2); - var s2Buffer = pool.Rent(s2Length + 1); - Encoding.UTF8.GetBytes(s2, s2Buffer); - s2Buffer[s2Length] = 0; - fixed (byte* s1BufferPtr = s1Buffer) { - fixed (byte* s2BufferPtr = s2Buffer) { - _MultiWithTwoStrings(p1, s1BufferPtr, p2, s2BufferPtr, i1); - pool.Return(s1Buffer); - pool.Return(s2Buffer); - } - } - } - - private unsafe static delegate* unmanaged _VectorToVector; - - public unsafe static void VectorToVector(nint result, Vector value) { - _VectorToVector(result, value); - } - - private unsafe static delegate* unmanaged _QAngleToQAngle; - - public unsafe static void QAngleToQAngle(nint result, QAngle value) { - _QAngleToQAngle(result, value); - } - - private unsafe static delegate* unmanaged _ComplexWithString; - - public unsafe static void ComplexWithString(nint entity, Vector pos, string name, QAngle angle) { - var pool = ArrayPool.Shared; - var nameLength = Encoding.UTF8.GetByteCount(name); - var nameBuffer = pool.Rent(nameLength + 1); - Encoding.UTF8.GetBytes(name, nameBuffer); - nameBuffer[nameLength] = 0; - fixed (byte* nameBufferPtr = nameBuffer) { - _ComplexWithString(entity, pos, nameBufferPtr, angle); - pool.Return(nameBuffer); - } - } + private unsafe static delegate* unmanaged _StringToString; + + public unsafe static string StringToString(string value) + { + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* valueBufferPtr = valueBuffer) + { + var ret = _StringToString(null, valueBufferPtr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _StringToString(retBufferPtr, valueBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } + } + + private unsafe static delegate* unmanaged _StringToPtr; + + public unsafe static nint StringToPtr(string value) + { + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* valueBufferPtr = valueBuffer) + { + var ret = _StringToPtr(valueBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _MultiPrimitives; + + public unsafe static int MultiPrimitives(nint p1, int i1, float f1, bool b1, ulong u1) + { + var ret = _MultiPrimitives(p1, i1, f1, b1 ? (byte)1 : (byte)0, u1); + return ret; + } + + private unsafe static delegate* unmanaged _MultiWithOneString; + + public unsafe static int MultiWithOneString(nint p1, string s1, nint p2, int i1, float f1) + { + byte[] s1Buffer = Encoding.UTF8.GetBytes(s1); + fixed (byte* s1BufferPtr = s1Buffer) + { + var ret = _MultiWithOneString(p1, s1BufferPtr, p2, i1, f1); + return ret; + } + } + + private unsafe static delegate* unmanaged _MultiWithTwoStrings; + + public unsafe static void MultiWithTwoStrings(nint p1, string s1, nint p2, string s2, int i1) + { + byte[] s1Buffer = Encoding.UTF8.GetBytes(s1); + byte[] s2Buffer = Encoding.UTF8.GetBytes(s2); + fixed (byte* s1BufferPtr = s1Buffer) + { + fixed (byte* s2BufferPtr = s2Buffer) + { + _MultiWithTwoStrings(p1, s1BufferPtr, p2, s2BufferPtr, i1); + } + } + } + + private unsafe static delegate* unmanaged _VectorToVector; + + public unsafe static void VectorToVector(nint result, Vector value) + { + _VectorToVector(result, value); + } + + private unsafe static delegate* unmanaged _QAngleToQAngle; + + public unsafe static void QAngleToQAngle(nint result, QAngle value) + { + _QAngleToQAngle(result, value); + } + + private unsafe static delegate* unmanaged _ComplexWithString; + + public unsafe static void ComplexWithString(nint entity, Vector pos, string name, QAngle angle) + { + byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + fixed (byte* nameBufferPtr = nameBuffer) + { + _ComplexWithString(entity, pos, nameBufferPtr, angle); + } + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs b/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs index 0370bae5f..695b71b79 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs @@ -1,474 +1,382 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeCEntityKeyValues { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _Allocate; - - public unsafe static nint Allocate() { - var ret = _Allocate(); - return ret; - } - - private unsafe static delegate* unmanaged _Deallocate; - - public unsafe static void Deallocate(nint keyvalues) { - _Deallocate(keyvalues); - } - - private unsafe static delegate* unmanaged _GetBool; - - public unsafe static bool GetBool(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetBool(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret == 1; - } - } - - private unsafe static delegate* unmanaged _GetInt; - - public unsafe static int GetInt(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetInt(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetUint; - - public unsafe static uint GetUint(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetUint(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetInt64; - - public unsafe static long GetInt64(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetInt64(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetUint64; - - public unsafe static ulong GetUint64(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetUint64(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetFloat; - - public unsafe static float GetFloat(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetFloat(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetDouble; - - public unsafe static double GetDouble(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetDouble(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetString; - - public unsafe static string GetString(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetString(null, keyvalues, keyBufferPtr); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetString(retBufferPtr, keyvalues, keyBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(keyBuffer); - return retString; - } - } - } - - private unsafe static delegate* unmanaged _GetPtr; - - public unsafe static nint GetPtr(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetPtr(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetStringToken; - - public unsafe static CUtlStringToken GetStringToken(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetStringToken(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetColor; - - public unsafe static Color GetColor(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetColor(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetVector; - - public unsafe static Vector GetVector(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetVector(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetVector2D; - - public unsafe static Vector2D GetVector2D(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetVector2D(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetVector4D; - - public unsafe static Vector4D GetVector4D(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetVector4D(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetQAngle; - - public unsafe static QAngle GetQAngle(nint keyvalues, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetQAngle(keyvalues, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetBool; - - public unsafe static void SetBool(nint keyvalues, string key, bool value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetBool(keyvalues, keyBufferPtr, value ? (byte)1 : (byte)0); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetInt; - - public unsafe static void SetInt(nint keyvalues, string key, int value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetInt(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetUint; - - public unsafe static void SetUint(nint keyvalues, string key, uint value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetUint(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetInt64; - - public unsafe static void SetInt64(nint keyvalues, string key, long value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetInt64(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetUint64; - - public unsafe static void SetUint64(nint keyvalues, string key, ulong value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetUint64(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetFloat; - - public unsafe static void SetFloat(nint keyvalues, string key, float value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetFloat(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetDouble; - - public unsafe static void SetDouble(nint keyvalues, string key, double value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetDouble(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetString; - - public unsafe static void SetString(nint keyvalues, string key, string value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) { - _SetString(keyvalues, keyBufferPtr, valueBufferPtr); - pool.Return(keyBuffer); - pool.Return(valueBuffer); - } - } - } - - private unsafe static delegate* unmanaged _SetPtr; - - public unsafe static void SetPtr(nint keyvalues, string key, nint value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetPtr(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetStringToken; - - public unsafe static void SetStringToken(nint keyvalues, string key, CUtlStringToken value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetStringToken(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetColor; - - public unsafe static void SetColor(nint keyvalues, string key, Color value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetColor(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetVector; - - public unsafe static void SetVector(nint keyvalues, string key, Vector value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetVector(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetVector2D; - - public unsafe static void SetVector2D(nint keyvalues, string key, Vector2D value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetVector2D(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetVector4D; - - public unsafe static void SetVector4D(nint keyvalues, string key, Vector4D value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetVector4D(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetQAngle; - - public unsafe static void SetQAngle(nint keyvalues, string key, QAngle value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetQAngle(keyvalues, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } +internal static class NativeCEntityKeyValues +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _Allocate; + + public unsafe static nint Allocate() + { + var ret = _Allocate(); + return ret; + } + + private unsafe static delegate* unmanaged _Deallocate; + + public unsafe static void Deallocate(nint keyvalues) + { + _Deallocate(keyvalues); + } + + private unsafe static delegate* unmanaged _GetBool; + + public unsafe static bool GetBool(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetBool(keyvalues, keyBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _GetInt; + + public unsafe static int GetInt(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetInt(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetUint; + + public unsafe static uint GetUint(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetUint(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetInt64; + + public unsafe static long GetInt64(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetInt64(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetUint64; + + public unsafe static ulong GetUint64(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetUint64(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetFloat; + + public unsafe static float GetFloat(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetFloat(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetDouble; + + public unsafe static double GetDouble(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetDouble(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetString; + + public unsafe static string GetString(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetString(null, keyvalues, keyBufferPtr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetString(retBufferPtr, keyvalues, keyBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } + } + + private unsafe static delegate* unmanaged _GetPtr; + + public unsafe static nint GetPtr(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetPtr(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetStringToken; + + public unsafe static CUtlStringToken GetStringToken(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetStringToken(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetColor; + + public unsafe static Color GetColor(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetColor(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetVector; + + public unsafe static Vector GetVector(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetVector(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetVector2D; + + public unsafe static Vector2D GetVector2D(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetVector2D(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetVector4D; + + public unsafe static Vector4D GetVector4D(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetVector4D(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetQAngle; + + public unsafe static QAngle GetQAngle(nint keyvalues, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetQAngle(keyvalues, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetBool; + + public unsafe static void SetBool(nint keyvalues, string key, bool value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetBool(keyvalues, keyBufferPtr, value ? (byte)1 : (byte)0); + } + } + + private unsafe static delegate* unmanaged _SetInt; + + public unsafe static void SetInt(nint keyvalues, string key, int value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetInt(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetUint; + + public unsafe static void SetUint(nint keyvalues, string key, uint value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetUint(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetInt64; + + public unsafe static void SetInt64(nint keyvalues, string key, long value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetInt64(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetUint64; + + public unsafe static void SetUint64(nint keyvalues, string key, ulong value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetUint64(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetFloat; + + public unsafe static void SetFloat(nint keyvalues, string key, float value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetFloat(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetDouble; + + public unsafe static void SetDouble(nint keyvalues, string key, double value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetDouble(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetString; + + public unsafe static void SetString(nint keyvalues, string key, string value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* keyBufferPtr = keyBuffer) + { + fixed (byte* valueBufferPtr = valueBuffer) + { + _SetString(keyvalues, keyBufferPtr, valueBufferPtr); + } + } + } + + private unsafe static delegate* unmanaged _SetPtr; + + public unsafe static void SetPtr(nint keyvalues, string key, nint value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetPtr(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetStringToken; + + public unsafe static void SetStringToken(nint keyvalues, string key, CUtlStringToken value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetStringToken(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetColor; + + public unsafe static void SetColor(nint keyvalues, string key, Color value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetColor(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetVector; + + public unsafe static void SetVector(nint keyvalues, string key, Vector value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetVector(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetVector2D; + + public unsafe static void SetVector2D(nint keyvalues, string key, Vector2D value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetVector2D(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetVector4D; + + public unsafe static void SetVector4D(nint keyvalues, string key, Vector4D value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetVector4D(keyvalues, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetQAngle; + + public unsafe static void SetQAngle(nint keyvalues, string key, QAngle value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetQAngle(keyvalues, keyBufferPtr, value); + } + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs b/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs index 616e778b4..5ddbd0942 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs @@ -1,114 +1,99 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeCommandLine { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _HasParameter; - - public unsafe static bool HasParameter(string parameter) { - var pool = ArrayPool.Shared; - var parameterLength = Encoding.UTF8.GetByteCount(parameter); - var parameterBuffer = pool.Rent(parameterLength + 1); - Encoding.UTF8.GetBytes(parameter, parameterBuffer); - parameterBuffer[parameterLength] = 0; - fixed (byte* parameterBufferPtr = parameterBuffer) { - var ret = _HasParameter(parameterBufferPtr); - pool.Return(parameterBuffer); - return ret == 1; +internal static class NativeCommandLine +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _HasParameter; + + public unsafe static bool HasParameter(string parameter) + { + byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter); + fixed (byte* parameterBufferPtr = parameterBuffer) + { + var ret = _HasParameter(parameterBufferPtr); + return ret == 1; + } } - } - - private unsafe static delegate* unmanaged _GetParameterCount; - - public unsafe static int GetParameterCount() { - var ret = _GetParameterCount(); - return ret; - } - - private unsafe static delegate* unmanaged _GetParameterValueString; - - public unsafe static string GetParameterValueString(string parameter, string defaultValue) { - var pool = ArrayPool.Shared; - var parameterLength = Encoding.UTF8.GetByteCount(parameter); - var parameterBuffer = pool.Rent(parameterLength + 1); - Encoding.UTF8.GetBytes(parameter, parameterBuffer); - parameterBuffer[parameterLength] = 0; - var defaultValueLength = Encoding.UTF8.GetByteCount(defaultValue); - var defaultValueBuffer = pool.Rent(defaultValueLength + 1); - Encoding.UTF8.GetBytes(defaultValue, defaultValueBuffer); - defaultValueBuffer[defaultValueLength] = 0; - fixed (byte* parameterBufferPtr = parameterBuffer) { - fixed (byte* defaultValueBufferPtr = defaultValueBuffer) { - var ret = _GetParameterValueString(null, parameterBufferPtr, defaultValueBufferPtr); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetParameterValueString(retBufferPtr, parameterBufferPtr, defaultValueBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(parameterBuffer); - pool.Return(defaultValueBuffer); - return retString; + + private unsafe static delegate* unmanaged _GetParameterCount; + + public unsafe static int GetParameterCount() + { + var ret = _GetParameterCount(); + return ret; + } + + private unsafe static delegate* unmanaged _GetParameterValueString; + + public unsafe static string GetParameterValueString(string parameter, string defaultValue) + { + byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter); + byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue); + fixed (byte* parameterBufferPtr = parameterBuffer) + { + fixed (byte* defaultValueBufferPtr = defaultValueBuffer) + { + var ret = _GetParameterValueString(null, parameterBufferPtr, defaultValueBufferPtr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetParameterValueString(retBufferPtr, parameterBufferPtr, defaultValueBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } } - } } - } - - private unsafe static delegate* unmanaged _GetParameterValueInt; - - public unsafe static int GetParameterValueInt(string parameter, int defaultValue) { - var pool = ArrayPool.Shared; - var parameterLength = Encoding.UTF8.GetByteCount(parameter); - var parameterBuffer = pool.Rent(parameterLength + 1); - Encoding.UTF8.GetBytes(parameter, parameterBuffer); - parameterBuffer[parameterLength] = 0; - fixed (byte* parameterBufferPtr = parameterBuffer) { - var ret = _GetParameterValueInt(parameterBufferPtr, defaultValue); - pool.Return(parameterBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetParameterValueInt; + + public unsafe static int GetParameterValueInt(string parameter, int defaultValue) + { + byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter); + fixed (byte* parameterBufferPtr = parameterBuffer) + { + var ret = _GetParameterValueInt(parameterBufferPtr, defaultValue); + return ret; + } } - } - - private unsafe static delegate* unmanaged _GetParameterValueFloat; - - public unsafe static float GetParameterValueFloat(string parameter, float defaultValue) { - var pool = ArrayPool.Shared; - var parameterLength = Encoding.UTF8.GetByteCount(parameter); - var parameterBuffer = pool.Rent(parameterLength + 1); - Encoding.UTF8.GetBytes(parameter, parameterBuffer); - parameterBuffer[parameterLength] = 0; - fixed (byte* parameterBufferPtr = parameterBuffer) { - var ret = _GetParameterValueFloat(parameterBufferPtr, defaultValue); - pool.Return(parameterBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetParameterValueFloat; + + public unsafe static float GetParameterValueFloat(string parameter, float defaultValue) + { + byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter); + fixed (byte* parameterBufferPtr = parameterBuffer) + { + var ret = _GetParameterValueFloat(parameterBufferPtr, defaultValue); + return ret; + } } - } - - private unsafe static delegate* unmanaged _GetCommandLine; - - public unsafe static string GetCommandLine() { - var ret = _GetCommandLine(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetCommandLine(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + + private unsafe static delegate* unmanaged _GetCommandLine; + + public unsafe static string GetCommandLine() + { + var ret = _GetCommandLine(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetCommandLine(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - private unsafe static delegate* unmanaged _HasParameters; + private unsafe static delegate* unmanaged _HasParameters; - public unsafe static bool HasParameters() { - var ret = _HasParameters(); - return ret == 1; - } + public unsafe static bool HasParameters() + { + var ret = _HasParameters(); + return ret == 1; + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Commands.cs b/managed/src/SwiftlyS2.Generated/Natives/Commands.cs index 510130fda..ad740ac7b 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Commands.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Commands.cs @@ -1,118 +1,112 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeCommands { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _HandleCommandForPlayer; - - /// - /// 1 -> not silent, 2 -> silent, -1 -> invalid player, 0 -> no command - /// - public unsafe static int HandleCommandForPlayer(int playerid, string command) { - var pool = ArrayPool.Shared; - var commandLength = Encoding.UTF8.GetByteCount(command); - var commandBuffer = pool.Rent(commandLength + 1); - Encoding.UTF8.GetBytes(command, commandBuffer); - commandBuffer[commandLength] = 0; - fixed (byte* commandBufferPtr = commandBuffer) { - var ret = _HandleCommandForPlayer(playerid, commandBufferPtr); - pool.Return(commandBuffer); - return ret; +internal static class NativeCommands +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _HandleCommandForPlayer; + + /// + /// 1 -> not silent, 2 -> silent, -1 -> invalid player, 0 -> no command + /// + public unsafe static int HandleCommandForPlayer(int playerid, string command) + { + byte[] commandBuffer = Encoding.UTF8.GetBytes(command); + fixed (byte* commandBufferPtr = commandBuffer) + { + var ret = _HandleCommandForPlayer(playerid, commandBufferPtr); + return ret; + } } - } - - private unsafe static delegate* unmanaged _RegisterCommand; - - /// - /// callback should receive (int32 playerid, string arguments_list (separated by \x01), string commandName, string prefix, bool silent), if registerRaw is false, it will not put "sw_" before the command name - /// - public unsafe static ulong RegisterCommand(string commandName, nint callback, bool registerRaw) { - var pool = ArrayPool.Shared; - var commandNameLength = Encoding.UTF8.GetByteCount(commandName); - var commandNameBuffer = pool.Rent(commandNameLength + 1); - Encoding.UTF8.GetBytes(commandName, commandNameBuffer); - commandNameBuffer[commandNameLength] = 0; - fixed (byte* commandNameBufferPtr = commandNameBuffer) { - var ret = _RegisterCommand(commandNameBufferPtr, callback, registerRaw ? (byte)1 : (byte)0); - pool.Return(commandNameBuffer); - return ret; + + private unsafe static delegate* unmanaged _RegisterCommand; + + /// + /// callback should receive (int32 playerid, string arguments_list (separated by \x01), string commandName, string prefix, bool silent), if registerRaw is false, it will not put "sw_" before the command name + /// + public unsafe static ulong RegisterCommand(string commandName, nint callback, bool registerRaw) + { + byte[] commandNameBuffer = Encoding.UTF8.GetBytes(commandName); + fixed (byte* commandNameBufferPtr = commandNameBuffer) + { + var ret = _RegisterCommand(commandNameBufferPtr, callback, registerRaw ? (byte)1 : (byte)0); + return ret; + } } - } - - private unsafe static delegate* unmanaged _UnregisterCommand; - - public unsafe static void UnregisterCommand(ulong callbackID) { - _UnregisterCommand(callbackID); - } - - private unsafe static delegate* unmanaged _RegisterAlias; - - /// - /// registerRaw behaves the same as on RegisterCommand, for commandName you need to also put the "sw_" prefix if the command is registered without raw mode - /// - public unsafe static ulong RegisterAlias(string aliasName, string commandName, bool registerRaw) { - var pool = ArrayPool.Shared; - var aliasNameLength = Encoding.UTF8.GetByteCount(aliasName); - var aliasNameBuffer = pool.Rent(aliasNameLength + 1); - Encoding.UTF8.GetBytes(aliasName, aliasNameBuffer); - aliasNameBuffer[aliasNameLength] = 0; - var commandNameLength = Encoding.UTF8.GetByteCount(commandName); - var commandNameBuffer = pool.Rent(commandNameLength + 1); - Encoding.UTF8.GetBytes(commandName, commandNameBuffer); - commandNameBuffer[commandNameLength] = 0; - fixed (byte* aliasNameBufferPtr = aliasNameBuffer) { - fixed (byte* commandNameBufferPtr = commandNameBuffer) { - var ret = _RegisterAlias(aliasNameBufferPtr, commandNameBufferPtr, registerRaw ? (byte)1 : (byte)0); - pool.Return(aliasNameBuffer); - pool.Return(commandNameBuffer); - return ret; - } + + private unsafe static delegate* unmanaged _UnregisterCommand; + + public unsafe static void UnregisterCommand(ulong callbackID) + { + _UnregisterCommand(callbackID); } - } - private unsafe static delegate* unmanaged _UnregisterAlias; + private unsafe static delegate* unmanaged _RegisterAlias; + + /// + /// registerRaw behaves the same as on RegisterCommand, for commandName you need to also put the "sw_" prefix if the command is registered without raw mode + /// + public unsafe static ulong RegisterAlias(string aliasName, string commandName, bool registerRaw) + { + byte[] aliasNameBuffer = Encoding.UTF8.GetBytes(aliasName); + byte[] commandNameBuffer = Encoding.UTF8.GetBytes(commandName); + fixed (byte* aliasNameBufferPtr = aliasNameBuffer) + { + fixed (byte* commandNameBufferPtr = commandNameBuffer) + { + var ret = _RegisterAlias(aliasNameBufferPtr, commandNameBufferPtr, registerRaw ? (byte)1 : (byte)0); + return ret; + } + } + } - public unsafe static void UnregisterAlias(ulong callbackID) { - _UnregisterAlias(callbackID); - } + private unsafe static delegate* unmanaged _UnregisterAlias; - private unsafe static delegate* unmanaged _RegisterClientCommandsListener; + public unsafe static void UnregisterAlias(ulong callbackID) + { + _UnregisterAlias(callbackID); + } - /// - /// callback should receive: int32 playerid, string commandline, return true -> ignored, return false -> supercede - /// - public unsafe static ulong RegisterClientCommandsListener(nint callback) { - var ret = _RegisterClientCommandsListener(callback); - return ret; - } + private unsafe static delegate* unmanaged _RegisterClientCommandsListener; - private unsafe static delegate* unmanaged _UnregisterClientCommandsListener; + /// + /// callback should receive: int32 playerid, string commandline, return true -> ignored, return false -> supercede + /// + public unsafe static ulong RegisterClientCommandsListener(nint callback) + { + var ret = _RegisterClientCommandsListener(callback); + return ret; + } + + private unsafe static delegate* unmanaged _UnregisterClientCommandsListener; - public unsafe static void UnregisterClientCommandsListener(ulong callbackID) { - _UnregisterClientCommandsListener(callbackID); - } + public unsafe static void UnregisterClientCommandsListener(ulong callbackID) + { + _UnregisterClientCommandsListener(callbackID); + } - private unsafe static delegate* unmanaged _RegisterClientChatListener; + private unsafe static delegate* unmanaged _RegisterClientChatListener; - /// - /// callback should receive: int32 playerid, string text, bool teamonly, return true -> ignored, return false -> supercede, when superceded it's not gonna send the message - /// - public unsafe static ulong RegisterClientChatListener(nint callback) { - var ret = _RegisterClientChatListener(callback); - return ret; - } + /// + /// callback should receive: int32 playerid, string text, bool teamonly, return true -> ignored, return false -> supercede, when superceded it's not gonna send the message + /// + public unsafe static ulong RegisterClientChatListener(nint callback) + { + var ret = _RegisterClientChatListener(callback); + return ret; + } - private unsafe static delegate* unmanaged _UnregisterClientChatListener; + private unsafe static delegate* unmanaged _UnregisterClientChatListener; - public unsafe static void UnregisterClientChatListener(ulong callbackID) { - _UnregisterClientChatListener(callbackID); - } + public unsafe static void UnregisterClientChatListener(ulong callbackID) + { + _UnregisterClientChatListener(callbackID); + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs b/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs index a27a46f13..3872b95ca 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs @@ -1,92 +1,93 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeConsoleOutput { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _AddConsoleListener; - - /// - /// callback should receive: string message - /// - public unsafe static ulong AddConsoleListener(nint callback) { - var ret = _AddConsoleListener(callback); - return ret; - } - - private unsafe static delegate* unmanaged _RemoveConsoleListener; - - public unsafe static void RemoveConsoleListener(ulong listenerId) { - _RemoveConsoleListener(listenerId); - } - - private unsafe static delegate* unmanaged _IsEnabled; - - /// - /// returns whether console filtering is enabled - /// - public unsafe static bool IsEnabled() { - var ret = _IsEnabled(); - return ret == 1; - } - - private unsafe static delegate* unmanaged _ToggleFilter; - - /// - /// toggles the console filter on/off - /// - public unsafe static void ToggleFilter() { - _ToggleFilter(); - } - - private unsafe static delegate* unmanaged _ReloadFilterConfiguration; - - /// - /// reloads the filter configuration from file - /// - public unsafe static void ReloadFilterConfiguration() { - _ReloadFilterConfiguration(); - } - - private unsafe static delegate* unmanaged _NeedsFiltering; - - /// - /// checks if a message needs filtering - /// - public unsafe static bool NeedsFiltering(string text) { - var pool = ArrayPool.Shared; - var textLength = Encoding.UTF8.GetByteCount(text); - var textBuffer = pool.Rent(textLength + 1); - Encoding.UTF8.GetBytes(text, textBuffer); - textBuffer[textLength] = 0; - fixed (byte* textBufferPtr = textBuffer) { - var ret = _NeedsFiltering(textBufferPtr); - pool.Return(textBuffer); - return ret == 1; +internal static class NativeConsoleOutput +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _AddConsoleListener; + + /// + /// callback should receive: string message + /// + public unsafe static ulong AddConsoleListener(nint callback) + { + var ret = _AddConsoleListener(callback); + return ret; + } + + private unsafe static delegate* unmanaged _RemoveConsoleListener; + + public unsafe static void RemoveConsoleListener(ulong listenerId) + { + _RemoveConsoleListener(listenerId); } - } - - private unsafe static delegate* unmanaged _GetCounterText; - - /// - /// gets the counter text showing how many messages were filtered - /// - public unsafe static string GetCounterText() { - var ret = _GetCounterText(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetCounterText(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + + private unsafe static delegate* unmanaged _IsEnabled; + + /// + /// returns whether console filtering is enabled + /// + public unsafe static bool IsEnabled() + { + var ret = _IsEnabled(); + return ret == 1; + } + + private unsafe static delegate* unmanaged _ToggleFilter; + + /// + /// toggles the console filter on/off + /// + public unsafe static void ToggleFilter() + { + _ToggleFilter(); + } + + private unsafe static delegate* unmanaged _ReloadFilterConfiguration; + + /// + /// reloads the filter configuration from file + /// + public unsafe static void ReloadFilterConfiguration() + { + _ReloadFilterConfiguration(); + } + + private unsafe static delegate* unmanaged _NeedsFiltering; + + /// + /// checks if a message needs filtering + /// + public unsafe static bool NeedsFiltering(string text) + { + byte[] textBuffer = Encoding.UTF8.GetBytes(text); + fixed (byte* textBufferPtr = textBuffer) + { + var ret = _NeedsFiltering(textBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _GetCounterText; + + /// + /// gets the counter text showing how many messages were filtered + /// + public unsafe static string GetCounterText() + { + var ret = _GetCounterText(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetCounterText(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Convars.cs b/managed/src/SwiftlyS2.Generated/Natives/Convars.cs index b859ddf97..f6e1261f1 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Convars.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Convars.cs @@ -1,645 +1,506 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeConvars { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _QueryClientConvar; - - public unsafe static void QueryClientConvar(int playerid, string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - _QueryClientConvar(playerid, cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddQueryClientCvarCallback; - - /// - /// the callback should receive the following: int32 playerid, string cvarName, string cvarValue - /// - public unsafe static int AddQueryClientCvarCallback(nint callback) { - var ret = _AddQueryClientCvarCallback(callback); - return ret; - } - - private unsafe static delegate* unmanaged _RemoveQueryClientCvarCallback; - - public unsafe static void RemoveQueryClientCvarCallback(int callbackID) { - _RemoveQueryClientCvarCallback(callbackID); - } - - private unsafe static delegate* unmanaged _AddGlobalChangeListener; - - /// - /// the callback should receive the following: string convarName, int playerid, string newValue, string oldValue - /// - public unsafe static ulong AddGlobalChangeListener(nint callback) { - var ret = _AddGlobalChangeListener(callback); - return ret; - } - - private unsafe static delegate* unmanaged _RemoveGlobalChangeListener; - - public unsafe static void RemoveGlobalChangeListener(ulong callbackID) { - _RemoveGlobalChangeListener(callbackID); - } - - private unsafe static delegate* unmanaged _AddConvarCreatedListener; - - /// - /// the callback should receive the following: string convarName - /// - public unsafe static ulong AddConvarCreatedListener(nint callback) { - var ret = _AddConvarCreatedListener(callback); - return ret; - } - - private unsafe static delegate* unmanaged _RemoveConvarCreatedListener; - - public unsafe static void RemoveConvarCreatedListener(ulong callbackID) { - _RemoveConvarCreatedListener(callbackID); - } - - private unsafe static delegate* unmanaged _AddConCommandCreatedListener; - - /// - /// the callback should receive the following: string commandName - /// - public unsafe static ulong AddConCommandCreatedListener(nint callback) { - var ret = _AddConCommandCreatedListener(callback); - return ret; - } - - private unsafe static delegate* unmanaged _RemoveConCommandCreatedListener; - - public unsafe static void RemoveConCommandCreatedListener(ulong callbackID) { - _RemoveConCommandCreatedListener(callbackID); - } - - private unsafe static delegate* unmanaged _CreateConvarInt16; - - public unsafe static void CreateConvarInt16(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, short defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarInt16(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarUInt16; - - public unsafe static void CreateConvarUInt16(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, ushort defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarUInt16(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarInt32; - - public unsafe static void CreateConvarInt32(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, int defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarInt32(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarUInt32; - - public unsafe static void CreateConvarUInt32(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, uint defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarUInt32(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarInt64; - - public unsafe static void CreateConvarInt64(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, long defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarInt64(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarUInt64; - - public unsafe static void CreateConvarUInt64(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, ulong defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarUInt64(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarBool; - - public unsafe static void CreateConvarBool(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, bool defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarBool(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue ? (byte)1 : (byte)0, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarFloat; - - public unsafe static void CreateConvarFloat(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, float defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarFloat(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarDouble; - - public unsafe static void CreateConvarDouble(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, double defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarDouble(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarColor; - - public unsafe static void CreateConvarColor(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Color defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarColor(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarVector2D; - - public unsafe static void CreateConvarVector2D(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector2D defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarVector2D(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarVector; - - public unsafe static void CreateConvarVector(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarVector(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarVector4D; - - public unsafe static void CreateConvarVector4D(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector4D defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarVector4D(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarQAngle; - - public unsafe static void CreateConvarQAngle(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, QAngle defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - _CreateConvarQAngle(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - } - } - } - - private unsafe static delegate* unmanaged _CreateConvarString; - - public unsafe static void CreateConvarString(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, string defaultValue, nint minValue, nint maxValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var helpMessageLength = Encoding.UTF8.GetByteCount(helpMessage); - var helpMessageBuffer = pool.Rent(helpMessageLength + 1); - Encoding.UTF8.GetBytes(helpMessage, helpMessageBuffer); - helpMessageBuffer[helpMessageLength] = 0; - var defaultValueLength = Encoding.UTF8.GetByteCount(defaultValue); - var defaultValueBuffer = pool.Rent(defaultValueLength + 1); - Encoding.UTF8.GetBytes(defaultValue, defaultValueBuffer); - defaultValueBuffer[defaultValueLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* helpMessageBufferPtr = helpMessageBuffer) { - fixed (byte* defaultValueBufferPtr = defaultValueBuffer) { - _CreateConvarString(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValueBufferPtr, minValue, maxValue); - pool.Return(cvarNameBuffer); - pool.Return(helpMessageBuffer); - pool.Return(defaultValueBuffer); +internal static class NativeConvars +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _QueryClientConvar; + + public unsafe static void QueryClientConvar(int playerid, string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + _QueryClientConvar(playerid, cvarNameBufferPtr); + } + } + + private unsafe static delegate* unmanaged _AddQueryClientCvarCallback; + + /// + /// the callback should receive the following: int32 playerid, string cvarName, string cvarValue + /// + public unsafe static int AddQueryClientCvarCallback(nint callback) + { + var ret = _AddQueryClientCvarCallback(callback); + return ret; + } + + private unsafe static delegate* unmanaged _RemoveQueryClientCvarCallback; + + public unsafe static void RemoveQueryClientCvarCallback(int callbackID) + { + _RemoveQueryClientCvarCallback(callbackID); + } + + private unsafe static delegate* unmanaged _AddGlobalChangeListener; + + /// + /// the callback should receive the following: string convarName, int playerid, string newValue, string oldValue + /// + public unsafe static ulong AddGlobalChangeListener(nint callback) + { + var ret = _AddGlobalChangeListener(callback); + return ret; + } + + private unsafe static delegate* unmanaged _RemoveGlobalChangeListener; + + public unsafe static void RemoveGlobalChangeListener(ulong callbackID) + { + _RemoveGlobalChangeListener(callbackID); + } + + private unsafe static delegate* unmanaged _AddConvarCreatedListener; + + /// + /// the callback should receive the following: string convarName + /// + public unsafe static ulong AddConvarCreatedListener(nint callback) + { + var ret = _AddConvarCreatedListener(callback); + return ret; + } + + private unsafe static delegate* unmanaged _RemoveConvarCreatedListener; + + public unsafe static void RemoveConvarCreatedListener(ulong callbackID) + { + _RemoveConvarCreatedListener(callbackID); + } + + private unsafe static delegate* unmanaged _AddConCommandCreatedListener; + + /// + /// the callback should receive the following: string commandName + /// + public unsafe static ulong AddConCommandCreatedListener(nint callback) + { + var ret = _AddConCommandCreatedListener(callback); + return ret; + } + + private unsafe static delegate* unmanaged _RemoveConCommandCreatedListener; + + public unsafe static void RemoveConCommandCreatedListener(ulong callbackID) + { + _RemoveConCommandCreatedListener(callbackID); + } + + private unsafe static delegate* unmanaged _CreateConvarInt16; + + public unsafe static void CreateConvarInt16(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, short defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarInt16(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarUInt16; + + public unsafe static void CreateConvarUInt16(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, ushort defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarUInt16(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarInt32; + + public unsafe static void CreateConvarInt32(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, int defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarInt32(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarUInt32; + + public unsafe static void CreateConvarUInt32(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, uint defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarUInt32(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarInt64; + + public unsafe static void CreateConvarInt64(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, long defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarInt64(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarUInt64; + + public unsafe static void CreateConvarUInt64(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, ulong defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarUInt64(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarBool; + + public unsafe static void CreateConvarBool(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, bool defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarBool(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue ? (byte)1 : (byte)0, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarFloat; + + public unsafe static void CreateConvarFloat(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, float defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarFloat(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarDouble; + + public unsafe static void CreateConvarDouble(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, double defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarDouble(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarColor; + + public unsafe static void CreateConvarColor(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Color defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarColor(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarVector2D; + + public unsafe static void CreateConvarVector2D(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector2D defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarVector2D(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarVector; + + public unsafe static void CreateConvarVector(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarVector(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarVector4D; + + public unsafe static void CreateConvarVector4D(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector4D defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarVector4D(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } } - } - } - } - - private unsafe static delegate* unmanaged _DeleteConvar; - - public unsafe static void DeleteConvar(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - _DeleteConvar(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - } - } - - private unsafe static delegate* unmanaged _ExistsConvar; - - public unsafe static bool ExistsConvar(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - var ret = _ExistsConvar(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - return ret == 1; - } - } - - private unsafe static delegate* unmanaged _GetConvarType; - - public unsafe static int GetConvarType(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - var ret = _GetConvarType(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetClientConvarValueString; - - public unsafe static void SetClientConvarValueString(int playerid, string cvarName, string defaultValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var defaultValueLength = Encoding.UTF8.GetByteCount(defaultValue); - var defaultValueBuffer = pool.Rent(defaultValueLength + 1); - Encoding.UTF8.GetBytes(defaultValue, defaultValueBuffer); - defaultValueBuffer[defaultValueLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* defaultValueBufferPtr = defaultValueBuffer) { - _SetClientConvarValueString(playerid, cvarNameBufferPtr, defaultValueBufferPtr); - pool.Return(cvarNameBuffer); - pool.Return(defaultValueBuffer); - } - } - } - - private unsafe static delegate* unmanaged _GetFlags; - - public unsafe static ulong GetFlags(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - var ret = _GetFlags(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetFlags; - - public unsafe static void SetFlags(string cvarName, ulong flags) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - _SetFlags(cvarNameBufferPtr, flags); - pool.Return(cvarNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetMinValuePtrPtr; - - public unsafe static nint GetMinValuePtrPtr(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - var ret = _GetMinValuePtrPtr(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetMaxValuePtrPtr; - - public unsafe static nint GetMaxValuePtrPtr(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - var ret = _GetMaxValuePtrPtr(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _HasDefaultValue; - - public unsafe static bool HasDefaultValue(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - var ret = _HasDefaultValue(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - return ret == 1; - } - } - - private unsafe static delegate* unmanaged _GetDefaultValuePtr; - - public unsafe static nint GetDefaultValuePtr(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - var ret = _GetDefaultValuePtr(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetDefaultValue; - - public unsafe static void SetDefaultValue(string cvarName, nint defaultValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - _SetDefaultValue(cvarNameBufferPtr, defaultValue); - pool.Return(cvarNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetDefaultValueString; - - public unsafe static void SetDefaultValueString(string cvarName, string defaultValue) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - var defaultValueLength = Encoding.UTF8.GetByteCount(defaultValue); - var defaultValueBuffer = pool.Rent(defaultValueLength + 1); - Encoding.UTF8.GetBytes(defaultValue, defaultValueBuffer); - defaultValueBuffer[defaultValueLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - fixed (byte* defaultValueBufferPtr = defaultValueBuffer) { - _SetDefaultValueString(cvarNameBufferPtr, defaultValueBufferPtr); - pool.Return(cvarNameBuffer); - pool.Return(defaultValueBuffer); - } - } - } - - private unsafe static delegate* unmanaged _GetValuePtr; - - public unsafe static nint GetValuePtr(string cvarName) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - var ret = _GetValuePtr(cvarNameBufferPtr); - pool.Return(cvarNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetValuePtr; - - public unsafe static void SetValuePtr(string cvarName, nint value) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - _SetValuePtr(cvarNameBufferPtr, value); - pool.Return(cvarNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetValueInternalPtr; - - public unsafe static void SetValueInternalPtr(string cvarName, nint value) { - var pool = ArrayPool.Shared; - var cvarNameLength = Encoding.UTF8.GetByteCount(cvarName); - var cvarNameBuffer = pool.Rent(cvarNameLength + 1); - Encoding.UTF8.GetBytes(cvarName, cvarNameBuffer); - cvarNameBuffer[cvarNameLength] = 0; - fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { - _SetValueInternalPtr(cvarNameBufferPtr, value); - pool.Return(cvarNameBuffer); - } - } + } + + private unsafe static delegate* unmanaged _CreateConvarQAngle; + + public unsafe static void CreateConvarQAngle(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, QAngle defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + _CreateConvarQAngle(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValue, minValue, maxValue); + } + } + } + + private unsafe static delegate* unmanaged _CreateConvarString; + + public unsafe static void CreateConvarString(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, string defaultValue, nint minValue, nint maxValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* helpMessageBufferPtr = helpMessageBuffer) + { + fixed (byte* defaultValueBufferPtr = defaultValueBuffer) + { + _CreateConvarString(cvarNameBufferPtr, cvarType, cvarFlags, helpMessageBufferPtr, defaultValueBufferPtr, minValue, maxValue); + } + } + } + } + + private unsafe static delegate* unmanaged _DeleteConvar; + + public unsafe static void DeleteConvar(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + _DeleteConvar(cvarNameBufferPtr); + } + } + + private unsafe static delegate* unmanaged _ExistsConvar; + + public unsafe static bool ExistsConvar(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + var ret = _ExistsConvar(cvarNameBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _GetConvarType; + + public unsafe static int GetConvarType(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + var ret = _GetConvarType(cvarNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetClientConvarValueString; + + public unsafe static void SetClientConvarValueString(int playerid, string cvarName, string defaultValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* defaultValueBufferPtr = defaultValueBuffer) + { + _SetClientConvarValueString(playerid, cvarNameBufferPtr, defaultValueBufferPtr); + } + } + } + + private unsafe static delegate* unmanaged _GetFlags; + + public unsafe static ulong GetFlags(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + var ret = _GetFlags(cvarNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetFlags; + + public unsafe static void SetFlags(string cvarName, ulong flags) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + _SetFlags(cvarNameBufferPtr, flags); + } + } + + private unsafe static delegate* unmanaged _GetMinValuePtrPtr; + + public unsafe static nint GetMinValuePtrPtr(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + var ret = _GetMinValuePtrPtr(cvarNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetMaxValuePtrPtr; + + public unsafe static nint GetMaxValuePtrPtr(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + var ret = _GetMaxValuePtrPtr(cvarNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _HasDefaultValue; + + public unsafe static bool HasDefaultValue(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + var ret = _HasDefaultValue(cvarNameBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _GetDefaultValuePtr; + + public unsafe static nint GetDefaultValuePtr(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + var ret = _GetDefaultValuePtr(cvarNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetDefaultValue; + + public unsafe static void SetDefaultValue(string cvarName, nint defaultValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + _SetDefaultValue(cvarNameBufferPtr, defaultValue); + } + } + + private unsafe static delegate* unmanaged _SetDefaultValueString; + + public unsafe static void SetDefaultValueString(string cvarName, string defaultValue) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + fixed (byte* defaultValueBufferPtr = defaultValueBuffer) + { + _SetDefaultValueString(cvarNameBufferPtr, defaultValueBufferPtr); + } + } + } + + private unsafe static delegate* unmanaged _GetValuePtr; + + public unsafe static nint GetValuePtr(string cvarName) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + var ret = _GetValuePtr(cvarNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetValuePtr; + + public unsafe static void SetValuePtr(string cvarName, nint value) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + _SetValuePtr(cvarNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetValueInternalPtr; + + public unsafe static void SetValueInternalPtr(string cvarName, nint value) + { + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + fixed (byte* cvarNameBufferPtr = cvarNameBuffer) + { + _SetValueInternalPtr(cvarNameBufferPtr, value); + } + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Database.cs b/managed/src/SwiftlyS2.Generated/Natives/Database.cs index 08c9a9c3a..28f31fad4 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Database.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Database.cs @@ -1,77 +1,68 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeDatabase { - private static int _MainThreadID; +internal static class NativeDatabase +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _GetDefaultConnection; + private unsafe static delegate* unmanaged _GetDefaultConnection; - public unsafe static string GetDefaultConnection() { - var ret = _GetDefaultConnection(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetDefaultConnection(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + public unsafe static string GetDefaultConnection() + { + var ret = _GetDefaultConnection(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetDefaultConnection(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - private unsafe static delegate* unmanaged _GetDefaultConnectionCredentials; + private unsafe static delegate* unmanaged _GetDefaultConnectionCredentials; - public unsafe static string GetDefaultConnectionCredentials() { - var ret = _GetDefaultConnectionCredentials(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetDefaultConnectionCredentials(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + public unsafe static string GetDefaultConnectionCredentials() + { + var ret = _GetDefaultConnectionCredentials(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetDefaultConnectionCredentials(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - private unsafe static delegate* unmanaged _GetCredentials; + private unsafe static delegate* unmanaged _GetCredentials; - public unsafe static string GetCredentials(string connectionName) { - var pool = ArrayPool.Shared; - var connectionNameLength = Encoding.UTF8.GetByteCount(connectionName); - var connectionNameBuffer = pool.Rent(connectionNameLength + 1); - Encoding.UTF8.GetBytes(connectionName, connectionNameBuffer); - connectionNameBuffer[connectionNameLength] = 0; - fixed (byte* connectionNameBufferPtr = connectionNameBuffer) { - var ret = _GetCredentials(null, connectionNameBufferPtr); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetCredentials(retBufferPtr, connectionNameBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(connectionNameBuffer); - return retString; - } + public unsafe static string GetCredentials(string connectionName) + { + byte[] connectionNameBuffer = Encoding.UTF8.GetBytes(connectionName); + fixed (byte* connectionNameBufferPtr = connectionNameBuffer) + { + var ret = _GetCredentials(null, connectionNameBufferPtr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetCredentials(retBufferPtr, connectionNameBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } } - } - private unsafe static delegate* unmanaged _ConnectionExists; + private unsafe static delegate* unmanaged _ConnectionExists; - public unsafe static bool ConnectionExists(string connectionName) { - var pool = ArrayPool.Shared; - var connectionNameLength = Encoding.UTF8.GetByteCount(connectionName); - var connectionNameBuffer = pool.Rent(connectionNameLength + 1); - Encoding.UTF8.GetBytes(connectionName, connectionNameBuffer); - connectionNameBuffer[connectionNameLength] = 0; - fixed (byte* connectionNameBufferPtr = connectionNameBuffer) { - var ret = _ConnectionExists(connectionNameBufferPtr); - pool.Return(connectionNameBuffer); - return ret == 1; + public unsafe static bool ConnectionExists(string connectionName) + { + byte[] connectionNameBuffer = Encoding.UTF8.GetBytes(connectionName); + fixed (byte* connectionNameBufferPtr = connectionNameBuffer) + { + var ret = _ConnectionExists(connectionNameBufferPtr); + return ret == 1; + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs b/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs index 494a6e49a..5f5525493 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs @@ -1,172 +1,156 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeEngineHelpers { - private static int _MainThreadID; +internal static class NativeEngineHelpers +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _GetIP; + + public unsafe static string GetIP() + { + var ret = _GetIP(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetIP(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } + + private unsafe static delegate* unmanaged _IsMapValid; + + /// + /// it can be map name, or workshop id + /// + public unsafe static bool IsMapValid(string map_name) + { + byte[] map_nameBuffer = Encoding.UTF8.GetBytes(map_name); + fixed (byte* map_nameBufferPtr = map_nameBuffer) + { + var ret = _IsMapValid(map_nameBufferPtr); + return ret == 1; + } + } - private unsafe static delegate* unmanaged _GetIP; + private unsafe static delegate* unmanaged _ExecuteCommand; - public unsafe static string GetIP() { - var ret = _GetIP(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetIP(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + public unsafe static void ExecuteCommand(string command) + { + byte[] commandBuffer = Encoding.UTF8.GetBytes(command); + fixed (byte* commandBufferPtr = commandBuffer) + { + _ExecuteCommand(commandBufferPtr); + } } - } - - private unsafe static delegate* unmanaged _IsMapValid; - - /// - /// it can be map name, or workshop id - /// - public unsafe static bool IsMapValid(string map_name) { - var pool = ArrayPool.Shared; - var map_nameLength = Encoding.UTF8.GetByteCount(map_name); - var map_nameBuffer = pool.Rent(map_nameLength + 1); - Encoding.UTF8.GetBytes(map_name, map_nameBuffer); - map_nameBuffer[map_nameLength] = 0; - fixed (byte* map_nameBufferPtr = map_nameBuffer) { - var ret = _IsMapValid(map_nameBufferPtr); - pool.Return(map_nameBuffer); - return ret == 1; + + private unsafe static delegate* unmanaged _FindGameSystemByName; + + public unsafe static nint FindGameSystemByName(string name) + { + byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + fixed (byte* nameBufferPtr = nameBuffer) + { + var ret = _FindGameSystemByName(nameBufferPtr); + return ret; + } } - } - - private unsafe static delegate* unmanaged _ExecuteCommand; - - public unsafe static void ExecuteCommand(string command) { - var pool = ArrayPool.Shared; - var commandLength = Encoding.UTF8.GetByteCount(command); - var commandBuffer = pool.Rent(commandLength + 1); - Encoding.UTF8.GetBytes(command, commandBuffer); - commandBuffer[commandLength] = 0; - fixed (byte* commandBufferPtr = commandBuffer) { - _ExecuteCommand(commandBufferPtr); - pool.Return(commandBuffer); + + private unsafe static delegate* unmanaged _SendMessageToConsole; + + public unsafe static void SendMessageToConsole(string msg) + { + byte[] msgBuffer = Encoding.UTF8.GetBytes(msg); + fixed (byte* msgBufferPtr = msgBuffer) + { + _SendMessageToConsole(msgBufferPtr); + } } - } - - private unsafe static delegate* unmanaged _FindGameSystemByName; - - public unsafe static nint FindGameSystemByName(string name) { - var pool = ArrayPool.Shared; - var nameLength = Encoding.UTF8.GetByteCount(name); - var nameBuffer = pool.Rent(nameLength + 1); - Encoding.UTF8.GetBytes(name, nameBuffer); - nameBuffer[nameLength] = 0; - fixed (byte* nameBufferPtr = nameBuffer) { - var ret = _FindGameSystemByName(nameBufferPtr); - pool.Return(nameBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetTraceManager; + + public unsafe static nint GetTraceManager() + { + var ret = _GetTraceManager(); + return ret; } - } - - private unsafe static delegate* unmanaged _SendMessageToConsole; - - public unsafe static void SendMessageToConsole(string msg) { - var pool = ArrayPool.Shared; - var msgLength = Encoding.UTF8.GetByteCount(msg); - var msgBuffer = pool.Rent(msgLength + 1); - Encoding.UTF8.GetBytes(msg, msgBuffer); - msgBuffer[msgLength] = 0; - fixed (byte* msgBufferPtr = msgBuffer) { - _SendMessageToConsole(msgBufferPtr); - pool.Return(msgBuffer); + + private unsafe static delegate* unmanaged _GetCurrentGame; + + public unsafe static string GetCurrentGame() + { + var ret = _GetCurrentGame(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetCurrentGame(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - - private unsafe static delegate* unmanaged _GetTraceManager; - - public unsafe static nint GetTraceManager() { - var ret = _GetTraceManager(); - return ret; - } - - private unsafe static delegate* unmanaged _GetCurrentGame; - - public unsafe static string GetCurrentGame() { - var ret = _GetCurrentGame(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetCurrentGame(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + + private unsafe static delegate* unmanaged _GetNativeVersion; + + public unsafe static string GetNativeVersion() + { + var ret = _GetNativeVersion(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetNativeVersion(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - - private unsafe static delegate* unmanaged _GetNativeVersion; - - public unsafe static string GetNativeVersion() { - var ret = _GetNativeVersion(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetNativeVersion(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + + private unsafe static delegate* unmanaged _GetMenuSettings; + + public unsafe static string GetMenuSettings() + { + var ret = _GetMenuSettings(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetMenuSettings(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - - private unsafe static delegate* unmanaged _GetMenuSettings; - - public unsafe static string GetMenuSettings() { - var ret = _GetMenuSettings(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetMenuSettings(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + + private unsafe static delegate* unmanaged _GetGlobalVars; + + public unsafe static nint GetGlobalVars() + { + var ret = _GetGlobalVars(); + return ret; } - } - - private unsafe static delegate* unmanaged _GetGlobalVars; - - public unsafe static nint GetGlobalVars() { - var ret = _GetGlobalVars(); - return ret; - } - - private unsafe static delegate* unmanaged _GetCSGODirectoryPath; - - public unsafe static string GetCSGODirectoryPath() { - var ret = _GetCSGODirectoryPath(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetCSGODirectoryPath(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + + private unsafe static delegate* unmanaged _GetCSGODirectoryPath; + + public unsafe static string GetCSGODirectoryPath() + { + var ret = _GetCSGODirectoryPath(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetCSGODirectoryPath(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - - private unsafe static delegate* unmanaged _GetGameDirectoryPath; - - public unsafe static string GetGameDirectoryPath() { - var ret = _GetGameDirectoryPath(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetGameDirectoryPath(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + + private unsafe static delegate* unmanaged _GetGameDirectoryPath; + + public unsafe static string GetGameDirectoryPath() + { + var ret = _GetGameDirectoryPath(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetGameDirectoryPath(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/EntitySystem.cs b/managed/src/SwiftlyS2.Generated/Natives/EntitySystem.cs index 3dfdc1d6d..75bbaa2b1 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/EntitySystem.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/EntitySystem.cs @@ -1,365 +1,313 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeEntitySystem { - private static int _MainThreadID; +internal static class NativeEntitySystem +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _Spawn; + private unsafe static delegate* unmanaged _Spawn; - public unsafe static void Spawn(nint entity, nint keyvalues) { - _Spawn(entity, keyvalues); - } + public unsafe static void Spawn(nint entity, nint keyvalues) + { + _Spawn(entity, keyvalues); + } - private unsafe static delegate* unmanaged _Despawn; + private unsafe static delegate* unmanaged _Despawn; - public unsafe static void Despawn(nint entity) { - _Despawn(entity); - } + public unsafe static void Despawn(nint entity) + { + _Despawn(entity); + } - private unsafe static delegate* unmanaged _CreateEntityByName; + private unsafe static delegate* unmanaged _CreateEntityByName; - public unsafe static nint CreateEntityByName(string name) { - var pool = ArrayPool.Shared; - var nameLength = Encoding.UTF8.GetByteCount(name); - var nameBuffer = pool.Rent(nameLength + 1); - Encoding.UTF8.GetBytes(name, nameBuffer); - nameBuffer[nameLength] = 0; - fixed (byte* nameBufferPtr = nameBuffer) { - var ret = _CreateEntityByName(nameBufferPtr); - pool.Return(nameBuffer); - return ret; + public unsafe static nint CreateEntityByName(string name) + { + byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + fixed (byte* nameBufferPtr = nameBuffer) + { + var ret = _CreateEntityByName(nameBufferPtr); + return ret; + } } - } - - private unsafe static delegate* unmanaged _AcceptInputInt32; - - public unsafe static void AcceptInputInt32(nint entity, string input, nint activator, nint caller, int value, int outputID) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AcceptInputInt32(entity, inputBufferPtr, activator, caller, value, outputID); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AcceptInputInt32; + + public unsafe static void AcceptInputInt32(nint entity, string input, nint activator, nint caller, int value, int outputID) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AcceptInputInt32(entity, inputBufferPtr, activator, caller, value, outputID); + } } - } - - private unsafe static delegate* unmanaged _AcceptInputUInt32; - - public unsafe static void AcceptInputUInt32(nint entity, string input, nint activator, nint caller, uint value, int outputID) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AcceptInputUInt32(entity, inputBufferPtr, activator, caller, value, outputID); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AcceptInputUInt32; + + public unsafe static void AcceptInputUInt32(nint entity, string input, nint activator, nint caller, uint value, int outputID) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AcceptInputUInt32(entity, inputBufferPtr, activator, caller, value, outputID); + } } - } - - private unsafe static delegate* unmanaged _AcceptInputInt64; - - public unsafe static void AcceptInputInt64(nint entity, string input, nint activator, nint caller, long value, int outputID) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AcceptInputInt64(entity, inputBufferPtr, activator, caller, value, outputID); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AcceptInputInt64; + + public unsafe static void AcceptInputInt64(nint entity, string input, nint activator, nint caller, long value, int outputID) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AcceptInputInt64(entity, inputBufferPtr, activator, caller, value, outputID); + } } - } - - private unsafe static delegate* unmanaged _AcceptInputUInt64; - - public unsafe static void AcceptInputUInt64(nint entity, string input, nint activator, nint caller, ulong value, int outputID) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AcceptInputUInt64(entity, inputBufferPtr, activator, caller, value, outputID); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AcceptInputUInt64; + + public unsafe static void AcceptInputUInt64(nint entity, string input, nint activator, nint caller, ulong value, int outputID) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AcceptInputUInt64(entity, inputBufferPtr, activator, caller, value, outputID); + } } - } - - private unsafe static delegate* unmanaged _AcceptInputFloat; - - public unsafe static void AcceptInputFloat(nint entity, string input, nint activator, nint caller, float value, int outputID) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AcceptInputFloat(entity, inputBufferPtr, activator, caller, value, outputID); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AcceptInputFloat; + + public unsafe static void AcceptInputFloat(nint entity, string input, nint activator, nint caller, float value, int outputID) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AcceptInputFloat(entity, inputBufferPtr, activator, caller, value, outputID); + } } - } - - private unsafe static delegate* unmanaged _AcceptInputDouble; - - public unsafe static void AcceptInputDouble(nint entity, string input, nint activator, nint caller, double value, int outputID) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AcceptInputDouble(entity, inputBufferPtr, activator, caller, value, outputID); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AcceptInputDouble; + + public unsafe static void AcceptInputDouble(nint entity, string input, nint activator, nint caller, double value, int outputID) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AcceptInputDouble(entity, inputBufferPtr, activator, caller, value, outputID); + } } - } - - private unsafe static delegate* unmanaged _AcceptInputBool; - - public unsafe static void AcceptInputBool(nint entity, string input, nint activator, nint caller, bool value, int outputID) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AcceptInputBool(entity, inputBufferPtr, activator, caller, value ? (byte)1 : (byte)0, outputID); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AcceptInputBool; + + public unsafe static void AcceptInputBool(nint entity, string input, nint activator, nint caller, bool value, int outputID) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AcceptInputBool(entity, inputBufferPtr, activator, caller, value ? (byte)1 : (byte)0, outputID); + } } - } - - private unsafe static delegate* unmanaged _AcceptInputString; - - public unsafe static void AcceptInputString(nint entity, string input, nint activator, nint caller, string value, int outputID) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) { - _AcceptInputString(entity, inputBufferPtr, activator, caller, valueBufferPtr, outputID); - pool.Return(inputBuffer); - pool.Return(valueBuffer); - } + + private unsafe static delegate* unmanaged _AcceptInputString; + + public unsafe static void AcceptInputString(nint entity, string input, nint activator, nint caller, string value, int outputID) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* inputBufferPtr = inputBuffer) + { + fixed (byte* valueBufferPtr = valueBuffer) + { + _AcceptInputString(entity, inputBufferPtr, activator, caller, valueBufferPtr, outputID); + } + } } - } - - private unsafe static delegate* unmanaged _AddEntityIOEventInt32; - - public unsafe static void AddEntityIOEventInt32(nint entity, string input, nint activator, nint caller, int value, float delay) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AddEntityIOEventInt32(entity, inputBufferPtr, activator, caller, value, delay); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AddEntityIOEventInt32; + + public unsafe static void AddEntityIOEventInt32(nint entity, string input, nint activator, nint caller, int value, float delay) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AddEntityIOEventInt32(entity, inputBufferPtr, activator, caller, value, delay); + } } - } - - private unsafe static delegate* unmanaged _AddEntityIOEventUInt32; - - public unsafe static void AddEntityIOEventUInt32(nint entity, string input, nint activator, nint caller, uint value, float delay) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AddEntityIOEventUInt32(entity, inputBufferPtr, activator, caller, value, delay); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AddEntityIOEventUInt32; + + public unsafe static void AddEntityIOEventUInt32(nint entity, string input, nint activator, nint caller, uint value, float delay) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AddEntityIOEventUInt32(entity, inputBufferPtr, activator, caller, value, delay); + } } - } - - private unsafe static delegate* unmanaged _AddEntityIOEventInt64; - - public unsafe static void AddEntityIOEventInt64(nint entity, string input, nint activator, nint caller, long value, float delay) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AddEntityIOEventInt64(entity, inputBufferPtr, activator, caller, value, delay); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AddEntityIOEventInt64; + + public unsafe static void AddEntityIOEventInt64(nint entity, string input, nint activator, nint caller, long value, float delay) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AddEntityIOEventInt64(entity, inputBufferPtr, activator, caller, value, delay); + } } - } - - private unsafe static delegate* unmanaged _AddEntityIOEventUInt64; - - public unsafe static void AddEntityIOEventUInt64(nint entity, string input, nint activator, nint caller, ulong value, float delay) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AddEntityIOEventUInt64(entity, inputBufferPtr, activator, caller, value, delay); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AddEntityIOEventUInt64; + + public unsafe static void AddEntityIOEventUInt64(nint entity, string input, nint activator, nint caller, ulong value, float delay) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AddEntityIOEventUInt64(entity, inputBufferPtr, activator, caller, value, delay); + } } - } - - private unsafe static delegate* unmanaged _AddEntityIOEventFloat; - - public unsafe static void AddEntityIOEventFloat(nint entity, string input, nint activator, nint caller, float value, float delay) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AddEntityIOEventFloat(entity, inputBufferPtr, activator, caller, value, delay); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AddEntityIOEventFloat; + + public unsafe static void AddEntityIOEventFloat(nint entity, string input, nint activator, nint caller, float value, float delay) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AddEntityIOEventFloat(entity, inputBufferPtr, activator, caller, value, delay); + } } - } - - private unsafe static delegate* unmanaged _AddEntityIOEventDouble; - - public unsafe static void AddEntityIOEventDouble(nint entity, string input, nint activator, nint caller, double value, float delay) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AddEntityIOEventDouble(entity, inputBufferPtr, activator, caller, value, delay); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AddEntityIOEventDouble; + + public unsafe static void AddEntityIOEventDouble(nint entity, string input, nint activator, nint caller, double value, float delay) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AddEntityIOEventDouble(entity, inputBufferPtr, activator, caller, value, delay); + } } - } - - private unsafe static delegate* unmanaged _AddEntityIOEventBool; - - public unsafe static void AddEntityIOEventBool(nint entity, string input, nint activator, nint caller, bool value, float delay) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - _AddEntityIOEventBool(entity, inputBufferPtr, activator, caller, value ? (byte)1 : (byte)0, delay); - pool.Return(inputBuffer); + + private unsafe static delegate* unmanaged _AddEntityIOEventBool; + + public unsafe static void AddEntityIOEventBool(nint entity, string input, nint activator, nint caller, bool value, float delay) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + fixed (byte* inputBufferPtr = inputBuffer) + { + _AddEntityIOEventBool(entity, inputBufferPtr, activator, caller, value ? (byte)1 : (byte)0, delay); + } } - } - - private unsafe static delegate* unmanaged _AddEntityIOEventString; - - public unsafe static void AddEntityIOEventString(nint entity, string input, nint activator, nint caller, string value, float delay) { - var pool = ArrayPool.Shared; - var inputLength = Encoding.UTF8.GetByteCount(input); - var inputBuffer = pool.Rent(inputLength + 1); - Encoding.UTF8.GetBytes(input, inputBuffer); - inputBuffer[inputLength] = 0; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* inputBufferPtr = inputBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) { - _AddEntityIOEventString(entity, inputBufferPtr, activator, caller, valueBufferPtr, delay); - pool.Return(inputBuffer); - pool.Return(valueBuffer); - } + + private unsafe static delegate* unmanaged _AddEntityIOEventString; + + public unsafe static void AddEntityIOEventString(nint entity, string input, nint activator, nint caller, string value, float delay) + { + byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* inputBufferPtr = inputBuffer) + { + fixed (byte* valueBufferPtr = valueBuffer) + { + _AddEntityIOEventString(entity, inputBufferPtr, activator, caller, valueBufferPtr, delay); + } + } + } + + private unsafe static delegate* unmanaged _IsValidEntity; + + public unsafe static bool IsValidEntity(nint entity) + { + var ret = _IsValidEntity(entity); + return ret == 1; + } + + private unsafe static delegate* unmanaged _GetGameRules; + + public unsafe static nint GetGameRules() + { + var ret = _GetGameRules(); + return ret; + } + + private unsafe static delegate* unmanaged _GetEntitySystem; + + public unsafe static nint GetEntitySystem() + { + var ret = _GetEntitySystem(); + return ret; + } + + private unsafe static delegate* unmanaged _EntityHandleIsValid; + + public unsafe static bool EntityHandleIsValid(uint handle) + { + var ret = _EntityHandleIsValid(handle); + return ret == 1; } - } - - private unsafe static delegate* unmanaged _IsValidEntity; - - public unsafe static bool IsValidEntity(nint entity) { - var ret = _IsValidEntity(entity); - return ret == 1; - } - - private unsafe static delegate* unmanaged _GetGameRules; - - public unsafe static nint GetGameRules() { - var ret = _GetGameRules(); - return ret; - } - - private unsafe static delegate* unmanaged _GetEntitySystem; - - public unsafe static nint GetEntitySystem() { - var ret = _GetEntitySystem(); - return ret; - } - - private unsafe static delegate* unmanaged _EntityHandleIsValid; - - public unsafe static bool EntityHandleIsValid(uint handle) { - var ret = _EntityHandleIsValid(handle); - return ret == 1; - } - - private unsafe static delegate* unmanaged _EntityHandleGet; - - public unsafe static nint EntityHandleGet(uint handle) { - var ret = _EntityHandleGet(handle); - return ret; - } - - private unsafe static delegate* unmanaged _GetEntityHandleFromEntity; - - public unsafe static uint GetEntityHandleFromEntity(nint entity) { - var ret = _GetEntityHandleFromEntity(entity); - return ret; - } - - private unsafe static delegate* unmanaged _GetFirstActiveEntity; - - public unsafe static nint GetFirstActiveEntity() { - var ret = _GetFirstActiveEntity(); - return ret; - } - - private unsafe static delegate* unmanaged _HookEntityOutput; - - /// - /// CEntityIOOutput*, string outputName, CEntityInstance* activator, CEntityInstance* caller, float delay -> int (HookResult) - /// - public unsafe static ulong HookEntityOutput(string className, string outputName, nint callback) { - var pool = ArrayPool.Shared; - var classNameLength = Encoding.UTF8.GetByteCount(className); - var classNameBuffer = pool.Rent(classNameLength + 1); - Encoding.UTF8.GetBytes(className, classNameBuffer); - classNameBuffer[classNameLength] = 0; - var outputNameLength = Encoding.UTF8.GetByteCount(outputName); - var outputNameBuffer = pool.Rent(outputNameLength + 1); - Encoding.UTF8.GetBytes(outputName, outputNameBuffer); - outputNameBuffer[outputNameLength] = 0; - fixed (byte* classNameBufferPtr = classNameBuffer) { - fixed (byte* outputNameBufferPtr = outputNameBuffer) { - var ret = _HookEntityOutput(classNameBufferPtr, outputNameBufferPtr, callback); - pool.Return(classNameBuffer); - pool.Return(outputNameBuffer); + + private unsafe static delegate* unmanaged _EntityHandleGet; + + public unsafe static nint EntityHandleGet(uint handle) + { + var ret = _EntityHandleGet(handle); return ret; - } } - } - private unsafe static delegate* unmanaged _UnhookEntityOutput; + private unsafe static delegate* unmanaged _GetEntityHandleFromEntity; + + public unsafe static uint GetEntityHandleFromEntity(nint entity) + { + var ret = _GetEntityHandleFromEntity(entity); + return ret; + } - public unsafe static void UnhookEntityOutput(ulong hookid) { - _UnhookEntityOutput(hookid); - } + private unsafe static delegate* unmanaged _GetFirstActiveEntity; - private unsafe static delegate* unmanaged _GetEntityByIndex; + public unsafe static nint GetFirstActiveEntity() + { + var ret = _GetFirstActiveEntity(); + return ret; + } - public unsafe static nint GetEntityByIndex(uint index) { - var ret = _GetEntityByIndex(index); - return ret; - } + private unsafe static delegate* unmanaged _HookEntityOutput; + + /// + /// CEntityIOOutput*, string outputName, CEntityInstance* activator, CEntityInstance* caller, float delay -> int (HookResult) + /// + public unsafe static ulong HookEntityOutput(string className, string outputName, nint callback) + { + byte[] classNameBuffer = Encoding.UTF8.GetBytes(className); + byte[] outputNameBuffer = Encoding.UTF8.GetBytes(outputName); + fixed (byte* classNameBufferPtr = classNameBuffer) + { + fixed (byte* outputNameBufferPtr = outputNameBuffer) + { + var ret = _HookEntityOutput(classNameBufferPtr, outputNameBufferPtr, callback); + return ret; + } + } + } + + private unsafe static delegate* unmanaged _UnhookEntityOutput; + + public unsafe static void UnhookEntityOutput(ulong hookid) + { + _UnhookEntityOutput(hookid); + } + + private unsafe static delegate* unmanaged _GetEntityByIndex; + + public unsafe static nint GetEntityByIndex(uint index) + { + var ret = _GetEntityByIndex(index); + return ret; + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Events.cs b/managed/src/SwiftlyS2.Generated/Natives/Events.cs index fb0efce2f..2c0a6a721 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Events.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Events.cs @@ -1,157 +1,173 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeEvents { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _RegisterOnGameTickCallback; - - /// - /// bool simulating, bool first, bool last -> void - /// - public unsafe static void RegisterOnGameTickCallback(nint callback) { - _RegisterOnGameTickCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnClientConnectCallback; - - /// - /// int32 playerid -> bool (true -> ignored, false -> supercede) - /// - public unsafe static void RegisterOnClientConnectCallback(nint callback) { - _RegisterOnClientConnectCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnClientDisconnectCallback; - - /// - /// int32 playerid, ENetworkDisconnectReason (int32) reason -> void - /// - public unsafe static void RegisterOnClientDisconnectCallback(nint callback) { - _RegisterOnClientDisconnectCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnClientKeyStateChangedCallback; - - /// - /// int32 playerid, string key, bool pressed -> void - /// - public unsafe static void RegisterOnClientKeyStateChangedCallback(nint callback) { - _RegisterOnClientKeyStateChangedCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnClientProcessUsercmdsCallback; - - /// - /// int32 playerid, ptr* usercmds, int numcmds, bool paused, float margin -> void - /// - public unsafe static void RegisterOnClientProcessUsercmdsCallback(nint callback) { - _RegisterOnClientProcessUsercmdsCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnClientPutInServerCallback; - - /// - /// int32 playerid, int32 client_kind (0 -> player, 1 -> bot, 2 -> unknown) -> void - /// - public unsafe static void RegisterOnClientPutInServerCallback(nint callback) { - _RegisterOnClientPutInServerCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnClientSteamAuthorizeCallback; - - /// - /// int32 playerid -> void - /// - public unsafe static void RegisterOnClientSteamAuthorizeCallback(nint callback) { - _RegisterOnClientSteamAuthorizeCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnClientSteamAuthorizeFailCallback; - - /// - /// int32 playerid -> void - /// - public unsafe static void RegisterOnClientSteamAuthorizeFailCallback(nint callback) { - _RegisterOnClientSteamAuthorizeFailCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnEntityCreatedCallback; - - /// - /// CEntityInstance* entity - /// - public unsafe static void RegisterOnEntityCreatedCallback(nint callback) { - _RegisterOnEntityCreatedCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnEntityDeletedCallback; - - /// - /// CEntityInstance* entity - /// - public unsafe static void RegisterOnEntityDeletedCallback(nint callback) { - _RegisterOnEntityDeletedCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnEntityParentChangedCallback; - - /// - /// CEntityInstance* entity, CEntityInstance* newparent - /// - public unsafe static void RegisterOnEntityParentChangedCallback(nint callback) { - _RegisterOnEntityParentChangedCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnEntitySpawnedCallback; - - /// - /// CEntityInstance* entity - /// - public unsafe static void RegisterOnEntitySpawnedCallback(nint callback) { - _RegisterOnEntitySpawnedCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnMapLoadCallback; - - /// - /// string mapname - /// - public unsafe static void RegisterOnMapLoadCallback(nint callback) { - _RegisterOnMapLoadCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnMapUnloadCallback; - - /// - /// string mapname - /// - public unsafe static void RegisterOnMapUnloadCallback(nint callback) { - _RegisterOnMapUnloadCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnEntityTakeDamageCallback; - - /// - /// CBaseEntity* entity, CTakeDamageInfo* info -> bool (true -> ignored, false -> supercede) - /// - public unsafe static void RegisterOnEntityTakeDamageCallback(nint callback) { - _RegisterOnEntityTakeDamageCallback(callback); - } - - private unsafe static delegate* unmanaged _RegisterOnPrecacheResourceCallback; - - /// - /// IEntityResourceManifest* pResourceManifest - /// - public unsafe static void RegisterOnPrecacheResourceCallback(nint callback) { - _RegisterOnPrecacheResourceCallback(callback); - } +internal static class NativeEvents +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _RegisterOnGameTickCallback; + + /// + /// bool simulating, bool first, bool last -> void + /// + public unsafe static void RegisterOnGameTickCallback(nint callback) + { + _RegisterOnGameTickCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnClientConnectCallback; + + /// + /// int32 playerid -> bool (true -> ignored, false -> supercede) + /// + public unsafe static void RegisterOnClientConnectCallback(nint callback) + { + _RegisterOnClientConnectCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnClientDisconnectCallback; + + /// + /// int32 playerid, ENetworkDisconnectReason (int32) reason -> void + /// + public unsafe static void RegisterOnClientDisconnectCallback(nint callback) + { + _RegisterOnClientDisconnectCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnClientKeyStateChangedCallback; + + /// + /// int32 playerid, string key, bool pressed -> void + /// + public unsafe static void RegisterOnClientKeyStateChangedCallback(nint callback) + { + _RegisterOnClientKeyStateChangedCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnClientProcessUsercmdsCallback; + + /// + /// int32 playerid, ptr* usercmds, int numcmds, bool paused, float margin -> void + /// + public unsafe static void RegisterOnClientProcessUsercmdsCallback(nint callback) + { + _RegisterOnClientProcessUsercmdsCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnClientPutInServerCallback; + + /// + /// int32 playerid, int32 client_kind (0 -> player, 1 -> bot, 2 -> unknown) -> void + /// + public unsafe static void RegisterOnClientPutInServerCallback(nint callback) + { + _RegisterOnClientPutInServerCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnClientSteamAuthorizeCallback; + + /// + /// int32 playerid -> void + /// + public unsafe static void RegisterOnClientSteamAuthorizeCallback(nint callback) + { + _RegisterOnClientSteamAuthorizeCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnClientSteamAuthorizeFailCallback; + + /// + /// int32 playerid -> void + /// + public unsafe static void RegisterOnClientSteamAuthorizeFailCallback(nint callback) + { + _RegisterOnClientSteamAuthorizeFailCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnEntityCreatedCallback; + + /// + /// CEntityInstance* entity + /// + public unsafe static void RegisterOnEntityCreatedCallback(nint callback) + { + _RegisterOnEntityCreatedCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnEntityDeletedCallback; + + /// + /// CEntityInstance* entity + /// + public unsafe static void RegisterOnEntityDeletedCallback(nint callback) + { + _RegisterOnEntityDeletedCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnEntityParentChangedCallback; + + /// + /// CEntityInstance* entity, CEntityInstance* newparent + /// + public unsafe static void RegisterOnEntityParentChangedCallback(nint callback) + { + _RegisterOnEntityParentChangedCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnEntitySpawnedCallback; + + /// + /// CEntityInstance* entity + /// + public unsafe static void RegisterOnEntitySpawnedCallback(nint callback) + { + _RegisterOnEntitySpawnedCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnMapLoadCallback; + + /// + /// string mapname + /// + public unsafe static void RegisterOnMapLoadCallback(nint callback) + { + _RegisterOnMapLoadCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnMapUnloadCallback; + + /// + /// string mapname + /// + public unsafe static void RegisterOnMapUnloadCallback(nint callback) + { + _RegisterOnMapUnloadCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnEntityTakeDamageCallback; + + /// + /// CBaseEntity* entity, CTakeDamageInfo* info -> bool (true -> ignored, false -> supercede) + /// + public unsafe static void RegisterOnEntityTakeDamageCallback(nint callback) + { + _RegisterOnEntityTakeDamageCallback(callback); + } + + private unsafe static delegate* unmanaged _RegisterOnPrecacheResourceCallback; + + /// + /// IEntityResourceManifest* pResourceManifest + /// + public unsafe static void RegisterOnPrecacheResourceCallback(nint callback) + { + _RegisterOnPrecacheResourceCallback(callback); + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs b/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs index 2c045d74a..8e7673da7 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs @@ -1,272 +1,205 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeFileSystem { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _GetSearchPath; - - public unsafe static string GetSearchPath(string pathId, int searchPathType, int searchPathsToGet) { - var pool = ArrayPool.Shared; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _GetSearchPath(null, pathIdBufferPtr, searchPathType, searchPathsToGet); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetSearchPath(retBufferPtr, pathIdBufferPtr, searchPathType, searchPathsToGet); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(pathIdBuffer); - return retString; - } +internal static class NativeFileSystem +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _GetSearchPath; + + public unsafe static string GetSearchPath(string pathId, int searchPathType, int searchPathsToGet) + { + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _GetSearchPath(null, pathIdBufferPtr, searchPathType, searchPathsToGet); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetSearchPath(retBufferPtr, pathIdBufferPtr, searchPathType, searchPathsToGet); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } } - } - private unsafe static delegate* unmanaged _AddSearchPath; - - public unsafe static void AddSearchPath(string path, string pathId, int searchPathAdd, int searchPathPriority) { - var pool = ArrayPool.Shared; - var pathLength = Encoding.UTF8.GetByteCount(path); - var pathBuffer = pool.Rent(pathLength + 1); - Encoding.UTF8.GetBytes(path, pathBuffer); - pathBuffer[pathLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* pathBufferPtr = pathBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - _AddSearchPath(pathBufferPtr, pathIdBufferPtr, searchPathAdd, searchPathPriority); - pool.Return(pathBuffer); - pool.Return(pathIdBuffer); - } + private unsafe static delegate* unmanaged _AddSearchPath; + + public unsafe static void AddSearchPath(string path, string pathId, int searchPathAdd, int searchPathPriority) + { + byte[] pathBuffer = Encoding.UTF8.GetBytes(path); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* pathBufferPtr = pathBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + _AddSearchPath(pathBufferPtr, pathIdBufferPtr, searchPathAdd, searchPathPriority); + } + } } - } - - private unsafe static delegate* unmanaged _RemoveSearchPath; - public unsafe static bool RemoveSearchPath(string path, string pathId) { - var pool = ArrayPool.Shared; - var pathLength = Encoding.UTF8.GetByteCount(path); - var pathBuffer = pool.Rent(pathLength + 1); - Encoding.UTF8.GetBytes(path, pathBuffer); - pathBuffer[pathLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* pathBufferPtr = pathBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _RemoveSearchPath(pathBufferPtr, pathIdBufferPtr); - pool.Return(pathBuffer); - pool.Return(pathIdBuffer); - return ret == 1; - } + private unsafe static delegate* unmanaged _RemoveSearchPath; + + public unsafe static bool RemoveSearchPath(string path, string pathId) + { + byte[] pathBuffer = Encoding.UTF8.GetBytes(path); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* pathBufferPtr = pathBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _RemoveSearchPath(pathBufferPtr, pathIdBufferPtr); + return ret == 1; + } + } } - } - - private unsafe static delegate* unmanaged _FileExists; - public unsafe static bool FileExists(string fileName, string pathId) { - var pool = ArrayPool.Shared; - var fileNameLength = Encoding.UTF8.GetByteCount(fileName); - var fileNameBuffer = pool.Rent(fileNameLength + 1); - Encoding.UTF8.GetBytes(fileName, fileNameBuffer); - fileNameBuffer[fileNameLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* fileNameBufferPtr = fileNameBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _FileExists(fileNameBufferPtr, pathIdBufferPtr); - pool.Return(fileNameBuffer); - pool.Return(pathIdBuffer); - return ret == 1; - } + private unsafe static delegate* unmanaged _FileExists; + + public unsafe static bool FileExists(string fileName, string pathId) + { + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* fileNameBufferPtr = fileNameBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _FileExists(fileNameBufferPtr, pathIdBufferPtr); + return ret == 1; + } + } } - } - private unsafe static delegate* unmanaged _IsDirectory; - - public unsafe static bool IsDirectory(string path, string pathId) { - var pool = ArrayPool.Shared; - var pathLength = Encoding.UTF8.GetByteCount(path); - var pathBuffer = pool.Rent(pathLength + 1); - Encoding.UTF8.GetBytes(path, pathBuffer); - pathBuffer[pathLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* pathBufferPtr = pathBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _IsDirectory(pathBufferPtr, pathIdBufferPtr); - pool.Return(pathBuffer); - pool.Return(pathIdBuffer); - return ret == 1; - } + private unsafe static delegate* unmanaged _IsDirectory; + + public unsafe static bool IsDirectory(string path, string pathId) + { + byte[] pathBuffer = Encoding.UTF8.GetBytes(path); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* pathBufferPtr = pathBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _IsDirectory(pathBufferPtr, pathIdBufferPtr); + return ret == 1; + } + } } - } - private unsafe static delegate* unmanaged _PrintSearchPaths; + private unsafe static delegate* unmanaged _PrintSearchPaths; - public unsafe static void PrintSearchPaths() { - _PrintSearchPaths(); - } - - private unsafe static delegate* unmanaged _ReadFile; + public unsafe static void PrintSearchPaths() + { + _PrintSearchPaths(); + } - public unsafe static string ReadFile(string fileName, string pathId) { - var pool = ArrayPool.Shared; - var fileNameLength = Encoding.UTF8.GetByteCount(fileName); - var fileNameBuffer = pool.Rent(fileNameLength + 1); - Encoding.UTF8.GetBytes(fileName, fileNameBuffer); - fileNameBuffer[fileNameLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* fileNameBufferPtr = fileNameBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _ReadFile(null, fileNameBufferPtr, pathIdBufferPtr); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _ReadFile(retBufferPtr, fileNameBufferPtr, pathIdBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(fileNameBuffer); - pool.Return(pathIdBuffer); - return retString; + private unsafe static delegate* unmanaged _ReadFile; + + public unsafe static string ReadFile(string fileName, string pathId) + { + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* fileNameBufferPtr = fileNameBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _ReadFile(null, fileNameBufferPtr, pathIdBufferPtr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _ReadFile(retBufferPtr, fileNameBufferPtr, pathIdBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } } - } } - } - - private unsafe static delegate* unmanaged _WriteFile; - public unsafe static bool WriteFile(string fileName, string pathId, string content) { - var pool = ArrayPool.Shared; - var fileNameLength = Encoding.UTF8.GetByteCount(fileName); - var fileNameBuffer = pool.Rent(fileNameLength + 1); - Encoding.UTF8.GetBytes(fileName, fileNameBuffer); - fileNameBuffer[fileNameLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - var contentLength = Encoding.UTF8.GetByteCount(content); - var contentBuffer = pool.Rent(contentLength + 1); - Encoding.UTF8.GetBytes(content, contentBuffer); - contentBuffer[contentLength] = 0; - fixed (byte* fileNameBufferPtr = fileNameBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - fixed (byte* contentBufferPtr = contentBuffer) { - var ret = _WriteFile(fileNameBufferPtr, pathIdBufferPtr, contentBufferPtr); - pool.Return(fileNameBuffer); - pool.Return(pathIdBuffer); - pool.Return(contentBuffer); - return ret == 1; + private unsafe static delegate* unmanaged _WriteFile; + + public unsafe static bool WriteFile(string fileName, string pathId, string content) + { + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] contentBuffer = Encoding.UTF8.GetBytes(content); + fixed (byte* fileNameBufferPtr = fileNameBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + fixed (byte* contentBufferPtr = contentBuffer) + { + var ret = _WriteFile(fileNameBufferPtr, pathIdBufferPtr, contentBufferPtr); + return ret == 1; + } + } } - } } - } - private unsafe static delegate* unmanaged _GetFileSize; - - public unsafe static uint GetFileSize(string fileName, string pathId) { - var pool = ArrayPool.Shared; - var fileNameLength = Encoding.UTF8.GetByteCount(fileName); - var fileNameBuffer = pool.Rent(fileNameLength + 1); - Encoding.UTF8.GetBytes(fileName, fileNameBuffer); - fileNameBuffer[fileNameLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* fileNameBufferPtr = fileNameBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _GetFileSize(fileNameBufferPtr, pathIdBufferPtr); - pool.Return(fileNameBuffer); - pool.Return(pathIdBuffer); - return ret; - } + private unsafe static delegate* unmanaged _GetFileSize; + + public unsafe static uint GetFileSize(string fileName, string pathId) + { + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* fileNameBufferPtr = fileNameBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _GetFileSize(fileNameBufferPtr, pathIdBufferPtr); + return ret; + } + } } - } - - private unsafe static delegate* unmanaged _PrecacheFile; - public unsafe static bool PrecacheFile(string fileName, string pathId) { - var pool = ArrayPool.Shared; - var fileNameLength = Encoding.UTF8.GetByteCount(fileName); - var fileNameBuffer = pool.Rent(fileNameLength + 1); - Encoding.UTF8.GetBytes(fileName, fileNameBuffer); - fileNameBuffer[fileNameLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* fileNameBufferPtr = fileNameBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _PrecacheFile(fileNameBufferPtr, pathIdBufferPtr); - pool.Return(fileNameBuffer); - pool.Return(pathIdBuffer); - return ret == 1; - } + private unsafe static delegate* unmanaged _PrecacheFile; + + public unsafe static bool PrecacheFile(string fileName, string pathId) + { + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* fileNameBufferPtr = fileNameBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _PrecacheFile(fileNameBufferPtr, pathIdBufferPtr); + return ret == 1; + } + } } - } - - private unsafe static delegate* unmanaged _IsFileWritable; - public unsafe static bool IsFileWritable(string fileName, string pathId) { - var pool = ArrayPool.Shared; - var fileNameLength = Encoding.UTF8.GetByteCount(fileName); - var fileNameBuffer = pool.Rent(fileNameLength + 1); - Encoding.UTF8.GetBytes(fileName, fileNameBuffer); - fileNameBuffer[fileNameLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* fileNameBufferPtr = fileNameBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _IsFileWritable(fileNameBufferPtr, pathIdBufferPtr); - pool.Return(fileNameBuffer); - pool.Return(pathIdBuffer); - return ret == 1; - } + private unsafe static delegate* unmanaged _IsFileWritable; + + public unsafe static bool IsFileWritable(string fileName, string pathId) + { + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* fileNameBufferPtr = fileNameBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _IsFileWritable(fileNameBufferPtr, pathIdBufferPtr); + return ret == 1; + } + } } - } - private unsafe static delegate* unmanaged _SetFileWritable; - - public unsafe static bool SetFileWritable(string fileName, string pathId, bool writable) { - var pool = ArrayPool.Shared; - var fileNameLength = Encoding.UTF8.GetByteCount(fileName); - var fileNameBuffer = pool.Rent(fileNameLength + 1); - Encoding.UTF8.GetBytes(fileName, fileNameBuffer); - fileNameBuffer[fileNameLength] = 0; - var pathIdLength = Encoding.UTF8.GetByteCount(pathId); - var pathIdBuffer = pool.Rent(pathIdLength + 1); - Encoding.UTF8.GetBytes(pathId, pathIdBuffer); - pathIdBuffer[pathIdLength] = 0; - fixed (byte* fileNameBufferPtr = fileNameBuffer) { - fixed (byte* pathIdBufferPtr = pathIdBuffer) { - var ret = _SetFileWritable(fileNameBufferPtr, pathIdBufferPtr, writable ? (byte)1 : (byte)0); - pool.Return(fileNameBuffer); - pool.Return(pathIdBuffer); - return ret == 1; - } + private unsafe static delegate* unmanaged _SetFileWritable; + + public unsafe static bool SetFileWritable(string fileName, string pathId, bool writable) + { + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + fixed (byte* fileNameBufferPtr = fileNameBuffer) + { + fixed (byte* pathIdBufferPtr = pathIdBuffer) + { + var ret = _SetFileWritable(fileNameBufferPtr, pathIdBufferPtr, writable ? (byte)1 : (byte)0); + return ret == 1; + } + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs b/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs index 2b7e3a325..cf27125c4 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs @@ -1,498 +1,423 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeGameEvents { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _GetBool; - - public unsafe static bool GetBool(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetBool(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret == 1; - } - } - - private unsafe static delegate* unmanaged _GetInt; - - public unsafe static int GetInt(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetInt(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetUint64; - - public unsafe static ulong GetUint64(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetUint64(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetFloat; - - public unsafe static float GetFloat(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetFloat(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetString; - - public unsafe static string GetString(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetString(null, _event, keyBufferPtr); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetString(retBufferPtr, _event, keyBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(keyBuffer); - return retString; - } - } - } - - private unsafe static delegate* unmanaged _GetPtr; - - public unsafe static nint GetPtr(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetPtr(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetEHandle; - - /// - /// returns the pointer stored inside the handle - /// - public unsafe static nint GetEHandle(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetEHandle(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetEntity; - - public unsafe static nint GetEntity(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetEntity(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetEntityIndex; - - public unsafe static int GetEntityIndex(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetEntityIndex(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetPlayerSlot; - - public unsafe static int GetPlayerSlot(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetPlayerSlot(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetPlayerController; - - public unsafe static nint GetPlayerController(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetPlayerController(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetPlayerPawn; - - public unsafe static nint GetPlayerPawn(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetPlayerPawn(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetPawnEHandle; - - /// - /// returns the pointer stored inside the handle - /// - public unsafe static nint GetPawnEHandle(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetPawnEHandle(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetPawnEntityIndex; - - public unsafe static int GetPawnEntityIndex(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _GetPawnEntityIndex(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetBool; - - public unsafe static void SetBool(nint _event, string key, bool value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetBool(_event, keyBufferPtr, value ? (byte)1 : (byte)0); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetInt; - - public unsafe static void SetInt(nint _event, string key, int value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetInt(_event, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetUint64; - - public unsafe static void SetUint64(nint _event, string key, ulong value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetUint64(_event, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetFloat; - - public unsafe static void SetFloat(nint _event, string key, float value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetFloat(_event, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetString; - - public unsafe static void SetString(nint _event, string key, string value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) { - _SetString(_event, keyBufferPtr, valueBufferPtr); - pool.Return(keyBuffer); - pool.Return(valueBuffer); - } - } - } - - private unsafe static delegate* unmanaged _SetPtr; - - public unsafe static void SetPtr(nint _event, string key, nint value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetPtr(_event, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetEntity; - - public unsafe static void SetEntity(nint _event, string key, nint value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetEntity(_event, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetEntityIndex; - - public unsafe static void SetEntityIndex(nint _event, string key, int value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetEntityIndex(_event, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _SetPlayerSlot; - - public unsafe static void SetPlayerSlot(nint _event, string key, int value) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - _SetPlayerSlot(_event, keyBufferPtr, value); - pool.Return(keyBuffer); - } - } - - private unsafe static delegate* unmanaged _HasKey; - - public unsafe static bool HasKey(nint _event, string key) { - var pool = ArrayPool.Shared; - var keyLength = Encoding.UTF8.GetByteCount(key); - var keyBuffer = pool.Rent(keyLength + 1); - Encoding.UTF8.GetBytes(key, keyBuffer); - keyBuffer[keyLength] = 0; - fixed (byte* keyBufferPtr = keyBuffer) { - var ret = _HasKey(_event, keyBufferPtr); - pool.Return(keyBuffer); - return ret == 1; - } - } - - private unsafe static delegate* unmanaged _IsReliable; - - public unsafe static bool IsReliable(nint _event) { - var ret = _IsReliable(_event); - return ret == 1; - } - - private unsafe static delegate* unmanaged _IsLocal; - - public unsafe static bool IsLocal(nint _event) { - var ret = _IsLocal(_event); - return ret == 1; - } - - private unsafe static delegate* unmanaged _RegisterListener; - - public unsafe static void RegisterListener(string eventName) { - var pool = ArrayPool.Shared; - var eventNameLength = Encoding.UTF8.GetByteCount(eventName); - var eventNameBuffer = pool.Rent(eventNameLength + 1); - Encoding.UTF8.GetBytes(eventName, eventNameBuffer); - eventNameBuffer[eventNameLength] = 0; - fixed (byte* eventNameBufferPtr = eventNameBuffer) { - _RegisterListener(eventNameBufferPtr); - pool.Return(eventNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddListenerPreCallback; - - /// - /// the callback should receive the following: uint32 eventNameHash, IntPtr gameEvent, bool* dontBroadcast, return bool (true -> ignored, false -> supercede) - /// - public unsafe static ulong AddListenerPreCallback(nint callback) { - var ret = _AddListenerPreCallback(callback); - return ret; - } - - private unsafe static delegate* unmanaged _AddListenerPostCallback; - - /// - /// the callback should receive the following: uint32 eventNameHash, IntPtr gameEvent, bool* dontBroadcast, return bool (true -> ignored, false -> supercede) - /// - public unsafe static ulong AddListenerPostCallback(nint callback) { - var ret = _AddListenerPostCallback(callback); - return ret; - } - - private unsafe static delegate* unmanaged _RemoveListenerPreCallback; - - public unsafe static void RemoveListenerPreCallback(ulong listenerID) { - _RemoveListenerPreCallback(listenerID); - } - - private unsafe static delegate* unmanaged _RemoveListenerPostCallback; - - public unsafe static void RemoveListenerPostCallback(ulong listenerID) { - _RemoveListenerPostCallback(listenerID); - } - - private unsafe static delegate* unmanaged _CreateEvent; - - public unsafe static nint CreateEvent(string eventName) { - var pool = ArrayPool.Shared; - var eventNameLength = Encoding.UTF8.GetByteCount(eventName); - var eventNameBuffer = pool.Rent(eventNameLength + 1); - Encoding.UTF8.GetBytes(eventName, eventNameBuffer); - eventNameBuffer[eventNameLength] = 0; - fixed (byte* eventNameBufferPtr = eventNameBuffer) { - var ret = _CreateEvent(eventNameBufferPtr); - pool.Return(eventNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _FreeEvent; - - public unsafe static void FreeEvent(nint _event) { - _FreeEvent(_event); - } +internal static class NativeGameEvents +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _FireEvent; + private unsafe static delegate* unmanaged _GetBool; - public unsafe static void FireEvent(nint _event, bool dontBroadcast) { - _FireEvent(_event, dontBroadcast ? (byte)1 : (byte)0); - } - - private unsafe static delegate* unmanaged _FireEventToClient; - - public unsafe static void FireEventToClient(nint _event, int playerid) { - _FireEventToClient(_event, playerid); - } + public unsafe static bool GetBool(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetBool(_event, keyBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _GetInt; + + public unsafe static int GetInt(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetInt(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetUint64; + + public unsafe static ulong GetUint64(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetUint64(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetFloat; + + public unsafe static float GetFloat(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetFloat(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetString; + + public unsafe static string GetString(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetString(null, _event, keyBufferPtr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetString(retBufferPtr, _event, keyBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } + } + + private unsafe static delegate* unmanaged _GetPtr; + + public unsafe static nint GetPtr(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetPtr(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetEHandle; + + /// + /// returns the pointer stored inside the handle + /// + public unsafe static nint GetEHandle(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetEHandle(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetEntity; + + public unsafe static nint GetEntity(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetEntity(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetEntityIndex; + + public unsafe static int GetEntityIndex(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetEntityIndex(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetPlayerSlot; + + public unsafe static int GetPlayerSlot(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetPlayerSlot(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetPlayerController; + + public unsafe static nint GetPlayerController(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetPlayerController(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetPlayerPawn; + + public unsafe static nint GetPlayerPawn(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetPlayerPawn(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetPawnEHandle; + + /// + /// returns the pointer stored inside the handle + /// + public unsafe static nint GetPawnEHandle(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetPawnEHandle(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetPawnEntityIndex; + + public unsafe static int GetPawnEntityIndex(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _GetPawnEntityIndex(_event, keyBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetBool; + + public unsafe static void SetBool(nint _event, string key, bool value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetBool(_event, keyBufferPtr, value ? (byte)1 : (byte)0); + } + } + + private unsafe static delegate* unmanaged _SetInt; + + public unsafe static void SetInt(nint _event, string key, int value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetInt(_event, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetUint64; + + public unsafe static void SetUint64(nint _event, string key, ulong value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetUint64(_event, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetFloat; + + public unsafe static void SetFloat(nint _event, string key, float value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetFloat(_event, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetString; + + public unsafe static void SetString(nint _event, string key, string value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* keyBufferPtr = keyBuffer) + { + fixed (byte* valueBufferPtr = valueBuffer) + { + _SetString(_event, keyBufferPtr, valueBufferPtr); + } + } + } - private unsafe static delegate* unmanaged _IsPlayerListeningToEventName; + private unsafe static delegate* unmanaged _SetPtr; - public unsafe static bool IsPlayerListeningToEventName(int playerid, string eventName) { - var pool = ArrayPool.Shared; - var eventNameLength = Encoding.UTF8.GetByteCount(eventName); - var eventNameBuffer = pool.Rent(eventNameLength + 1); - Encoding.UTF8.GetBytes(eventName, eventNameBuffer); - eventNameBuffer[eventNameLength] = 0; - fixed (byte* eventNameBufferPtr = eventNameBuffer) { - var ret = _IsPlayerListeningToEventName(playerid, eventNameBufferPtr); - pool.Return(eventNameBuffer); - return ret == 1; + public unsafe static void SetPtr(nint _event, string key, nint value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetPtr(_event, keyBufferPtr, value); + } } - } - private unsafe static delegate* unmanaged _IsPlayerListeningToEvent; - - public unsafe static bool IsPlayerListeningToEvent(int playerid, nint _event) { - var ret = _IsPlayerListeningToEvent(playerid, _event); - return ret == 1; - } + private unsafe static delegate* unmanaged _SetEntity; + + public unsafe static void SetEntity(nint _event, string key, nint value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetEntity(_event, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetEntityIndex; + + public unsafe static void SetEntityIndex(nint _event, string key, int value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetEntityIndex(_event, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetPlayerSlot; + + public unsafe static void SetPlayerSlot(nint _event, string key, int value) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + _SetPlayerSlot(_event, keyBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _HasKey; + + public unsafe static bool HasKey(nint _event, string key) + { + byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + fixed (byte* keyBufferPtr = keyBuffer) + { + var ret = _HasKey(_event, keyBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _IsReliable; + + public unsafe static bool IsReliable(nint _event) + { + var ret = _IsReliable(_event); + return ret == 1; + } + + private unsafe static delegate* unmanaged _IsLocal; + + public unsafe static bool IsLocal(nint _event) + { + var ret = _IsLocal(_event); + return ret == 1; + } + + private unsafe static delegate* unmanaged _RegisterListener; + + public unsafe static void RegisterListener(string eventName) + { + byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName); + fixed (byte* eventNameBufferPtr = eventNameBuffer) + { + _RegisterListener(eventNameBufferPtr); + } + } + + private unsafe static delegate* unmanaged _AddListenerPreCallback; + + /// + /// the callback should receive the following: uint32 eventNameHash, IntPtr gameEvent, bool* dontBroadcast, return bool (true -> ignored, false -> supercede) + /// + public unsafe static ulong AddListenerPreCallback(nint callback) + { + var ret = _AddListenerPreCallback(callback); + return ret; + } + + private unsafe static delegate* unmanaged _AddListenerPostCallback; + + /// + /// the callback should receive the following: uint32 eventNameHash, IntPtr gameEvent, bool* dontBroadcast, return bool (true -> ignored, false -> supercede) + /// + public unsafe static ulong AddListenerPostCallback(nint callback) + { + var ret = _AddListenerPostCallback(callback); + return ret; + } + + private unsafe static delegate* unmanaged _RemoveListenerPreCallback; + + public unsafe static void RemoveListenerPreCallback(ulong listenerID) + { + _RemoveListenerPreCallback(listenerID); + } + + private unsafe static delegate* unmanaged _RemoveListenerPostCallback; + + public unsafe static void RemoveListenerPostCallback(ulong listenerID) + { + _RemoveListenerPostCallback(listenerID); + } + + private unsafe static delegate* unmanaged _CreateEvent; + + public unsafe static nint CreateEvent(string eventName) + { + byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName); + fixed (byte* eventNameBufferPtr = eventNameBuffer) + { + var ret = _CreateEvent(eventNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _FreeEvent; + + public unsafe static void FreeEvent(nint _event) + { + _FreeEvent(_event); + } + + private unsafe static delegate* unmanaged _FireEvent; + + public unsafe static void FireEvent(nint _event, bool dontBroadcast) + { + _FireEvent(_event, dontBroadcast ? (byte)1 : (byte)0); + } + + private unsafe static delegate* unmanaged _FireEventToClient; + + public unsafe static void FireEventToClient(nint _event, int playerid) + { + _FireEventToClient(_event, playerid); + } + + private unsafe static delegate* unmanaged _IsPlayerListeningToEventName; + + public unsafe static bool IsPlayerListeningToEventName(int playerid, string eventName) + { + byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName); + fixed (byte* eventNameBufferPtr = eventNameBuffer) + { + var ret = _IsPlayerListeningToEventName(playerid, eventNameBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _IsPlayerListeningToEvent; + + public unsafe static bool IsPlayerListeningToEvent(int playerid, nint _event) + { + var ret = _IsPlayerListeningToEvent(playerid, _event); + return ret == 1; + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Hooks.cs b/managed/src/SwiftlyS2.Generated/Natives/Hooks.cs index 37f8d97df..18db02861 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Hooks.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Hooks.cs @@ -1,150 +1,170 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeHooks { - private static int _MainThreadID; +internal static class NativeHooks +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _AllocateHook; + private unsafe static delegate* unmanaged _AllocateHook; - public unsafe static nint AllocateHook() { - var ret = _AllocateHook(); - return ret; - } + public unsafe static nint AllocateHook() + { + var ret = _AllocateHook(); + return ret; + } - private unsafe static delegate* unmanaged _AllocateVHook; + private unsafe static delegate* unmanaged _AllocateVHook; - public unsafe static nint AllocateVHook() { - var ret = _AllocateVHook(); - return ret; - } + public unsafe static nint AllocateVHook() + { + var ret = _AllocateVHook(); + return ret; + } - private unsafe static delegate* unmanaged _AllocateMHook; + private unsafe static delegate* unmanaged _AllocateMHook; - public unsafe static nint AllocateMHook() { - var ret = _AllocateMHook(); - return ret; - } + public unsafe static nint AllocateMHook() + { + var ret = _AllocateMHook(); + return ret; + } - private unsafe static delegate* unmanaged _DeallocateHook; + private unsafe static delegate* unmanaged _DeallocateHook; - public unsafe static void DeallocateHook(nint hook) { - _DeallocateHook(hook); - } + public unsafe static void DeallocateHook(nint hook) + { + _DeallocateHook(hook); + } - private unsafe static delegate* unmanaged _DeallocateVHook; + private unsafe static delegate* unmanaged _DeallocateVHook; - public unsafe static void DeallocateVHook(nint hook) { - _DeallocateVHook(hook); - } + public unsafe static void DeallocateVHook(nint hook) + { + _DeallocateVHook(hook); + } - private unsafe static delegate* unmanaged _DeallocateMHook; + private unsafe static delegate* unmanaged _DeallocateMHook; - public unsafe static void DeallocateMHook(nint hook) { - _DeallocateMHook(hook); - } + public unsafe static void DeallocateMHook(nint hook) + { + _DeallocateMHook(hook); + } - private unsafe static delegate* unmanaged _SetHook; + private unsafe static delegate* unmanaged _SetHook; - /// - /// the callback should receive the exact arguments as the function has, and to return the same amount of arguments - /// - public unsafe static void SetHook(nint hook, nint func, nint callback) { - _SetHook(hook, func, callback); - } + /// + /// the callback should receive the exact arguments as the function has, and to return the same amount of arguments + /// + public unsafe static void SetHook(nint hook, nint func, nint callback) + { + _SetHook(hook, func, callback); + } - private unsafe static delegate* unmanaged _SetVHook; + private unsafe static delegate* unmanaged _SetVHook; - /// - /// the callback should receive the exact arguments as the function has, and to return the same amount of arguments, plus the first argument needs to be the pointer to the original function - /// - public unsafe static void SetVHook(nint hook, nint entityOrVTable, int index, nint callback, bool isVtable) { - _SetVHook(hook, entityOrVTable, index, callback, isVtable ? (byte)1 : (byte)0); - } + /// + /// the callback should receive the exact arguments as the function has, and to return the same amount of arguments, plus the first argument needs to be the pointer to the original function + /// + public unsafe static void SetVHook(nint hook, nint entityOrVTable, int index, nint callback, bool isVtable) + { + _SetVHook(hook, entityOrVTable, index, callback, isVtable ? (byte)1 : (byte)0); + } - private unsafe static delegate* unmanaged _SetMHook; + private unsafe static delegate* unmanaged _SetMHook; - /// - /// the callback should receive `ref Context64` - /// - public unsafe static void SetMHook(nint hook, nint addr, nint callback) { - _SetMHook(hook, addr, callback); - } + /// + /// the callback should receive `ref Context64` + /// + public unsafe static void SetMHook(nint hook, nint addr, nint callback) + { + _SetMHook(hook, addr, callback); + } - private unsafe static delegate* unmanaged _EnableHook; + private unsafe static delegate* unmanaged _EnableHook; - public unsafe static void EnableHook(nint hook) { - _EnableHook(hook); - } + public unsafe static void EnableHook(nint hook) + { + _EnableHook(hook); + } - private unsafe static delegate* unmanaged _EnableVHook; + private unsafe static delegate* unmanaged _EnableVHook; - public unsafe static void EnableVHook(nint hook) { - _EnableVHook(hook); - } + public unsafe static void EnableVHook(nint hook) + { + _EnableVHook(hook); + } - private unsafe static delegate* unmanaged _EnableMHook; + private unsafe static delegate* unmanaged _EnableMHook; - public unsafe static void EnableMHook(nint hook) { - _EnableMHook(hook); - } + public unsafe static void EnableMHook(nint hook) + { + _EnableMHook(hook); + } - private unsafe static delegate* unmanaged _DisableHook; + private unsafe static delegate* unmanaged _DisableHook; - public unsafe static void DisableHook(nint hook) { - _DisableHook(hook); - } + public unsafe static void DisableHook(nint hook) + { + _DisableHook(hook); + } - private unsafe static delegate* unmanaged _DisableVHook; + private unsafe static delegate* unmanaged _DisableVHook; - public unsafe static void DisableVHook(nint hook) { - _DisableVHook(hook); - } + public unsafe static void DisableVHook(nint hook) + { + _DisableVHook(hook); + } - private unsafe static delegate* unmanaged _DisableMHook; + private unsafe static delegate* unmanaged _DisableMHook; - public unsafe static void DisableMHook(nint hook) { - _DisableMHook(hook); - } + public unsafe static void DisableMHook(nint hook) + { + _DisableMHook(hook); + } - private unsafe static delegate* unmanaged _IsHookEnabled; + private unsafe static delegate* unmanaged _IsHookEnabled; - public unsafe static bool IsHookEnabled(nint hook) { - var ret = _IsHookEnabled(hook); - return ret == 1; - } + public unsafe static bool IsHookEnabled(nint hook) + { + var ret = _IsHookEnabled(hook); + return ret == 1; + } - private unsafe static delegate* unmanaged _IsVHookEnabled; + private unsafe static delegate* unmanaged _IsVHookEnabled; - public unsafe static bool IsVHookEnabled(nint hook) { - var ret = _IsVHookEnabled(hook); - return ret == 1; - } + public unsafe static bool IsVHookEnabled(nint hook) + { + var ret = _IsVHookEnabled(hook); + return ret == 1; + } - private unsafe static delegate* unmanaged _IsMHookEnabled; + private unsafe static delegate* unmanaged _IsMHookEnabled; - public unsafe static bool IsMHookEnabled(nint hook) { - var ret = _IsMHookEnabled(hook); - return ret == 1; - } + public unsafe static bool IsMHookEnabled(nint hook) + { + var ret = _IsMHookEnabled(hook); + return ret == 1; + } + + private unsafe static delegate* unmanaged _GetHookOriginal; - private unsafe static delegate* unmanaged _GetHookOriginal; + public unsafe static nint GetHookOriginal(nint hook) + { + var ret = _GetHookOriginal(hook); + return ret; + } + + private unsafe static delegate* unmanaged _GetVHookOriginal; - public unsafe static nint GetHookOriginal(nint hook) { - var ret = _GetHookOriginal(hook); - return ret; - } - - private unsafe static delegate* unmanaged _GetVHookOriginal; - - public unsafe static nint GetVHookOriginal(nint hook) { - var ret = _GetVHookOriginal(hook); - return ret; - } + public unsafe static nint GetVHookOriginal(nint hook) + { + var ret = _GetVHookOriginal(hook); + return ret; + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs b/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs index 0f73860a1..b57bf7f14 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs @@ -1,111 +1,93 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeMemoryHelpers { - private static int _MainThreadID; +internal static class NativeMemoryHelpers +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _FetchInterfaceByName; + private unsafe static delegate* unmanaged _FetchInterfaceByName; - /// - /// supports both internal interface system, but also valve interface system - /// - public unsafe static nint FetchInterfaceByName(string ifaceName) { - var pool = ArrayPool.Shared; - var ifaceNameLength = Encoding.UTF8.GetByteCount(ifaceName); - var ifaceNameBuffer = pool.Rent(ifaceNameLength + 1); - Encoding.UTF8.GetBytes(ifaceName, ifaceNameBuffer); - ifaceNameBuffer[ifaceNameLength] = 0; - fixed (byte* ifaceNameBufferPtr = ifaceNameBuffer) { - var ret = _FetchInterfaceByName(ifaceNameBufferPtr); - pool.Return(ifaceNameBuffer); - return ret; + /// + /// supports both internal interface system, but also valve interface system + /// + public unsafe static nint FetchInterfaceByName(string ifaceName) + { + byte[] ifaceNameBuffer = Encoding.UTF8.GetBytes(ifaceName); + fixed (byte* ifaceNameBufferPtr = ifaceNameBuffer) + { + var ret = _FetchInterfaceByName(ifaceNameBufferPtr); + return ret; + } } - } - private unsafe static delegate* unmanaged _GetVirtualTableAddress; + private unsafe static delegate* unmanaged _GetVirtualTableAddress; - public unsafe static nint GetVirtualTableAddress(string library, string vtableName) { - var pool = ArrayPool.Shared; - var libraryLength = Encoding.UTF8.GetByteCount(library); - var libraryBuffer = pool.Rent(libraryLength + 1); - Encoding.UTF8.GetBytes(library, libraryBuffer); - libraryBuffer[libraryLength] = 0; - var vtableNameLength = Encoding.UTF8.GetByteCount(vtableName); - var vtableNameBuffer = pool.Rent(vtableNameLength + 1); - Encoding.UTF8.GetBytes(vtableName, vtableNameBuffer); - vtableNameBuffer[vtableNameLength] = 0; - fixed (byte* libraryBufferPtr = libraryBuffer) { - fixed (byte* vtableNameBufferPtr = vtableNameBuffer) { - var ret = _GetVirtualTableAddress(libraryBufferPtr, vtableNameBufferPtr); - pool.Return(libraryBuffer); - pool.Return(vtableNameBuffer); - return ret; - } + public unsafe static nint GetVirtualTableAddress(string library, string vtableName) + { + byte[] libraryBuffer = Encoding.UTF8.GetBytes(library); + byte[] vtableNameBuffer = Encoding.UTF8.GetBytes(vtableName); + fixed (byte* libraryBufferPtr = libraryBuffer) + { + fixed (byte* vtableNameBufferPtr = vtableNameBuffer) + { + var ret = _GetVirtualTableAddress(libraryBufferPtr, vtableNameBufferPtr); + return ret; + } + } } - } - private unsafe static delegate* unmanaged _GetAddressBySignature; + private unsafe static delegate* unmanaged _GetAddressBySignature; - public unsafe static nint GetAddressBySignature(string library, string sig, int len, bool rawBytes) { - var pool = ArrayPool.Shared; - var libraryLength = Encoding.UTF8.GetByteCount(library); - var libraryBuffer = pool.Rent(libraryLength + 1); - Encoding.UTF8.GetBytes(library, libraryBuffer); - libraryBuffer[libraryLength] = 0; - var sigLength = Encoding.UTF8.GetByteCount(sig); - var sigBuffer = pool.Rent(sigLength + 1); - Encoding.UTF8.GetBytes(sig, sigBuffer); - sigBuffer[sigLength] = 0; - fixed (byte* libraryBufferPtr = libraryBuffer) { - fixed (byte* sigBufferPtr = sigBuffer) { - var ret = _GetAddressBySignature(libraryBufferPtr, sigBufferPtr, len, rawBytes ? (byte)1 : (byte)0); - pool.Return(libraryBuffer); - pool.Return(sigBuffer); - return ret; - } + public unsafe static nint GetAddressBySignature(string library, string sig, int len, bool rawBytes) + { + byte[] libraryBuffer = Encoding.UTF8.GetBytes(library); + byte[] sigBuffer = Encoding.UTF8.GetBytes(sig); + fixed (byte* libraryBufferPtr = libraryBuffer) + { + fixed (byte* sigBufferPtr = sigBuffer) + { + var ret = _GetAddressBySignature(libraryBufferPtr, sigBufferPtr, len, rawBytes ? (byte)1 : (byte)0); + return ret; + } + } } - } - private unsafe static delegate* unmanaged _GetObjectPtrVtableName; + private unsafe static delegate* unmanaged _GetObjectPtrVtableName; - public unsafe static string GetObjectPtrVtableName(nint objptr) { - var ret = _GetObjectPtrVtableName(null, objptr); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetObjectPtrVtableName(retBufferPtr, objptr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + public unsafe static string GetObjectPtrVtableName(nint objptr) + { + var ret = _GetObjectPtrVtableName(null, objptr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetObjectPtrVtableName(retBufferPtr, objptr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - private unsafe static delegate* unmanaged _ObjectPtrHasVtable; + private unsafe static delegate* unmanaged _ObjectPtrHasVtable; - public unsafe static bool ObjectPtrHasVtable(nint objptr) { - var ret = _ObjectPtrHasVtable(objptr); - return ret == 1; - } + public unsafe static bool ObjectPtrHasVtable(nint objptr) + { + var ret = _ObjectPtrHasVtable(objptr); + return ret == 1; + } - private unsafe static delegate* unmanaged _ObjectPtrHasBaseClass; + private unsafe static delegate* unmanaged _ObjectPtrHasBaseClass; - public unsafe static bool ObjectPtrHasBaseClass(nint objptr, string baseClassName) { - var pool = ArrayPool.Shared; - var baseClassNameLength = Encoding.UTF8.GetByteCount(baseClassName); - var baseClassNameBuffer = pool.Rent(baseClassNameLength + 1); - Encoding.UTF8.GetBytes(baseClassName, baseClassNameBuffer); - baseClassNameBuffer[baseClassNameLength] = 0; - fixed (byte* baseClassNameBufferPtr = baseClassNameBuffer) { - var ret = _ObjectPtrHasBaseClass(objptr, baseClassNameBufferPtr); - pool.Return(baseClassNameBuffer); - return ret == 1; + public unsafe static bool ObjectPtrHasBaseClass(nint objptr, string baseClassName) + { + byte[] baseClassNameBuffer = Encoding.UTF8.GetBytes(baseClassName); + fixed (byte* baseClassNameBufferPtr = baseClassNameBuffer) + { + var ret = _ObjectPtrHasBaseClass(objptr, baseClassNameBufferPtr); + return ret == 1; + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs b/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs index 91e00dcc2..bc0053e28 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs @@ -1,1169 +1,953 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeNetMessages { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _AllocateNetMessageByID; - - public unsafe static nint AllocateNetMessageByID(int msgid) { - var ret = _AllocateNetMessageByID(msgid); - return ret; - } - - private unsafe static delegate* unmanaged _AllocateNetMessageByPartialName; - - public unsafe static nint AllocateNetMessageByPartialName(string name) { - var pool = ArrayPool.Shared; - var nameLength = Encoding.UTF8.GetByteCount(name); - var nameBuffer = pool.Rent(nameLength + 1); - Encoding.UTF8.GetBytes(name, nameBuffer); - nameBuffer[nameLength] = 0; - fixed (byte* nameBufferPtr = nameBuffer) { - var ret = _AllocateNetMessageByPartialName(nameBufferPtr); - pool.Return(nameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _DeallocateNetMessage; - - public unsafe static void DeallocateNetMessage(nint netmsg) { - _DeallocateNetMessage(netmsg); - } - - private unsafe static delegate* unmanaged _HasField; - - public unsafe static bool HasField(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _HasField(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret == 1; - } - } - - private unsafe static delegate* unmanaged _GetInt32; - - public unsafe static int GetInt32(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetInt32(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedInt32; - - public unsafe static int GetRepeatedInt32(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedInt32(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetInt32; - - public unsafe static void SetInt32(nint netmsg, string fieldName, int value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetInt32(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedInt32; - - public unsafe static void SetRepeatedInt32(nint netmsg, string fieldName, int index, int value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedInt32(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddInt32; - - public unsafe static void AddInt32(nint netmsg, string fieldName, int value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddInt32(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetInt64; - - public unsafe static long GetInt64(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetInt64(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedInt64; - - public unsafe static long GetRepeatedInt64(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedInt64(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetInt64; - - public unsafe static void SetInt64(nint netmsg, string fieldName, long value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetInt64(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedInt64; - - public unsafe static void SetRepeatedInt64(nint netmsg, string fieldName, int index, long value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedInt64(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddInt64; - - public unsafe static void AddInt64(nint netmsg, string fieldName, long value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddInt64(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetUInt32; - - public unsafe static uint GetUInt32(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetUInt32(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedUInt32; - - public unsafe static uint GetRepeatedUInt32(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedUInt32(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetUInt32; - - public unsafe static void SetUInt32(nint netmsg, string fieldName, uint value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetUInt32(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedUInt32; - - public unsafe static void SetRepeatedUInt32(nint netmsg, string fieldName, int index, uint value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedUInt32(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddUInt32; - - public unsafe static void AddUInt32(nint netmsg, string fieldName, uint value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddUInt32(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetUInt64; - - public unsafe static ulong GetUInt64(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetUInt64(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedUInt64; - - public unsafe static ulong GetRepeatedUInt64(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedUInt64(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetUInt64; - - public unsafe static void SetUInt64(nint netmsg, string fieldName, ulong value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetUInt64(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedUInt64; - - public unsafe static void SetRepeatedUInt64(nint netmsg, string fieldName, int index, ulong value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedUInt64(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddUInt64; - - public unsafe static void AddUInt64(nint netmsg, string fieldName, ulong value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddUInt64(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetBool; - - public unsafe static bool GetBool(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetBool(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret == 1; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedBool; - - public unsafe static bool GetRepeatedBool(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedBool(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret == 1; - } - } - - private unsafe static delegate* unmanaged _SetBool; - - public unsafe static void SetBool(nint netmsg, string fieldName, bool value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetBool(netmsg, fieldNameBufferPtr, value ? (byte)1 : (byte)0); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedBool; - - public unsafe static void SetRepeatedBool(nint netmsg, string fieldName, int index, bool value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedBool(netmsg, fieldNameBufferPtr, index, value ? (byte)1 : (byte)0); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddBool; - - public unsafe static void AddBool(nint netmsg, string fieldName, bool value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddBool(netmsg, fieldNameBufferPtr, value ? (byte)1 : (byte)0); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetFloat; - - public unsafe static float GetFloat(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetFloat(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedFloat; - - public unsafe static float GetRepeatedFloat(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedFloat(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetFloat; - - public unsafe static void SetFloat(nint netmsg, string fieldName, float value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetFloat(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedFloat; - - public unsafe static void SetRepeatedFloat(nint netmsg, string fieldName, int index, float value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedFloat(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddFloat; - - public unsafe static void AddFloat(nint netmsg, string fieldName, float value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddFloat(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetDouble; - - public unsafe static double GetDouble(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetDouble(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedDouble; - - public unsafe static double GetRepeatedDouble(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedDouble(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetDouble; - - public unsafe static void SetDouble(nint netmsg, string fieldName, double value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetDouble(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedDouble; - - public unsafe static void SetRepeatedDouble(nint netmsg, string fieldName, int index, double value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedDouble(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddDouble; - - public unsafe static void AddDouble(nint netmsg, string fieldName, double value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddDouble(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetString; - - public unsafe static string GetString(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetString(null, netmsg, fieldNameBufferPtr); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetString(retBufferPtr, netmsg, fieldNameBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(fieldNameBuffer); - return retString; - } - } - } - - private unsafe static delegate* unmanaged _GetRepeatedString; - - public unsafe static string GetRepeatedString(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedString(null, netmsg, fieldNameBufferPtr, index); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetRepeatedString(retBufferPtr, netmsg, fieldNameBufferPtr, index); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - pool.Return(fieldNameBuffer); - return retString; - } - } - } - - private unsafe static delegate* unmanaged _SetString; - - public unsafe static void SetString(nint netmsg, string fieldName, string value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) { - _SetString(netmsg, fieldNameBufferPtr, valueBufferPtr); - pool.Return(fieldNameBuffer); - pool.Return(valueBuffer); - } - } - } - - private unsafe static delegate* unmanaged _SetRepeatedString; - - public unsafe static void SetRepeatedString(nint netmsg, string fieldName, int index, string value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) { - _SetRepeatedString(netmsg, fieldNameBufferPtr, index, valueBufferPtr); - pool.Return(fieldNameBuffer); - pool.Return(valueBuffer); - } - } - } - - private unsafe static delegate* unmanaged _AddString; - - public unsafe static void AddString(nint netmsg, string fieldName, string value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - var valueLength = Encoding.UTF8.GetByteCount(value); - var valueBuffer = pool.Rent(valueLength + 1); - Encoding.UTF8.GetBytes(value, valueBuffer); - valueBuffer[valueLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) { - _AddString(netmsg, fieldNameBufferPtr, valueBufferPtr); - pool.Return(fieldNameBuffer); - pool.Return(valueBuffer); - } - } - } - - private unsafe static delegate* unmanaged _GetVector2D; - - public unsafe static Vector2D GetVector2D(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetVector2D(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedVector2D; - - public unsafe static Vector2D GetRepeatedVector2D(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedVector2D(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetVector2D; - - public unsafe static void SetVector2D(nint netmsg, string fieldName, Vector2D value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetVector2D(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedVector2D; - - public unsafe static void SetRepeatedVector2D(nint netmsg, string fieldName, int index, Vector2D value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedVector2D(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddVector2D; - - public unsafe static void AddVector2D(nint netmsg, string fieldName, Vector2D value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddVector2D(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetVector; - - public unsafe static Vector GetVector(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetVector(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedVector; - - public unsafe static Vector GetRepeatedVector(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedVector(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetVector; - - public unsafe static void SetVector(nint netmsg, string fieldName, Vector value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetVector(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedVector; - - public unsafe static void SetRepeatedVector(nint netmsg, string fieldName, int index, Vector value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedVector(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddVector; - - public unsafe static void AddVector(nint netmsg, string fieldName, Vector value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddVector(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetColor; - - public unsafe static Color GetColor(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetColor(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedColor; - - public unsafe static Color GetRepeatedColor(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedColor(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetColor; - - public unsafe static void SetColor(nint netmsg, string fieldName, Color value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetColor(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedColor; - - public unsafe static void SetRepeatedColor(nint netmsg, string fieldName, int index, Color value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedColor(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddColor; - - public unsafe static void AddColor(nint netmsg, string fieldName, Color value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddColor(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetQAngle; - - public unsafe static QAngle GetQAngle(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetQAngle(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedQAngle; - - public unsafe static QAngle GetRepeatedQAngle(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedQAngle(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _SetQAngle; - - public unsafe static void SetQAngle(nint netmsg, string fieldName, QAngle value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetQAngle(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SetRepeatedQAngle; - - public unsafe static void SetRepeatedQAngle(nint netmsg, string fieldName, int index, QAngle value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetRepeatedQAngle(netmsg, fieldNameBufferPtr, index, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _AddQAngle; - - public unsafe static void AddQAngle(nint netmsg, string fieldName, QAngle value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _AddQAngle(netmsg, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _GetBytes; - - public unsafe static byte[] GetBytes(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetBytes(null, netmsg, fieldNameBufferPtr); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetBytes(retBufferPtr, netmsg, fieldNameBufferPtr); - var retBytes = new byte[ret]; - for (int i = 0; i < ret; i++) retBytes[i] = retBufferPtr[i]; - pool.Return(retBuffer); - pool.Return(fieldNameBuffer); - return retBytes; - } - } - } - - private unsafe static delegate* unmanaged _GetRepeatedBytes; - - public unsafe static byte[] GetRepeatedBytes(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedBytes(null, netmsg, fieldNameBufferPtr, index); - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetRepeatedBytes(retBufferPtr, netmsg, fieldNameBufferPtr, index); - var retBytes = new byte[ret]; - for (int i = 0; i < ret; i++) retBytes[i] = retBufferPtr[i]; - pool.Return(retBuffer); - pool.Return(fieldNameBuffer); - return retBytes; - } - } - } - - private unsafe static delegate* unmanaged _SetBytes; - - public unsafe static void SetBytes(nint netmsg, string fieldName, byte[] value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - var valueLength = value.Length; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = value) { - _SetBytes(netmsg, fieldNameBufferPtr, valueBufferPtr, valueLength); - pool.Return(fieldNameBuffer); - } - } - } - - private unsafe static delegate* unmanaged _SetRepeatedBytes; - - public unsafe static void SetRepeatedBytes(nint netmsg, string fieldName, int index, byte[] value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - var valueLength = value.Length; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = value) { - _SetRepeatedBytes(netmsg, fieldNameBufferPtr, index, valueBufferPtr, valueLength); - pool.Return(fieldNameBuffer); - } - } - } - - private unsafe static delegate* unmanaged _AddBytes; - - public unsafe static void AddBytes(nint netmsg, string fieldName, byte[] value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - var valueLength = value.Length; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = value) { - _AddBytes(netmsg, fieldNameBufferPtr, valueBufferPtr, valueLength); - pool.Return(fieldNameBuffer); - } - } - } - - private unsafe static delegate* unmanaged _GetNestedMessage; - - public unsafe static nint GetNestedMessage(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetNestedMessage(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedNestedMessage; - - public unsafe static nint GetRepeatedNestedMessage(nint netmsg, string fieldName, int index) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedNestedMessage(netmsg, fieldNameBufferPtr, index); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _AddNestedMessage; - - public unsafe static nint AddNestedMessage(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _AddNestedMessage(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _GetRepeatedFieldSize; - - public unsafe static int GetRepeatedFieldSize(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetRepeatedFieldSize(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; - } - } - - private unsafe static delegate* unmanaged _ClearRepeatedField; - - public unsafe static void ClearRepeatedField(nint netmsg, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _ClearRepeatedField(netmsg, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - } - } - - private unsafe static delegate* unmanaged _SendMessage; - - public unsafe static void SendMessage(nint netmsg, int msgid, int playerid) { - _SendMessage(netmsg, msgid, playerid); - } - - private unsafe static delegate* unmanaged _SendMessageToPlayers; - - /// - /// each bit in player_mask represents a playerid - /// - public unsafe static void SendMessageToPlayers(nint netmsg, int msgid, ulong playermask) { - _SendMessageToPlayers(netmsg, msgid, playermask); - } - - private unsafe static delegate* unmanaged _AddNetMessageServerHook; - - /// - /// the callback should receive the following: uint64* playermask_ptr, int netmessage_id, void* netmsg, return bool (true -> ignored, false -> supercede) - /// - public unsafe static ulong AddNetMessageServerHook(nint callback) { - var ret = _AddNetMessageServerHook(callback); - return ret; - } - - private unsafe static delegate* unmanaged _RemoveNetMessageServerHook; - - public unsafe static void RemoveNetMessageServerHook(ulong callbackID) { - _RemoveNetMessageServerHook(callbackID); - } - - private unsafe static delegate* unmanaged _AddNetMessageClientHook; - - /// - /// the callback should receive the following: int32 playerid, int netmessage_id, void* netmsg, return bool (true -> ignored, false -> supercede) - /// - public unsafe static ulong AddNetMessageClientHook(nint callback) { - var ret = _AddNetMessageClientHook(callback); - return ret; - } - - private unsafe static delegate* unmanaged _RemoveNetMessageClientHook; - - public unsafe static void RemoveNetMessageClientHook(ulong callbackID) { - _RemoveNetMessageClientHook(callbackID); - } +internal static class NativeNetMessages +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _AllocateNetMessageByID; + + public unsafe static nint AllocateNetMessageByID(int msgid) + { + var ret = _AllocateNetMessageByID(msgid); + return ret; + } + + private unsafe static delegate* unmanaged _AllocateNetMessageByPartialName; + + public unsafe static nint AllocateNetMessageByPartialName(string name) + { + byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + fixed (byte* nameBufferPtr = nameBuffer) + { + var ret = _AllocateNetMessageByPartialName(nameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _DeallocateNetMessage; + + public unsafe static void DeallocateNetMessage(nint netmsg) + { + _DeallocateNetMessage(netmsg); + } + + private unsafe static delegate* unmanaged _HasField; + + public unsafe static bool HasField(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _HasField(netmsg, fieldNameBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _GetInt32; + + public unsafe static int GetInt32(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetInt32(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedInt32; + + public unsafe static int GetRepeatedInt32(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedInt32(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetInt32; + + public unsafe static void SetInt32(nint netmsg, string fieldName, int value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetInt32(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedInt32; + + public unsafe static void SetRepeatedInt32(nint netmsg, string fieldName, int index, int value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedInt32(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddInt32; + + public unsafe static void AddInt32(nint netmsg, string fieldName, int value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddInt32(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetInt64; + + public unsafe static long GetInt64(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetInt64(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedInt64; + + public unsafe static long GetRepeatedInt64(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedInt64(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetInt64; + + public unsafe static void SetInt64(nint netmsg, string fieldName, long value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetInt64(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedInt64; + + public unsafe static void SetRepeatedInt64(nint netmsg, string fieldName, int index, long value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedInt64(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddInt64; + + public unsafe static void AddInt64(nint netmsg, string fieldName, long value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddInt64(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetUInt32; + + public unsafe static uint GetUInt32(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetUInt32(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedUInt32; + + public unsafe static uint GetRepeatedUInt32(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedUInt32(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetUInt32; + + public unsafe static void SetUInt32(nint netmsg, string fieldName, uint value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetUInt32(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedUInt32; + + public unsafe static void SetRepeatedUInt32(nint netmsg, string fieldName, int index, uint value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedUInt32(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddUInt32; + + public unsafe static void AddUInt32(nint netmsg, string fieldName, uint value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddUInt32(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetUInt64; + + public unsafe static ulong GetUInt64(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetUInt64(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedUInt64; + + public unsafe static ulong GetRepeatedUInt64(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedUInt64(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetUInt64; + + public unsafe static void SetUInt64(nint netmsg, string fieldName, ulong value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetUInt64(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedUInt64; + + public unsafe static void SetRepeatedUInt64(nint netmsg, string fieldName, int index, ulong value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedUInt64(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddUInt64; + + public unsafe static void AddUInt64(nint netmsg, string fieldName, ulong value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddUInt64(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetBool; + + public unsafe static bool GetBool(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetBool(netmsg, fieldNameBufferPtr); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedBool; + + public unsafe static bool GetRepeatedBool(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedBool(netmsg, fieldNameBufferPtr, index); + return ret == 1; + } + } + + private unsafe static delegate* unmanaged _SetBool; + + public unsafe static void SetBool(nint netmsg, string fieldName, bool value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetBool(netmsg, fieldNameBufferPtr, value ? (byte)1 : (byte)0); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedBool; + + public unsafe static void SetRepeatedBool(nint netmsg, string fieldName, int index, bool value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedBool(netmsg, fieldNameBufferPtr, index, value ? (byte)1 : (byte)0); + } + } + + private unsafe static delegate* unmanaged _AddBool; + + public unsafe static void AddBool(nint netmsg, string fieldName, bool value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddBool(netmsg, fieldNameBufferPtr, value ? (byte)1 : (byte)0); + } + } + + private unsafe static delegate* unmanaged _GetFloat; + + public unsafe static float GetFloat(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetFloat(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedFloat; + + public unsafe static float GetRepeatedFloat(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedFloat(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetFloat; + + public unsafe static void SetFloat(nint netmsg, string fieldName, float value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetFloat(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedFloat; + + public unsafe static void SetRepeatedFloat(nint netmsg, string fieldName, int index, float value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedFloat(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddFloat; + + public unsafe static void AddFloat(nint netmsg, string fieldName, float value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddFloat(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetDouble; + + public unsafe static double GetDouble(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetDouble(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedDouble; + + public unsafe static double GetRepeatedDouble(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedDouble(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetDouble; + + public unsafe static void SetDouble(nint netmsg, string fieldName, double value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetDouble(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedDouble; + + public unsafe static void SetRepeatedDouble(nint netmsg, string fieldName, int index, double value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedDouble(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddDouble; + + public unsafe static void AddDouble(nint netmsg, string fieldName, double value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddDouble(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetString; + + public unsafe static string GetString(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetString(null, netmsg, fieldNameBufferPtr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetString(retBufferPtr, netmsg, fieldNameBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } + } + + private unsafe static delegate* unmanaged _GetRepeatedString; + + public unsafe static string GetRepeatedString(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedString(null, netmsg, fieldNameBufferPtr, index); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetRepeatedString(retBufferPtr, netmsg, fieldNameBufferPtr, index); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } + } + } + + private unsafe static delegate* unmanaged _SetString; + + public unsafe static void SetString(nint netmsg, string fieldName, string value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + fixed (byte* valueBufferPtr = valueBuffer) + { + _SetString(netmsg, fieldNameBufferPtr, valueBufferPtr); + } + } + } + + private unsafe static delegate* unmanaged _SetRepeatedString; + + public unsafe static void SetRepeatedString(nint netmsg, string fieldName, int index, string value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + fixed (byte* valueBufferPtr = valueBuffer) + { + _SetRepeatedString(netmsg, fieldNameBufferPtr, index, valueBufferPtr); + } + } + } + + private unsafe static delegate* unmanaged _AddString; + + public unsafe static void AddString(nint netmsg, string fieldName, string value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + fixed (byte* valueBufferPtr = valueBuffer) + { + _AddString(netmsg, fieldNameBufferPtr, valueBufferPtr); + } + } + } + + private unsafe static delegate* unmanaged _GetVector2D; + + public unsafe static Vector2D GetVector2D(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetVector2D(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedVector2D; + + public unsafe static Vector2D GetRepeatedVector2D(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedVector2D(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetVector2D; + + public unsafe static void SetVector2D(nint netmsg, string fieldName, Vector2D value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetVector2D(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedVector2D; + + public unsafe static void SetRepeatedVector2D(nint netmsg, string fieldName, int index, Vector2D value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedVector2D(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddVector2D; + + public unsafe static void AddVector2D(nint netmsg, string fieldName, Vector2D value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddVector2D(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetVector; + + public unsafe static Vector GetVector(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetVector(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedVector; + + public unsafe static Vector GetRepeatedVector(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedVector(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetVector; + + public unsafe static void SetVector(nint netmsg, string fieldName, Vector value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetVector(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedVector; + + public unsafe static void SetRepeatedVector(nint netmsg, string fieldName, int index, Vector value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedVector(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddVector; + + public unsafe static void AddVector(nint netmsg, string fieldName, Vector value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddVector(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetColor; + + public unsafe static Color GetColor(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetColor(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedColor; + + public unsafe static Color GetRepeatedColor(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedColor(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetColor; + + public unsafe static void SetColor(nint netmsg, string fieldName, Color value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetColor(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedColor; + + public unsafe static void SetRepeatedColor(nint netmsg, string fieldName, int index, Color value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedColor(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddColor; + + public unsafe static void AddColor(nint netmsg, string fieldName, Color value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddColor(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetQAngle; + + public unsafe static QAngle GetQAngle(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetQAngle(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedQAngle; + + public unsafe static QAngle GetRepeatedQAngle(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedQAngle(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _SetQAngle; + + public unsafe static void SetQAngle(nint netmsg, string fieldName, QAngle value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetQAngle(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _SetRepeatedQAngle; + + public unsafe static void SetRepeatedQAngle(nint netmsg, string fieldName, int index, QAngle value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetRepeatedQAngle(netmsg, fieldNameBufferPtr, index, value); + } + } + + private unsafe static delegate* unmanaged _AddQAngle; + + public unsafe static void AddQAngle(nint netmsg, string fieldName, QAngle value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _AddQAngle(netmsg, fieldNameBufferPtr, value); + } + } + + private unsafe static delegate* unmanaged _GetBytes; + + public unsafe static byte[] GetBytes(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetBytes(null, netmsg, fieldNameBufferPtr); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetBytes(retBufferPtr, netmsg, fieldNameBufferPtr); + var retBytes = new byte[ret]; + for (int i = 0; i < ret; i++) retBytes[i] = retBufferPtr[i]; + return retBytes; + } + } + } + + private unsafe static delegate* unmanaged _GetRepeatedBytes; + + public unsafe static byte[] GetRepeatedBytes(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedBytes(null, netmsg, fieldNameBufferPtr, index); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetRepeatedBytes(retBufferPtr, netmsg, fieldNameBufferPtr, index); + var retBytes = new byte[ret]; + for (int i = 0; i < ret; i++) retBytes[i] = retBufferPtr[i]; + return retBytes; + } + } + } + + private unsafe static delegate* unmanaged _SetBytes; + + public unsafe static void SetBytes(nint netmsg, string fieldName, byte[] value) + { + var valueLength = value.Length; + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + fixed (byte* valueBufferPtr = value) + { + _SetBytes(netmsg, fieldNameBufferPtr, valueBufferPtr, valueLength); + } + } + } + + private unsafe static delegate* unmanaged _SetRepeatedBytes; + + public unsafe static void SetRepeatedBytes(nint netmsg, string fieldName, int index, byte[] value) + { + var valueLength = value.Length; + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + fixed (byte* valueBufferPtr = value) + { + _SetRepeatedBytes(netmsg, fieldNameBufferPtr, index, valueBufferPtr, valueLength); + } + } + } + + private unsafe static delegate* unmanaged _AddBytes; + + public unsafe static void AddBytes(nint netmsg, string fieldName, byte[] value) + { + var valueLength = value.Length; + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + fixed (byte* valueBufferPtr = value) + { + _AddBytes(netmsg, fieldNameBufferPtr, valueBufferPtr, valueLength); + } + } + } + + private unsafe static delegate* unmanaged _GetNestedMessage; + + public unsafe static nint GetNestedMessage(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetNestedMessage(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedNestedMessage; + + public unsafe static nint GetRepeatedNestedMessage(nint netmsg, string fieldName, int index) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedNestedMessage(netmsg, fieldNameBufferPtr, index); + return ret; + } + } + + private unsafe static delegate* unmanaged _AddNestedMessage; + + public unsafe static nint AddNestedMessage(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _AddNestedMessage(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _GetRepeatedFieldSize; + + public unsafe static int GetRepeatedFieldSize(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetRepeatedFieldSize(netmsg, fieldNameBufferPtr); + return ret; + } + } + + private unsafe static delegate* unmanaged _ClearRepeatedField; + + public unsafe static void ClearRepeatedField(nint netmsg, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _ClearRepeatedField(netmsg, fieldNameBufferPtr); + } + } + + private unsafe static delegate* unmanaged _SendMessage; + + public unsafe static void SendMessage(nint netmsg, int msgid, int playerid) + { + _SendMessage(netmsg, msgid, playerid); + } + + private unsafe static delegate* unmanaged _SendMessageToPlayers; + + /// + /// each bit in player_mask represents a playerid + /// + public unsafe static void SendMessageToPlayers(nint netmsg, int msgid, ulong playermask) + { + _SendMessageToPlayers(netmsg, msgid, playermask); + } + + private unsafe static delegate* unmanaged _AddNetMessageServerHook; + + /// + /// the callback should receive the following: uint64* playermask_ptr, int netmessage_id, void* netmsg, return bool (true -> ignored, false -> supercede) + /// + public unsafe static ulong AddNetMessageServerHook(nint callback) + { + var ret = _AddNetMessageServerHook(callback); + return ret; + } + + private unsafe static delegate* unmanaged _RemoveNetMessageServerHook; + + public unsafe static void RemoveNetMessageServerHook(ulong callbackID) + { + _RemoveNetMessageServerHook(callbackID); + } + + private unsafe static delegate* unmanaged _AddNetMessageClientHook; + + /// + /// the callback should receive the following: int32 playerid, int netmessage_id, void* netmsg, return bool (true -> ignored, false -> supercede) + /// + public unsafe static ulong AddNetMessageClientHook(nint callback) + { + var ret = _AddNetMessageClientHook(callback); + return ret; + } + + private unsafe static delegate* unmanaged _RemoveNetMessageClientHook; + + public unsafe static void RemoveNetMessageClientHook(ulong callbackID) + { + _RemoveNetMessageClientHook(callbackID); + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Offsets.cs b/managed/src/SwiftlyS2.Generated/Natives/Offsets.cs index 8a06d82b8..18f2b78c5 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Offsets.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Offsets.cs @@ -1,43 +1,37 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeOffsets { - private static int _MainThreadID; +internal static class NativeOffsets +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _Exists; + private unsafe static delegate* unmanaged _Exists; - public unsafe static bool Exists(string name) { - var pool = ArrayPool.Shared; - var nameLength = Encoding.UTF8.GetByteCount(name); - var nameBuffer = pool.Rent(nameLength + 1); - Encoding.UTF8.GetBytes(name, nameBuffer); - nameBuffer[nameLength] = 0; - fixed (byte* nameBufferPtr = nameBuffer) { - var ret = _Exists(nameBufferPtr); - pool.Return(nameBuffer); - return ret == 1; + public unsafe static bool Exists(string name) + { + byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + fixed (byte* nameBufferPtr = nameBuffer) + { + var ret = _Exists(nameBufferPtr); + return ret == 1; + } } - } - private unsafe static delegate* unmanaged _Fetch; + private unsafe static delegate* unmanaged _Fetch; - public unsafe static int Fetch(string name) { - var pool = ArrayPool.Shared; - var nameLength = Encoding.UTF8.GetByteCount(name); - var nameBuffer = pool.Rent(nameLength + 1); - Encoding.UTF8.GetBytes(name, nameBuffer); - nameBuffer[nameLength] = 0; - fixed (byte* nameBufferPtr = nameBuffer) { - var ret = _Fetch(nameBufferPtr); - pool.Return(nameBuffer); - return ret; + public unsafe static int Fetch(string name) + { + byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + fixed (byte* nameBufferPtr = nameBuffer) + { + var ret = _Fetch(nameBufferPtr); + return ret; + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Patches.cs b/managed/src/SwiftlyS2.Generated/Natives/Patches.cs index 8404fcff2..c54088167 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Patches.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Patches.cs @@ -1,56 +1,47 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativePatches { - private static int _MainThreadID; +internal static class NativePatches +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _Apply; + private unsafe static delegate* unmanaged _Apply; - public unsafe static void Apply(string patchName) { - var pool = ArrayPool.Shared; - var patchNameLength = Encoding.UTF8.GetByteCount(patchName); - var patchNameBuffer = pool.Rent(patchNameLength + 1); - Encoding.UTF8.GetBytes(patchName, patchNameBuffer); - patchNameBuffer[patchNameLength] = 0; - fixed (byte* patchNameBufferPtr = patchNameBuffer) { - _Apply(patchNameBufferPtr); - pool.Return(patchNameBuffer); + public unsafe static void Apply(string patchName) + { + byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName); + fixed (byte* patchNameBufferPtr = patchNameBuffer) + { + _Apply(patchNameBufferPtr); + } } - } - - private unsafe static delegate* unmanaged _Revert; - - public unsafe static void Revert(string patchName) { - var pool = ArrayPool.Shared; - var patchNameLength = Encoding.UTF8.GetByteCount(patchName); - var patchNameBuffer = pool.Rent(patchNameLength + 1); - Encoding.UTF8.GetBytes(patchName, patchNameBuffer); - patchNameBuffer[patchNameLength] = 0; - fixed (byte* patchNameBufferPtr = patchNameBuffer) { - _Revert(patchNameBufferPtr); - pool.Return(patchNameBuffer); + + private unsafe static delegate* unmanaged _Revert; + + public unsafe static void Revert(string patchName) + { + byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName); + fixed (byte* patchNameBufferPtr = patchNameBuffer) + { + _Revert(patchNameBufferPtr); + } } - } - - private unsafe static delegate* unmanaged _Exists; - - public unsafe static bool Exists(string patchName) { - var pool = ArrayPool.Shared; - var patchNameLength = Encoding.UTF8.GetByteCount(patchName); - var patchNameBuffer = pool.Rent(patchNameLength + 1); - Encoding.UTF8.GetBytes(patchName, patchNameBuffer); - patchNameBuffer[patchNameLength] = 0; - fixed (byte* patchNameBufferPtr = patchNameBuffer) { - var ret = _Exists(patchNameBufferPtr); - pool.Return(patchNameBuffer); - return ret == 1; + + private unsafe static delegate* unmanaged _Exists; + + public unsafe static bool Exists(string patchName) + { + byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName); + fixed (byte* patchNameBufferPtr = patchNameBuffer) + { + var ret = _Exists(patchNameBufferPtr); + return ret == 1; + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Player.cs b/managed/src/SwiftlyS2.Generated/Natives/Player.cs index e7abaf327..5a1857b6d 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Player.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Player.cs @@ -1,230 +1,231 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativePlayer { - private static int _MainThreadID; +internal static class NativePlayer +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _SendMessage; + private unsafe static delegate* unmanaged _SendMessage; - public unsafe static void SendMessage(int playerid, int kind, string message, int htmlDuration) { - var pool = ArrayPool.Shared; - var messageLength = Encoding.UTF8.GetByteCount(message); - var messageBuffer = pool.Rent(messageLength + 1); - Encoding.UTF8.GetBytes(message, messageBuffer); - messageBuffer[messageLength] = 0; - fixed (byte* messageBufferPtr = messageBuffer) { - _SendMessage(playerid, kind, messageBufferPtr, htmlDuration); - pool.Return(messageBuffer); + public unsafe static void SendMessage(int playerid, int kind, string message, int htmlDuration) + { + byte[] messageBuffer = Encoding.UTF8.GetBytes(message); + fixed (byte* messageBufferPtr = messageBuffer) + { + _SendMessage(playerid, kind, messageBufferPtr, htmlDuration); + } } - } - private unsafe static delegate* unmanaged _IsFakeClient; + private unsafe static delegate* unmanaged _IsFakeClient; - public unsafe static bool IsFakeClient(int playerid) { - var ret = _IsFakeClient(playerid); - return ret == 1; - } + public unsafe static bool IsFakeClient(int playerid) + { + var ret = _IsFakeClient(playerid); + return ret == 1; + } - private unsafe static delegate* unmanaged _IsAuthorized; + private unsafe static delegate* unmanaged _IsAuthorized; - public unsafe static bool IsAuthorized(int playerid) { - var ret = _IsAuthorized(playerid); - return ret == 1; - } + public unsafe static bool IsAuthorized(int playerid) + { + var ret = _IsAuthorized(playerid); + return ret == 1; + } - private unsafe static delegate* unmanaged _GetConnectedTime; + private unsafe static delegate* unmanaged _GetConnectedTime; - public unsafe static uint GetConnectedTime(int playerid) { - var ret = _GetConnectedTime(playerid); - return ret; - } + public unsafe static uint GetConnectedTime(int playerid) + { + var ret = _GetConnectedTime(playerid); + return ret; + } - private unsafe static delegate* unmanaged _GetUnauthorizedSteamID; + private unsafe static delegate* unmanaged _GetUnauthorizedSteamID; - public unsafe static ulong GetUnauthorizedSteamID(int playerid) { - var ret = _GetUnauthorizedSteamID(playerid); - return ret; - } + public unsafe static ulong GetUnauthorizedSteamID(int playerid) + { + var ret = _GetUnauthorizedSteamID(playerid); + return ret; + } - private unsafe static delegate* unmanaged _GetSteamID; + private unsafe static delegate* unmanaged _GetSteamID; - public unsafe static ulong GetSteamID(int playerid) { - var ret = _GetSteamID(playerid); - return ret; - } + public unsafe static ulong GetSteamID(int playerid) + { + var ret = _GetSteamID(playerid); + return ret; + } - private unsafe static delegate* unmanaged _GetController; + private unsafe static delegate* unmanaged _GetController; - public unsafe static nint GetController(int playerid) { - var ret = _GetController(playerid); - return ret; - } + public unsafe static nint GetController(int playerid) + { + var ret = _GetController(playerid); + return ret; + } - private unsafe static delegate* unmanaged _GetPawn; + private unsafe static delegate* unmanaged _GetPawn; - public unsafe static nint GetPawn(int playerid) { - var ret = _GetPawn(playerid); - return ret; - } + public unsafe static nint GetPawn(int playerid) + { + var ret = _GetPawn(playerid); + return ret; + } - private unsafe static delegate* unmanaged _GetPlayerPawn; + private unsafe static delegate* unmanaged _GetPlayerPawn; - public unsafe static nint GetPlayerPawn(int playerid) { - var ret = _GetPlayerPawn(playerid); - return ret; - } + public unsafe static nint GetPlayerPawn(int playerid) + { + var ret = _GetPlayerPawn(playerid); + return ret; + } - private unsafe static delegate* unmanaged _GetPressedButtons; + private unsafe static delegate* unmanaged _GetPressedButtons; - public unsafe static ulong GetPressedButtons(int playerid) { - var ret = _GetPressedButtons(playerid); - return ret; - } + public unsafe static ulong GetPressedButtons(int playerid) + { + var ret = _GetPressedButtons(playerid); + return ret; + } - private unsafe static delegate* unmanaged _PerformCommand; + private unsafe static delegate* unmanaged _PerformCommand; - public unsafe static void PerformCommand(int playerid, string command) { - var pool = ArrayPool.Shared; - var commandLength = Encoding.UTF8.GetByteCount(command); - var commandBuffer = pool.Rent(commandLength + 1); - Encoding.UTF8.GetBytes(command, commandBuffer); - commandBuffer[commandLength] = 0; - fixed (byte* commandBufferPtr = commandBuffer) { - _PerformCommand(playerid, commandBufferPtr); - pool.Return(commandBuffer); + public unsafe static void PerformCommand(int playerid, string command) + { + byte[] commandBuffer = Encoding.UTF8.GetBytes(command); + fixed (byte* commandBufferPtr = commandBuffer) + { + _PerformCommand(playerid, commandBufferPtr); + } } - } - - private unsafe static delegate* unmanaged _GetIPAddress; - public unsafe static string GetIPAddress(int playerid) { - var ret = _GetIPAddress(null, playerid); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetIPAddress(retBufferPtr, playerid); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + private unsafe static delegate* unmanaged _GetIPAddress; + + public unsafe static string GetIPAddress(int playerid) + { + var ret = _GetIPAddress(null, playerid); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetIPAddress(retBufferPtr, playerid); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - private unsafe static delegate* unmanaged _Kick; + private unsafe static delegate* unmanaged _Kick; - public unsafe static void Kick(int playerid, string reason, int gamereason) { - var pool = ArrayPool.Shared; - var reasonLength = Encoding.UTF8.GetByteCount(reason); - var reasonBuffer = pool.Rent(reasonLength + 1); - Encoding.UTF8.GetBytes(reason, reasonBuffer); - reasonBuffer[reasonLength] = 0; - fixed (byte* reasonBufferPtr = reasonBuffer) { - _Kick(playerid, reasonBufferPtr, gamereason); - pool.Return(reasonBuffer); + public unsafe static void Kick(int playerid, string reason, int gamereason) + { + byte[] reasonBuffer = Encoding.UTF8.GetBytes(reason); + fixed (byte* reasonBufferPtr = reasonBuffer) + { + _Kick(playerid, reasonBufferPtr, gamereason); + } } - } - private unsafe static delegate* unmanaged _ShouldBlockTransmitEntity; + private unsafe static delegate* unmanaged _ShouldBlockTransmitEntity; - public unsafe static void ShouldBlockTransmitEntity(int playerid, int entityidx, bool shouldBlockTransmit) { - _ShouldBlockTransmitEntity(playerid, entityidx, shouldBlockTransmit ? (byte)1 : (byte)0); - } - - private unsafe static delegate* unmanaged _IsTransmitEntityBlocked; + public unsafe static void ShouldBlockTransmitEntity(int playerid, int entityidx, bool shouldBlockTransmit) + { + _ShouldBlockTransmitEntity(playerid, entityidx, shouldBlockTransmit ? (byte)1 : (byte)0); + } - public unsafe static bool IsTransmitEntityBlocked(int playerid, int entityidx) { - var ret = _IsTransmitEntityBlocked(playerid, entityidx); - return ret == 1; - } + private unsafe static delegate* unmanaged _IsTransmitEntityBlocked; - private unsafe static delegate* unmanaged _ClearTransmitEntityBlocked; + public unsafe static bool IsTransmitEntityBlocked(int playerid, int entityidx) + { + var ret = _IsTransmitEntityBlocked(playerid, entityidx); + return ret == 1; + } - public unsafe static void ClearTransmitEntityBlocked(int playerid) { - _ClearTransmitEntityBlocked(playerid); - } + private unsafe static delegate* unmanaged _ClearTransmitEntityBlocked; - private unsafe static delegate* unmanaged _ChangeTeam; + public unsafe static void ClearTransmitEntityBlocked(int playerid) + { + _ClearTransmitEntityBlocked(playerid); + } - public unsafe static void ChangeTeam(int playerid, int newteam) { - _ChangeTeam(playerid, newteam); - } + private unsafe static delegate* unmanaged _ChangeTeam; - private unsafe static delegate* unmanaged _SwitchTeam; + public unsafe static void ChangeTeam(int playerid, int newteam) + { + _ChangeTeam(playerid, newteam); + } - public unsafe static void SwitchTeam(int playerid, int newteam) { - _SwitchTeam(playerid, newteam); - } + private unsafe static delegate* unmanaged _SwitchTeam; - private unsafe static delegate* unmanaged _TakeDamage; + public unsafe static void SwitchTeam(int playerid, int newteam) + { + _SwitchTeam(playerid, newteam); + } - public unsafe static void TakeDamage(int playerid, nint dmginfo) { - _TakeDamage(playerid, dmginfo); - } + private unsafe static delegate* unmanaged _TakeDamage; - private unsafe static delegate* unmanaged _Teleport; + public unsafe static void TakeDamage(int playerid, nint dmginfo) + { + _TakeDamage(playerid, dmginfo); + } - public unsafe static void Teleport(int playerid, Vector pos, QAngle angle, Vector velocity) { - _Teleport(playerid, pos, angle, velocity); - } + private unsafe static delegate* unmanaged _Teleport; - private unsafe static delegate* unmanaged _GetLanguage; + public unsafe static void Teleport(int playerid, Vector pos, QAngle angle, Vector velocity) + { + _Teleport(playerid, pos, angle, velocity); + } - public unsafe static string GetLanguage(int playerid) { - var ret = _GetLanguage(null, playerid); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetLanguage(retBufferPtr, playerid); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + private unsafe static delegate* unmanaged _GetLanguage; + + public unsafe static string GetLanguage(int playerid) + { + var ret = _GetLanguage(null, playerid); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetLanguage(retBufferPtr, playerid); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - private unsafe static delegate* unmanaged _SetCenterMenuRender; + private unsafe static delegate* unmanaged _SetCenterMenuRender; - public unsafe static void SetCenterMenuRender(int playerid, string text) { - var pool = ArrayPool.Shared; - var textLength = Encoding.UTF8.GetByteCount(text); - var textBuffer = pool.Rent(textLength + 1); - Encoding.UTF8.GetBytes(text, textBuffer); - textBuffer[textLength] = 0; - fixed (byte* textBufferPtr = textBuffer) { - _SetCenterMenuRender(playerid, textBufferPtr); - pool.Return(textBuffer); + public unsafe static void SetCenterMenuRender(int playerid, string text) + { + byte[] textBuffer = Encoding.UTF8.GetBytes(text); + fixed (byte* textBufferPtr = textBuffer) + { + _SetCenterMenuRender(playerid, textBufferPtr); + } } - } - private unsafe static delegate* unmanaged _ClearCenterMenuRender; + private unsafe static delegate* unmanaged _ClearCenterMenuRender; - public unsafe static void ClearCenterMenuRender(int playerid) { - _ClearCenterMenuRender(playerid); - } + public unsafe static void ClearCenterMenuRender(int playerid) + { + _ClearCenterMenuRender(playerid); + } - private unsafe static delegate* unmanaged _HasMenuShown; + private unsafe static delegate* unmanaged _HasMenuShown; - public unsafe static bool HasMenuShown(int playerid) { - var ret = _HasMenuShown(playerid); - return ret == 1; - } + public unsafe static bool HasMenuShown(int playerid) + { + var ret = _HasMenuShown(playerid); + return ret == 1; + } - private unsafe static delegate* unmanaged _ExecuteCommand; + private unsafe static delegate* unmanaged _ExecuteCommand; - public unsafe static void ExecuteCommand(int playerid, string command) { - var pool = ArrayPool.Shared; - var commandLength = Encoding.UTF8.GetByteCount(command); - var commandBuffer = pool.Rent(commandLength + 1); - Encoding.UTF8.GetBytes(command, commandBuffer); - commandBuffer[commandLength] = 0; - fixed (byte* commandBufferPtr = commandBuffer) { - _ExecuteCommand(playerid, commandBufferPtr); - pool.Return(commandBuffer); + public unsafe static void ExecuteCommand(int playerid, string command) + { + byte[] commandBuffer = Encoding.UTF8.GetBytes(command); + fixed (byte* commandBufferPtr = commandBuffer) + { + _ExecuteCommand(playerid, commandBufferPtr); + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/PlayerManager.cs b/managed/src/SwiftlyS2.Generated/Natives/PlayerManager.cs index 68b89667e..dcfbccf35 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/PlayerManager.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/PlayerManager.cs @@ -1,60 +1,62 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativePlayerManager { - private static int _MainThreadID; +internal static class NativePlayerManager +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _IsPlayerOnline; + private unsafe static delegate* unmanaged _IsPlayerOnline; - public unsafe static bool IsPlayerOnline(int playerid) { - var ret = _IsPlayerOnline(playerid); - return ret == 1; - } + public unsafe static bool IsPlayerOnline(int playerid) + { + var ret = _IsPlayerOnline(playerid); + return ret == 1; + } - private unsafe static delegate* unmanaged _GetPlayerCount; + private unsafe static delegate* unmanaged _GetPlayerCount; - public unsafe static int GetPlayerCount() { - var ret = _GetPlayerCount(); - return ret; - } + public unsafe static int GetPlayerCount() + { + var ret = _GetPlayerCount(); + return ret; + } - private unsafe static delegate* unmanaged _GetPlayerCap; + private unsafe static delegate* unmanaged _GetPlayerCap; - public unsafe static int GetPlayerCap() { - var ret = _GetPlayerCap(); - return ret; - } + public unsafe static int GetPlayerCap() + { + var ret = _GetPlayerCap(); + return ret; + } - private unsafe static delegate* unmanaged _SendMessage; + private unsafe static delegate* unmanaged _SendMessage; - public unsafe static void SendMessage(int kind, string message, int duration) { - var pool = ArrayPool.Shared; - var messageLength = Encoding.UTF8.GetByteCount(message); - var messageBuffer = pool.Rent(messageLength + 1); - Encoding.UTF8.GetBytes(message, messageBuffer); - messageBuffer[messageLength] = 0; - fixed (byte* messageBufferPtr = messageBuffer) { - _SendMessage(kind, messageBufferPtr, duration); - pool.Return(messageBuffer); + public unsafe static void SendMessage(int kind, string message, int duration) + { + byte[] messageBuffer = Encoding.UTF8.GetBytes(message); + fixed (byte* messageBufferPtr = messageBuffer) + { + _SendMessage(kind, messageBufferPtr, duration); + } } - } - private unsafe static delegate* unmanaged _ShouldBlockTransmitEntity; + private unsafe static delegate* unmanaged _ShouldBlockTransmitEntity; - public unsafe static void ShouldBlockTransmitEntity(int entityidx, bool shouldBlockTransmit) { - _ShouldBlockTransmitEntity(entityidx, shouldBlockTransmit ? (byte)1 : (byte)0); - } + public unsafe static void ShouldBlockTransmitEntity(int entityidx, bool shouldBlockTransmit) + { + _ShouldBlockTransmitEntity(entityidx, shouldBlockTransmit ? (byte)1 : (byte)0); + } - private unsafe static delegate* unmanaged _ClearAllBlockedTransmitEntity; + private unsafe static delegate* unmanaged _ClearAllBlockedTransmitEntity; - public unsafe static void ClearAllBlockedTransmitEntity() { - _ClearAllBlockedTransmitEntity(); - } + public unsafe static void ClearAllBlockedTransmitEntity() + { + _ClearAllBlockedTransmitEntity(); + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Schema.cs b/managed/src/SwiftlyS2.Generated/Natives/Schema.cs index 4253b05ad..90ce25170 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Schema.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Schema.cs @@ -1,91 +1,87 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeSchema { - private static int _MainThreadID; +internal static class NativeSchema +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _SetStateChanged; + private unsafe static delegate* unmanaged _SetStateChanged; - public unsafe static void SetStateChanged(nint entity, ulong hash) { - _SetStateChanged(entity, hash); - } + public unsafe static void SetStateChanged(nint entity, ulong hash) + { + _SetStateChanged(entity, hash); + } - private unsafe static delegate* unmanaged _FindChainOffset; + private unsafe static delegate* unmanaged _FindChainOffset; - public unsafe static uint FindChainOffset(string className) { - var pool = ArrayPool.Shared; - var classNameLength = Encoding.UTF8.GetByteCount(className); - var classNameBuffer = pool.Rent(classNameLength + 1); - Encoding.UTF8.GetBytes(className, classNameBuffer); - classNameBuffer[classNameLength] = 0; - fixed (byte* classNameBufferPtr = classNameBuffer) { - var ret = _FindChainOffset(classNameBufferPtr); - pool.Return(classNameBuffer); - return ret; + public unsafe static uint FindChainOffset(string className) + { + byte[] classNameBuffer = Encoding.UTF8.GetBytes(className); + fixed (byte* classNameBufferPtr = classNameBuffer) + { + var ret = _FindChainOffset(classNameBufferPtr); + return ret; + } } - } - - private unsafe static delegate* unmanaged _GetOffset; - - public unsafe static int GetOffset(ulong hash) { - var ret = _GetOffset(hash); - return ret; - } - - private unsafe static delegate* unmanaged _IsStruct; - - public unsafe static bool IsStruct(string className) { - var pool = ArrayPool.Shared; - var classNameLength = Encoding.UTF8.GetByteCount(className); - var classNameBuffer = pool.Rent(classNameLength + 1); - Encoding.UTF8.GetBytes(className, classNameBuffer); - classNameBuffer[classNameLength] = 0; - fixed (byte* classNameBufferPtr = classNameBuffer) { - var ret = _IsStruct(classNameBufferPtr); - pool.Return(classNameBuffer); - return ret == 1; + + private unsafe static delegate* unmanaged _GetOffset; + + public unsafe static int GetOffset(ulong hash) + { + var ret = _GetOffset(hash); + return ret; } - } - - private unsafe static delegate* unmanaged _IsClassLoaded; - - public unsafe static bool IsClassLoaded(string className) { - var pool = ArrayPool.Shared; - var classNameLength = Encoding.UTF8.GetByteCount(className); - var classNameBuffer = pool.Rent(classNameLength + 1); - Encoding.UTF8.GetBytes(className, classNameBuffer); - classNameBuffer[classNameLength] = 0; - fixed (byte* classNameBufferPtr = classNameBuffer) { - var ret = _IsClassLoaded(classNameBufferPtr); - pool.Return(classNameBuffer); - return ret == 1; + + private unsafe static delegate* unmanaged _IsStruct; + + public unsafe static bool IsStruct(string className) + { + byte[] classNameBuffer = Encoding.UTF8.GetBytes(className); + fixed (byte* classNameBufferPtr = classNameBuffer) + { + var ret = _IsStruct(classNameBufferPtr); + return ret == 1; + } } - } - private unsafe static delegate* unmanaged _GetPropPtr; + private unsafe static delegate* unmanaged _IsClassLoaded; - public unsafe static nint GetPropPtr(nint entity, ulong hash) { - var ret = _GetPropPtr(entity, hash); - return ret; - } + public unsafe static bool IsClassLoaded(string className) + { + byte[] classNameBuffer = Encoding.UTF8.GetBytes(className); + fixed (byte* classNameBufferPtr = classNameBuffer) + { + var ret = _IsClassLoaded(classNameBufferPtr); + return ret == 1; + } + } - private unsafe static delegate* unmanaged _WritePropPtr; + private unsafe static delegate* unmanaged _GetPropPtr; - public unsafe static void WritePropPtr(nint entity, ulong hash, nint value, uint size) { - _WritePropPtr(entity, hash, value, size); - } + public unsafe static nint GetPropPtr(nint entity, ulong hash) + { + var ret = _GetPropPtr(entity, hash); + return ret; + } + + private unsafe static delegate* unmanaged _WritePropPtr; - private unsafe static delegate* unmanaged _GetVData; + public unsafe static void WritePropPtr(nint entity, ulong hash, nint value, uint size) + { + _WritePropPtr(entity, hash, value, size); + } - public unsafe static nint GetVData(nint entity) { - var ret = _GetVData(entity); - return ret; - } + private unsafe static delegate* unmanaged _GetVData; + + public unsafe static nint GetVData(nint entity) + { + var ret = _GetVData(entity); + return ret; + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/ServerHelpers.cs b/managed/src/SwiftlyS2.Generated/Natives/ServerHelpers.cs index d3cc02596..c7218ce3c 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/ServerHelpers.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/ServerHelpers.cs @@ -1,48 +1,50 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeServerHelpers { - private static int _MainThreadID; - - private unsafe static delegate* unmanaged _GetServerLanguage; - - public unsafe static string GetServerLanguage() { - var ret = _GetServerLanguage(null); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetServerLanguage(retBufferPtr); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; +internal static class NativeServerHelpers +{ + private static int _MainThreadID; + + private unsafe static delegate* unmanaged _GetServerLanguage; + + public unsafe static string GetServerLanguage() + { + var ret = _GetServerLanguage(null); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetServerLanguage(retBufferPtr); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - private unsafe static delegate* unmanaged _UsePlayerLanguage; + private unsafe static delegate* unmanaged _UsePlayerLanguage; - public unsafe static bool UsePlayerLanguage() { - var ret = _UsePlayerLanguage(); - return ret == 1; - } + public unsafe static bool UsePlayerLanguage() + { + var ret = _UsePlayerLanguage(); + return ret == 1; + } - private unsafe static delegate* unmanaged _IsFollowingServerGuidelines; + private unsafe static delegate* unmanaged _IsFollowingServerGuidelines; - public unsafe static bool IsFollowingServerGuidelines() { - var ret = _IsFollowingServerGuidelines(); - return ret == 1; - } + public unsafe static bool IsFollowingServerGuidelines() + { + var ret = _IsFollowingServerGuidelines(); + return ret == 1; + } - private unsafe static delegate* unmanaged _UseAutoHotReload; + private unsafe static delegate* unmanaged _UseAutoHotReload; - public unsafe static bool UseAutoHotReload() { - var ret = _UseAutoHotReload(); - return ret == 1; - } + public unsafe static bool UseAutoHotReload() + { + var ret = _UseAutoHotReload(); + return ret == 1; + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Signatures.cs b/managed/src/SwiftlyS2.Generated/Natives/Signatures.cs index 49003c1b2..ec9442248 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Signatures.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Signatures.cs @@ -1,43 +1,37 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeSignatures { - private static int _MainThreadID; +internal static class NativeSignatures +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _Exists; + private unsafe static delegate* unmanaged _Exists; - public unsafe static bool Exists(string signatureName) { - var pool = ArrayPool.Shared; - var signatureNameLength = Encoding.UTF8.GetByteCount(signatureName); - var signatureNameBuffer = pool.Rent(signatureNameLength + 1); - Encoding.UTF8.GetBytes(signatureName, signatureNameBuffer); - signatureNameBuffer[signatureNameLength] = 0; - fixed (byte* signatureNameBufferPtr = signatureNameBuffer) { - var ret = _Exists(signatureNameBufferPtr); - pool.Return(signatureNameBuffer); - return ret == 1; + public unsafe static bool Exists(string signatureName) + { + byte[] signatureNameBuffer = Encoding.UTF8.GetBytes(signatureName); + fixed (byte* signatureNameBufferPtr = signatureNameBuffer) + { + var ret = _Exists(signatureNameBufferPtr); + return ret == 1; + } } - } - private unsafe static delegate* unmanaged _Fetch; + private unsafe static delegate* unmanaged _Fetch; - public unsafe static nint Fetch(string signatureName) { - var pool = ArrayPool.Shared; - var signatureNameLength = Encoding.UTF8.GetByteCount(signatureName); - var signatureNameBuffer = pool.Rent(signatureNameLength + 1); - Encoding.UTF8.GetBytes(signatureName, signatureNameBuffer); - signatureNameBuffer[signatureNameLength] = 0; - fixed (byte* signatureNameBufferPtr = signatureNameBuffer) { - var ret = _Fetch(signatureNameBufferPtr); - pool.Return(signatureNameBuffer); - return ret; + public unsafe static nint Fetch(string signatureName) + { + byte[] signatureNameBuffer = Encoding.UTF8.GetBytes(signatureName); + fixed (byte* signatureNameBufferPtr = signatureNameBuffer) + { + var ret = _Fetch(signatureNameBufferPtr); + return ret; + } } - } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs b/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs index a06040bed..b797120b1 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs @@ -1,306 +1,275 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeSounds { - private static int _MainThreadID; +internal static class NativeSounds +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _CreateSoundEvent; + private unsafe static delegate* unmanaged _CreateSoundEvent; - public unsafe static nint CreateSoundEvent() { - var ret = _CreateSoundEvent(); - return ret; - } + public unsafe static nint CreateSoundEvent() + { + var ret = _CreateSoundEvent(); + return ret; + } - private unsafe static delegate* unmanaged _DestroySoundEvent; + private unsafe static delegate* unmanaged _DestroySoundEvent; - public unsafe static void DestroySoundEvent(nint soundEvent) { - _DestroySoundEvent(soundEvent); - } + public unsafe static void DestroySoundEvent(nint soundEvent) + { + _DestroySoundEvent(soundEvent); + } - private unsafe static delegate* unmanaged _Emit; + private unsafe static delegate* unmanaged _Emit; - public unsafe static uint Emit(nint soundEvent) { - if (Thread.CurrentThread.ManagedThreadId != _MainThreadID) { - throw new InvalidOperationException("This method can only be called from the main thread."); + public unsafe static uint Emit(nint soundEvent) + { + if (Thread.CurrentThread.ManagedThreadId != _MainThreadID) + { + throw new InvalidOperationException("This method can only be called from the main thread."); + } + var ret = _Emit(soundEvent); + return ret; } - var ret = _Emit(soundEvent); - return ret; - } - - private unsafe static delegate* unmanaged _SetName; - - public unsafe static void SetName(nint soundEvent, string name) { - var pool = ArrayPool.Shared; - var nameLength = Encoding.UTF8.GetByteCount(name); - var nameBuffer = pool.Rent(nameLength + 1); - Encoding.UTF8.GetBytes(name, nameBuffer); - nameBuffer[nameLength] = 0; - fixed (byte* nameBufferPtr = nameBuffer) { - _SetName(soundEvent, nameBufferPtr); - pool.Return(nameBuffer); + + private unsafe static delegate* unmanaged _SetName; + + public unsafe static void SetName(nint soundEvent, string name) + { + byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + fixed (byte* nameBufferPtr = nameBuffer) + { + _SetName(soundEvent, nameBufferPtr); + } } - } - - private unsafe static delegate* unmanaged _GetName; - - public unsafe static string GetName(nint soundEvent) { - var ret = _GetName(null, soundEvent); - var pool = ArrayPool.Shared; - var retBuffer = pool.Rent(ret + 1); - fixed (byte* retBufferPtr = retBuffer) { - ret = _GetName(retBufferPtr, soundEvent); - var retString = Encoding.UTF8.GetString(retBufferPtr, ret); - pool.Return(retBuffer); - return retString; + + private unsafe static delegate* unmanaged _GetName; + + public unsafe static string GetName(nint soundEvent) + { + var ret = _GetName(null, soundEvent); + var retBuffer = new byte[ret]; + fixed (byte* retBufferPtr = retBuffer) + { + ret = _GetName(retBufferPtr, soundEvent); + return Encoding.UTF8.GetString(retBufferPtr, ret); + } } - } - private unsafe static delegate* unmanaged _SetSourceEntityIndex; + private unsafe static delegate* unmanaged _SetSourceEntityIndex; - public unsafe static void SetSourceEntityIndex(nint soundEvent, int index) { - _SetSourceEntityIndex(soundEvent, index); - } + public unsafe static void SetSourceEntityIndex(nint soundEvent, int index) + { + _SetSourceEntityIndex(soundEvent, index); + } - private unsafe static delegate* unmanaged _GetSourceEntityIndex; + private unsafe static delegate* unmanaged _GetSourceEntityIndex; - public unsafe static int GetSourceEntityIndex(nint soundEvent) { - var ret = _GetSourceEntityIndex(soundEvent); - return ret; - } + public unsafe static int GetSourceEntityIndex(nint soundEvent) + { + var ret = _GetSourceEntityIndex(soundEvent); + return ret; + } - private unsafe static delegate* unmanaged _AddClient; + private unsafe static delegate* unmanaged _AddClient; - public unsafe static void AddClient(nint soundEvent, int playerid) { - _AddClient(soundEvent, playerid); - } + public unsafe static void AddClient(nint soundEvent, int playerid) + { + _AddClient(soundEvent, playerid); + } - private unsafe static delegate* unmanaged _RemoveClient; + private unsafe static delegate* unmanaged _RemoveClient; - public unsafe static void RemoveClient(nint soundEvent, int playerid) { - _RemoveClient(soundEvent, playerid); - } + public unsafe static void RemoveClient(nint soundEvent, int playerid) + { + _RemoveClient(soundEvent, playerid); + } - private unsafe static delegate* unmanaged _ClearClients; + private unsafe static delegate* unmanaged _ClearClients; - public unsafe static void ClearClients(nint soundEvent) { - _ClearClients(soundEvent); - } + public unsafe static void ClearClients(nint soundEvent) + { + _ClearClients(soundEvent); + } - private unsafe static delegate* unmanaged _AddAllClients; + private unsafe static delegate* unmanaged _AddAllClients; - public unsafe static void AddAllClients(nint soundEvent) { - _AddAllClients(soundEvent); - } + public unsafe static void AddAllClients(nint soundEvent) + { + _AddAllClients(soundEvent); + } - private unsafe static delegate* unmanaged _HasField; + private unsafe static delegate* unmanaged _HasField; - public unsafe static bool HasField(nint soundEvent, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _HasField(soundEvent, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret == 1; + public unsafe static bool HasField(nint soundEvent, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _HasField(soundEvent, fieldNameBufferPtr); + return ret == 1; + } } - } - - private unsafe static delegate* unmanaged _SetBool; - - public unsafe static void SetBool(nint soundEvent, string fieldName, bool value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetBool(soundEvent, fieldNameBufferPtr, value ? (byte)1 : (byte)0); - pool.Return(fieldNameBuffer); + + private unsafe static delegate* unmanaged _SetBool; + + public unsafe static void SetBool(nint soundEvent, string fieldName, bool value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetBool(soundEvent, fieldNameBufferPtr, value ? (byte)1 : (byte)0); + } } - } - - private unsafe static delegate* unmanaged _GetBool; - - public unsafe static bool GetBool(nint soundEvent, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetBool(soundEvent, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret == 1; + + private unsafe static delegate* unmanaged _GetBool; + + public unsafe static bool GetBool(nint soundEvent, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetBool(soundEvent, fieldNameBufferPtr); + return ret == 1; + } } - } - - private unsafe static delegate* unmanaged _SetInt32; - - public unsafe static void SetInt32(nint soundEvent, string fieldName, int value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetInt32(soundEvent, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); + + private unsafe static delegate* unmanaged _SetInt32; + + public unsafe static void SetInt32(nint soundEvent, string fieldName, int value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetInt32(soundEvent, fieldNameBufferPtr, value); + } } - } - - private unsafe static delegate* unmanaged _GetInt32; - - public unsafe static int GetInt32(nint soundEvent, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetInt32(soundEvent, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetInt32; + + public unsafe static int GetInt32(nint soundEvent, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetInt32(soundEvent, fieldNameBufferPtr); + return ret; + } } - } - - private unsafe static delegate* unmanaged _SetUInt32; - - public unsafe static void SetUInt32(nint soundEvent, string fieldName, uint value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetUInt32(soundEvent, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); + + private unsafe static delegate* unmanaged _SetUInt32; + + public unsafe static void SetUInt32(nint soundEvent, string fieldName, uint value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetUInt32(soundEvent, fieldNameBufferPtr, value); + } } - } - - private unsafe static delegate* unmanaged _GetUInt32; - - public unsafe static uint GetUInt32(nint soundEvent, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetUInt32(soundEvent, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetUInt32; + + public unsafe static uint GetUInt32(nint soundEvent, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetUInt32(soundEvent, fieldNameBufferPtr); + return ret; + } } - } - - private unsafe static delegate* unmanaged _SetUInt64; - - public unsafe static void SetUInt64(nint soundEvent, string fieldName, ulong value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetUInt64(soundEvent, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); + + private unsafe static delegate* unmanaged _SetUInt64; + + public unsafe static void SetUInt64(nint soundEvent, string fieldName, ulong value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetUInt64(soundEvent, fieldNameBufferPtr, value); + } } - } - - private unsafe static delegate* unmanaged _GetUInt64; - - public unsafe static ulong GetUInt64(nint soundEvent, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetUInt64(soundEvent, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetUInt64; + + public unsafe static ulong GetUInt64(nint soundEvent, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetUInt64(soundEvent, fieldNameBufferPtr); + return ret; + } } - } - - private unsafe static delegate* unmanaged _SetFloat; - - public unsafe static void SetFloat(nint soundEvent, string fieldName, float value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetFloat(soundEvent, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); + + private unsafe static delegate* unmanaged _SetFloat; + + public unsafe static void SetFloat(nint soundEvent, string fieldName, float value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetFloat(soundEvent, fieldNameBufferPtr, value); + } } - } - - private unsafe static delegate* unmanaged _GetFloat; - - public unsafe static float GetFloat(nint soundEvent, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetFloat(soundEvent, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetFloat; + + public unsafe static float GetFloat(nint soundEvent, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetFloat(soundEvent, fieldNameBufferPtr); + return ret; + } } - } - - private unsafe static delegate* unmanaged _SetFloat3; - - public unsafe static void SetFloat3(nint soundEvent, string fieldName, Vector value) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - _SetFloat3(soundEvent, fieldNameBufferPtr, value); - pool.Return(fieldNameBuffer); + + private unsafe static delegate* unmanaged _SetFloat3; + + public unsafe static void SetFloat3(nint soundEvent, string fieldName, Vector value) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + _SetFloat3(soundEvent, fieldNameBufferPtr, value); + } } - } - - private unsafe static delegate* unmanaged _GetFloat3; - - public unsafe static Vector GetFloat3(nint soundEvent, string fieldName) { - var pool = ArrayPool.Shared; - var fieldNameLength = Encoding.UTF8.GetByteCount(fieldName); - var fieldNameBuffer = pool.Rent(fieldNameLength + 1); - Encoding.UTF8.GetBytes(fieldName, fieldNameBuffer); - fieldNameBuffer[fieldNameLength] = 0; - fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - var ret = _GetFloat3(soundEvent, fieldNameBufferPtr); - pool.Return(fieldNameBuffer); - return ret; + + private unsafe static delegate* unmanaged _GetFloat3; + + public unsafe static Vector GetFloat3(nint soundEvent, string fieldName) + { + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + fixed (byte* fieldNameBufferPtr = fieldNameBuffer) + { + var ret = _GetFloat3(soundEvent, fieldNameBufferPtr); + return ret; + } } - } - private unsafe static delegate* unmanaged _GetClients; + private unsafe static delegate* unmanaged _GetClients; - /// - /// returns player mask - /// - public unsafe static ulong GetClients(nint soundEvent) { - var ret = _GetClients(soundEvent); - return ret; - } + /// + /// returns player mask + /// + public unsafe static ulong GetClients(nint soundEvent) + { + var ret = _GetClients(soundEvent); + return ret; + } - private unsafe static delegate* unmanaged _SetClients; + private unsafe static delegate* unmanaged _SetClients; - public unsafe static void SetClients(nint soundEvent, ulong playermask) { - _SetClients(soundEvent, playermask); - } + public unsafe static void SetClients(nint soundEvent, ulong playermask) + { + _SetClients(soundEvent, playermask); + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/Test.cs b/managed/src/SwiftlyS2.Generated/Natives/Test.cs index fd32dd2c6..f5ba662c3 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Test.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Test.cs @@ -1,20 +1,21 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeTest { - private static int _MainThreadID; +internal static class NativeTest +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _Test; + private unsafe static delegate* unmanaged _Test; - public unsafe static nint Test() { - var ret = _Test(); - return ret; - } + public unsafe static nint Test() + { + var ret = _Test(); + return ret; + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/VGUI.cs b/managed/src/SwiftlyS2.Generated/Natives/VGUI.cs index ad6d06ee9..9d5fead83 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/VGUI.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/VGUI.cs @@ -1,61 +1,63 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeVGUI { - private static int _MainThreadID; +internal static class NativeVGUI +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _RegisterScreenText; + private unsafe static delegate* unmanaged _RegisterScreenText; - public unsafe static ulong RegisterScreenText() { - var ret = _RegisterScreenText(); - return ret; - } + public unsafe static ulong RegisterScreenText() + { + var ret = _RegisterScreenText(); + return ret; + } - private unsafe static delegate* unmanaged _UnregisterScreenText; + private unsafe static delegate* unmanaged _UnregisterScreenText; - public unsafe static void UnregisterScreenText(ulong textid) { - _UnregisterScreenText(textid); - } + public unsafe static void UnregisterScreenText(ulong textid) + { + _UnregisterScreenText(textid); + } - private unsafe static delegate* unmanaged _ScreenTextCreate; + private unsafe static delegate* unmanaged _ScreenTextCreate; - public unsafe static void ScreenTextCreate(ulong textid, Color col, int fontsize, bool drawBackground, bool isMenu) { - _ScreenTextCreate(textid, col, fontsize, drawBackground ? (byte)1 : (byte)0, isMenu ? (byte)1 : (byte)0); - } + public unsafe static void ScreenTextCreate(ulong textid, Color col, int fontsize, bool drawBackground, bool isMenu) + { + _ScreenTextCreate(textid, col, fontsize, drawBackground ? (byte)1 : (byte)0, isMenu ? (byte)1 : (byte)0); + } - private unsafe static delegate* unmanaged _ScreenTextSetText; + private unsafe static delegate* unmanaged _ScreenTextSetText; - public unsafe static void ScreenTextSetText(ulong textid, string text) { - var pool = ArrayPool.Shared; - var textLength = Encoding.UTF8.GetByteCount(text); - var textBuffer = pool.Rent(textLength + 1); - Encoding.UTF8.GetBytes(text, textBuffer); - textBuffer[textLength] = 0; - fixed (byte* textBufferPtr = textBuffer) { - _ScreenTextSetText(textid, textBufferPtr); - pool.Return(textBuffer); + public unsafe static void ScreenTextSetText(ulong textid, string text) + { + byte[] textBuffer = Encoding.UTF8.GetBytes(text); + fixed (byte* textBufferPtr = textBuffer) + { + _ScreenTextSetText(textid, textBufferPtr); + } } - } - private unsafe static delegate* unmanaged _ScreenTextSetColor; + private unsafe static delegate* unmanaged _ScreenTextSetColor; - public unsafe static void ScreenTextSetColor(ulong textid, Color col) { - _ScreenTextSetColor(textid, col); - } + public unsafe static void ScreenTextSetColor(ulong textid, Color col) + { + _ScreenTextSetColor(textid, col); + } - private unsafe static delegate* unmanaged _ScreenTextSetPosition; + private unsafe static delegate* unmanaged _ScreenTextSetPosition; - /// - /// 0.0-1.0, where 0.0 is bottom/left, and 1.0 is top/right - /// - public unsafe static void ScreenTextSetPosition(ulong textid, float x, float y) { - _ScreenTextSetPosition(textid, x, y); - } + /// + /// 0.0-1.0, where 0.0 is bottom/left, and 1.0 is top/right + /// + public unsafe static void ScreenTextSetPosition(ulong textid, float x, float y) + { + _ScreenTextSetPosition(textid, x, y); + } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Natives/VoiceManager.cs b/managed/src/SwiftlyS2.Generated/Natives/VoiceManager.cs index c9418a374..674514bea 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/VoiceManager.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/VoiceManager.cs @@ -1,39 +1,43 @@ #pragma warning disable CS0649 #pragma warning disable CS0169 -using System.Buffers; using System.Text; using System.Threading; using SwiftlyS2.Shared.Natives; namespace SwiftlyS2.Core.Natives; -internal static class NativeVoiceManager { - private static int _MainThreadID; +internal static class NativeVoiceManager +{ + private static int _MainThreadID; - private unsafe static delegate* unmanaged _SetClientListenOverride; + private unsafe static delegate* unmanaged _SetClientListenOverride; - public unsafe static void SetClientListenOverride(int playerid, int targetid, int listenOverride) { - _SetClientListenOverride(playerid, targetid, listenOverride); - } + public unsafe static void SetClientListenOverride(int playerid, int targetid, int listenOverride) + { + _SetClientListenOverride(playerid, targetid, listenOverride); + } - private unsafe static delegate* unmanaged _GetClientListenOverride; + private unsafe static delegate* unmanaged _GetClientListenOverride; - public unsafe static int GetClientListenOverride(int playerid, int targetid) { - var ret = _GetClientListenOverride(playerid, targetid); - return ret; - } + public unsafe static int GetClientListenOverride(int playerid, int targetid) + { + var ret = _GetClientListenOverride(playerid, targetid); + return ret; + } - private unsafe static delegate* unmanaged _SetClientVoiceFlags; + private unsafe static delegate* unmanaged _SetClientVoiceFlags; - public unsafe static void SetClientVoiceFlags(int playerid, int flags) { - _SetClientVoiceFlags(playerid, flags); - } + public unsafe static void SetClientVoiceFlags(int playerid, int flags) + { + _SetClientVoiceFlags(playerid, flags); + } - private unsafe static delegate* unmanaged _GetClientVoiceFlags; + private unsafe static delegate* unmanaged _GetClientVoiceFlags; - public unsafe static int GetClientVoiceFlags(int playerid) { - var ret = _GetClientVoiceFlags(playerid); - return ret; - } + public unsafe static int GetClientVoiceFlags(int playerid) + { + var ret = _GetClientVoiceFlags(playerid); + return ret; + } } \ No newline at end of file From 78d0e62dae458359bd283d2b2d10391ed4c320d2 Mon Sep 17 00:00:00 2001 From: Ambr0se Date: Sat, 15 Nov 2025 19:48:42 +0800 Subject: [PATCH 5/8] chore: Clean up code --- .../SwiftlyS2.Benchmarks/perf/cssharp.json | 117 ---------- .../SwiftlyS2.Benchmarks/perf/modsharp.json | 125 ---------- .../SwiftlyS2.Benchmarks/perf/swiftly.json | 221 ------------------ src/core/entrypoint.cpp | 18 +- 4 files changed, 9 insertions(+), 472 deletions(-) delete mode 100644 managed/SwiftlyS2.Benchmarks/perf/cssharp.json delete mode 100644 managed/SwiftlyS2.Benchmarks/perf/modsharp.json delete mode 100644 managed/SwiftlyS2.Benchmarks/perf/swiftly.json diff --git a/managed/SwiftlyS2.Benchmarks/perf/cssharp.json b/managed/SwiftlyS2.Benchmarks/perf/cssharp.json deleted file mode 100644 index 991a88a4a..000000000 --- a/managed/SwiftlyS2.Benchmarks/perf/cssharp.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "traceEvents": [ - { - "args": { - "name": "Swiftly" - }, - "cat": "__metadata", - "name": "process_name", - "ph": "M", - "pid": 1, - "tid": 1, - "ts": 0 - }, - { - "args": { - "name": "Swiftly Main" - }, - "cat": "__metadata", - "name": "thread_name", - "ph": "M", - "pid": 1, - "tid": 1, - "ts": 0 - }, - { - "args": { - "name": "Swiftly Profiler" - }, - "cat": "__metadata", - "name": "thread_name", - "ph": "M", - "pid": 1, - "tid": 2, - "ts": 0 - }, - { - "name": "StartTest Create Entities [CounterStrikeSharp] (min=149.56ms,avg=149.56ms,max=149.56ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 149560 - }, - { - "name": "SetupEntities Schema Write [CounterStrikeSharp] (min=13.74ms,avg=13.74ms,max=13.74ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 13741 - }, - { - "name": "SetupEntities Schema Read [CounterStrikeSharp] (min=1.45ms,avg=1.45ms,max=1.45ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 1447 - }, - { - "name": "SetupEntities Virtual Call [CounterStrikeSharp] (min=9.89ms,avg=9.89ms,max=9.89ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 9891 - }, - { - "name": "StartTest Setup Entities [CounterStrikeSharp] (min=25.56ms,avg=25.56ms,max=25.56ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 25563 - }, - { - "name": "Entity Spawn -\u003E Despawn [CounterStrikeSharp] (min=1.00\u03BCs,avg=2.00\u03BCs,max=0.22ms,count=1024)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 2220 - }, - { - "name": "StartTest Dispatch Spawn [CounterStrikeSharp] (min=13.44ms,avg=13.44ms,max=13.44ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 13436 - }, - { - "name": "OnTick Teleport All Entities [CounterStrikeSharp] (min=1.79ms,avg=2.10ms,max=8.89ms,count=1336)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 2800584 - }, - { - "name": "OnTick Call NetMessage [CounterStrikeSharp] (min=0.02ms,avg=0.03ms,max=0.80ms,count=1336)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 42369 - }, - { - "name": "CMsgSosStartSoundEvent Change Recipients [CounterStrikeSharp] (min=2.00\u03BCs,avg=9.00\u03BCs,max=0.43ms,count=99)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 979 - } - ] -} \ No newline at end of file diff --git a/managed/SwiftlyS2.Benchmarks/perf/modsharp.json b/managed/SwiftlyS2.Benchmarks/perf/modsharp.json deleted file mode 100644 index 8d2b4d08f..000000000 --- a/managed/SwiftlyS2.Benchmarks/perf/modsharp.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "traceEvents": [ - { - "args": { - "name": "Swiftly" - }, - "cat": "__metadata", - "name": "process_name", - "ph": "M", - "pid": 1, - "tid": 1, - "ts": 0 - }, - { - "args": { - "name": "Swiftly Main" - }, - "cat": "__metadata", - "name": "thread_name", - "ph": "M", - "pid": 1, - "tid": 1, - "ts": 0 - }, - { - "args": { - "name": "Swiftly Profiler" - }, - "cat": "__metadata", - "name": "thread_name", - "ph": "M", - "pid": 1, - "tid": 2, - "ts": 0 - }, - { - "name": "StartTest Create Entities [ModSharp] (min=8.59ms,avg=8.59ms,max=8.59ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 8585 - }, - { - "name": "SetupEntities Schema Write [ModSharp] (min=3.93ms,avg=3.93ms,max=3.93ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 3931 - }, - { - "name": "SetupEntities Schema Read [ModSharp] (min=0.85ms,avg=0.85ms,max=0.85ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 847 - }, - { - "name": "SetupEntities Virtual Call [ModSharp] (min=0.74ms,avg=0.74ms,max=0.74ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 743 - }, - { - "name": "StartTest Setup Entities [ModSharp] (min=5.98ms,avg=5.98ms,max=5.98ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 5978 - }, - { - "name": "Entity Spawn -\u003E Despawn [ModSharp] (min=0.00\u03BCs,avg=0.00\u03BCs,max=0.08ms,count=1024)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 331 - }, - { - "name": "StartTest Dispatch Spawn [ModSharp] (min=12.28ms,avg=12.28ms,max=12.28ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 12283 - }, - { - "name": "OnTick Teleport All Entities [ModSharp] (min=0.33ms,avg=0.43ms,max=11.27ms,count=2205)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 955898 - }, - { - "name": "OnTick Send 1024 sv_cs_player_speed_has_hostage convar to all players [ModSharp] (min=0.04ms,avg=0.06ms,max=3.41ms,count=2205)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 130724 - }, - { - "name": "OnTick Call NetMessage [ModSharp] (min=4.00\u03BCs,avg=5.00\u03BCs,max=0.55ms,count=2205)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 12955 - }, - { - "name": "CMsgSosStartSoundEvent Change Recipients [ModSharp] (min=1.00\u03BCs,avg=5.00\u03BCs,max=0.44ms,count=160)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 849 - } - ] -} \ No newline at end of file diff --git a/managed/SwiftlyS2.Benchmarks/perf/swiftly.json b/managed/SwiftlyS2.Benchmarks/perf/swiftly.json deleted file mode 100644 index 8dccd18ae..000000000 --- a/managed/SwiftlyS2.Benchmarks/perf/swiftly.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "traceEvents": [ - { - "args": { - "name": "Swiftly" - }, - "cat": "__metadata", - "name": "process_name", - "ph": "M", - "pid": 1, - "tid": 1, - "ts": 0 - }, - { - "args": { - "name": "Swiftly Main" - }, - "cat": "__metadata", - "name": "thread_name", - "ph": "M", - "pid": 1, - "tid": 1, - "ts": 0 - }, - { - "args": { - "name": "Swiftly Profiler" - }, - "cat": "__metadata", - "name": "thread_name", - "ph": "M", - "pid": 1, - "tid": 2, - "ts": 0 - }, - { - "name": "Event::OnCommandExecuteHook [SwiftlyS2] (min=4.00\u03BCs,avg=0.42ms,max=0.84ms,count=2)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 848 - }, - { - "name": "Event::OnConsoleOutput [SwiftlyS2] (min=1.00\u03BCs,avg=2.00\u03BCs,max=5.00\u03BCs,count=29)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 59 - }, - { - "name": "Event::OnTick [SwiftlyS2] (min=0.00\u03BCs,avg=0.00\u03BCs,max=0.03ms,count=3419)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 2254 - }, - { - "name": "Event::OnClientDisconnected [SwiftlyS2] (min=2.26ms,avg=2.26ms,max=2.26ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 2256 - }, - { - "name": "Event::OnEntitySpawned [PerformanceTest] (min=0.00\u03BCs,avg=1.00\u03BCs,max=0.38ms,count=1091)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 1160 - }, - { - "name": "NetMessageServerHookCallback::CMsgSosStartSoundEvent [PerformanceTest] (min=0.00\u03BCs,avg=0.04ms,max=1.43ms,count=234)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 8841 - }, - { - "name": "Event::OnTick [PerformanceTest] (min=0.00\u03BCs,avg=2.09ms,max=15.54ms,count=3419)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 7153587 - }, - { - "name": "NetMessageClientHookCallback::CCLCMsg_Move [PerformanceTest] (min=0.00\u03BCs,avg=0.02ms,max=1.86ms,count=3140)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 50127 - }, - { - "name": "Event::OnClientDisconnected [PerformanceTest] (min=0.02ms,avg=0.02ms,max=0.02ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 20 - }, - { - "name": "StartTest Create Entities [PerformanceTest] (min=45.48ms,avg=45.48ms,max=45.48ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 45480 - }, - { - "name": "SetupEntities Schema Write [PerformanceTest] (min=1.70ms,avg=1.70ms,max=1.70ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 1698 - }, - { - "name": "SetupEntities Schema Read [PerformanceTest] (min=0.24ms,avg=0.24ms,max=0.24ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 242 - }, - { - "name": "SetupEntities Virtual Call [PerformanceTest] (min=1.28ms,avg=1.28ms,max=1.28ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 1277 - }, - { - "name": "StartTest Setup Entities [PerformanceTest] (min=5.00ms,avg=5.00ms,max=5.00ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 4996 - }, - { - "name": "Entity Spawn -\u003E Despawn [PerformanceTest] (min=0.00\u03BCs,avg=0.00\u03BCs,max=0.38ms,count=1024)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 785 - }, - { - "name": "StartTest Dispatch Spawn [PerformanceTest] (min=22.00ms,avg=22.00ms,max=22.00ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 22002 - }, - { - "name": "CommandCallback::starttest [PerformanceTest] (min=85.65ms,avg=85.65ms,max=85.65ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 85655 - }, - { - "name": "CCLCMsg_Move [PerformanceTest] (min=3.00\u03BCs,avg=0.01ms,max=0.53ms,count=2506)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 35801 - }, - { - "name": "OnTick Teleport All Entities [PerformanceTest] (min=0.51ms,avg=0.62ms,max=3.78ms,count=2506)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 1560041 - }, - { - "name": "OnTick Send 1024 sv_cs_player_speed_has_hostage convar to all players [PerformanceTest] (min=1.88ms,avg=2.19ms,max=10.80ms,count=2506)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 5486880 - }, - { - "name": "OnTick Call NetMessage [PerformanceTest] (min=0.03ms,avg=0.04ms,max=2.76ms,count=2506)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 93488 - }, - { - "name": "CMsgSosStartSoundEvent Change Recipients [PerformanceTest] (min=0.03ms,avg=0.03ms,max=0.06ms,count=210)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 6588 - }, - { - "name": "CommandCallback::stoptest [PerformanceTest] (min=3.00ms,avg=3.00ms,max=3.00ms,count=1)", - "ph": "X", - "tid": 2, - "pid": 1, - "ts": 0, - "dur": 2999 - } - ] -} \ No newline at end of file diff --git a/src/core/entrypoint.cpp b/src/core/entrypoint.cpp index 62ee80f52..e7852fb48 100644 --- a/src/core/entrypoint.cpp +++ b/src/core/entrypoint.cpp @@ -67,15 +67,15 @@ IVFunctionHook* g_pGameServerSteamAPIDeactivated = nullptr; IVFunctionHook* g_pLoopInitHook = nullptr; IVFunctionHook* g_pLoopShutdownHook = nullptr; -// Simple benchmark function for P/Invoke testing -#ifdef _WIN32 -extern "C" __declspec(dllexport) int32_t SwiftlyS2_Benchmark_PInvoke() -#else -extern "C" __attribute__((visibility("default"))) int32_t SwiftlyS2_Benchmark_PInvoke() -#endif -{ - return 1337; -} +// // Simple benchmark function for P/Invoke testing +// #ifdef _WIN32 +// extern "C" __declspec(dllexport) int32_t SwiftlyS2_Benchmark_PInvoke() +// #else +// extern "C" __attribute__((visibility("default"))) int32_t SwiftlyS2_Benchmark_PInvoke() +// #endif +// { +// return 1337; +// } void GameServerSteamAPIActivatedHook(void* _this); void GameServerSteamAPIDeactivatedHook(void* _this); From ff4f059a02350b0f368fa6bd147e23519722afb6 Mon Sep 17 00:00:00 2001 From: Ambr0se Date: Sat, 15 Nov 2025 19:59:57 +0800 Subject: [PATCH 6/8] fix: Add null terminator for string parameters --- generator/native_generator/main.py | 10 +- .../SwiftlyS2.Generated/Natives/Allocator.cs | 6 +- .../SwiftlyS2.Generated/Natives/Benchmark.cs | 12 +- .../Natives/CEntityKeyValues.cs | 62 +++---- .../Natives/CommandLine.cs | 10 +- .../SwiftlyS2.Generated/Natives/Commands.cs | 8 +- .../Natives/ConsoleOutput.cs | 2 +- .../SwiftlyS2.Generated/Natives/Convars.cs | 98 +++++------ .../SwiftlyS2.Generated/Natives/Database.cs | 4 +- .../Natives/EngineHelpers.cs | 8 +- .../Natives/EntitySystem.cs | 42 ++--- .../SwiftlyS2.Generated/Natives/FileSystem.cs | 44 ++--- .../SwiftlyS2.Generated/Natives/GameEvents.cs | 56 +++--- .../Natives/MemoryHelpers.cs | 12 +- .../Natives/NetMessages.cs | 165 +++++++++--------- .../SwiftlyS2.Generated/Natives/Offsets.cs | 4 +- .../SwiftlyS2.Generated/Natives/Patches.cs | 6 +- .../src/SwiftlyS2.Generated/Natives/Player.cs | 10 +- .../Natives/PlayerManager.cs | 2 +- .../src/SwiftlyS2.Generated/Natives/Schema.cs | 6 +- .../SwiftlyS2.Generated/Natives/Signatures.cs | 4 +- .../src/SwiftlyS2.Generated/Natives/Sounds.cs | 28 +-- .../src/SwiftlyS2.Generated/Natives/VGUI.cs | 2 +- 23 files changed, 307 insertions(+), 294 deletions(-) diff --git a/generator/native_generator/main.py b/generator/native_generator/main.py index 97f8f60ef..c6a06e441 100644 --- a/generator/native_generator/main.py +++ b/generator/native_generator/main.py @@ -215,13 +215,17 @@ def write_with_fixed_blocks(blocks, index=0): return for param in string_params: - writer.add_line(f"byte[] {param}Buffer = Encoding.UTF8.GetBytes({param});") - + writer.add_line(f"byte[] {param}Buffer = Encoding.UTF8.GetBytes({param} + \"\\0\");") + for param in bytes_params: + writer.add_line(f"var {param}Length = {param}.Length;") + writer.add_line(f"byte[] {param}Buffer = new byte[{param}Length];") + writer.add_line(f"Buffer.BlockCopy({param}, 0, {param}Buffer, 0, {param}Length);") + fixed_blocks = [] for param in string_params: fixed_blocks.append(f"fixed (byte* {param}BufferPtr = {param}Buffer)") for param in bytes_params: - fixed_blocks.append(f"fixed (byte* {param}BufferPtr = {param})") + fixed_blocks.append(f"fixed (byte* {param}BufferPtr = {param}Buffer)") def write_native_call(): call_args = [] diff --git a/managed/src/SwiftlyS2.Generated/Natives/Allocator.cs b/managed/src/SwiftlyS2.Generated/Natives/Allocator.cs index 717ea2d0f..edd404955 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Allocator.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Allocator.cs @@ -23,8 +23,8 @@ public unsafe static nint Alloc(ulong size) public unsafe static nint TrackedAlloc(ulong size, string identifier, string details) { - byte[] identifierBuffer = Encoding.UTF8.GetBytes(identifier); - byte[] detailsBuffer = Encoding.UTF8.GetBytes(details); + byte[] identifierBuffer = Encoding.UTF8.GetBytes(identifier + "\0"); + byte[] detailsBuffer = Encoding.UTF8.GetBytes(details + "\0"); fixed (byte* identifierBufferPtr = identifierBuffer) { fixed (byte* detailsBufferPtr = detailsBuffer) @@ -73,7 +73,7 @@ public unsafe static ulong GetTotalAllocated() public unsafe static ulong GetAllocatedByTrackedIdentifier(string identifier) { - byte[] identifierBuffer = Encoding.UTF8.GetBytes(identifier); + byte[] identifierBuffer = Encoding.UTF8.GetBytes(identifier + "\0"); fixed (byte* identifierBufferPtr = identifierBuffer) { var ret = _GetAllocatedByTrackedIdentifier(identifierBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs index d14d4ed99..e23d40131 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs @@ -150,7 +150,7 @@ public unsafe static nint PtrToPtr(nint value) public unsafe static string StringToString(string value) { - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* valueBufferPtr = valueBuffer) { var ret = _StringToString(null, valueBufferPtr); @@ -167,7 +167,7 @@ public unsafe static string StringToString(string value) public unsafe static nint StringToPtr(string value) { - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* valueBufferPtr = valueBuffer) { var ret = _StringToPtr(valueBufferPtr); @@ -187,7 +187,7 @@ public unsafe static int MultiPrimitives(nint p1, int i1, float f1, bool b1, ulo public unsafe static int MultiWithOneString(nint p1, string s1, nint p2, int i1, float f1) { - byte[] s1Buffer = Encoding.UTF8.GetBytes(s1); + byte[] s1Buffer = Encoding.UTF8.GetBytes(s1 + "\0"); fixed (byte* s1BufferPtr = s1Buffer) { var ret = _MultiWithOneString(p1, s1BufferPtr, p2, i1, f1); @@ -199,8 +199,8 @@ public unsafe static int MultiWithOneString(nint p1, string s1, nint p2, int i1, public unsafe static void MultiWithTwoStrings(nint p1, string s1, nint p2, string s2, int i1) { - byte[] s1Buffer = Encoding.UTF8.GetBytes(s1); - byte[] s2Buffer = Encoding.UTF8.GetBytes(s2); + byte[] s1Buffer = Encoding.UTF8.GetBytes(s1 + "\0"); + byte[] s2Buffer = Encoding.UTF8.GetBytes(s2 + "\0"); fixed (byte* s1BufferPtr = s1Buffer) { fixed (byte* s2BufferPtr = s2Buffer) @@ -228,7 +228,7 @@ public unsafe static void QAngleToQAngle(nint result, QAngle value) public unsafe static void ComplexWithString(nint entity, Vector pos, string name, QAngle angle) { - byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + byte[] nameBuffer = Encoding.UTF8.GetBytes(name + "\0"); fixed (byte* nameBufferPtr = nameBuffer) { _ComplexWithString(entity, pos, nameBufferPtr, angle); diff --git a/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs b/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs index 695b71b79..a492ced46 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs @@ -30,7 +30,7 @@ public unsafe static void Deallocate(nint keyvalues) public unsafe static bool GetBool(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetBool(keyvalues, keyBufferPtr); @@ -42,7 +42,7 @@ public unsafe static bool GetBool(nint keyvalues, string key) public unsafe static int GetInt(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetInt(keyvalues, keyBufferPtr); @@ -54,7 +54,7 @@ public unsafe static int GetInt(nint keyvalues, string key) public unsafe static uint GetUint(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetUint(keyvalues, keyBufferPtr); @@ -66,7 +66,7 @@ public unsafe static uint GetUint(nint keyvalues, string key) public unsafe static long GetInt64(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetInt64(keyvalues, keyBufferPtr); @@ -78,7 +78,7 @@ public unsafe static long GetInt64(nint keyvalues, string key) public unsafe static ulong GetUint64(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetUint64(keyvalues, keyBufferPtr); @@ -90,7 +90,7 @@ public unsafe static ulong GetUint64(nint keyvalues, string key) public unsafe static float GetFloat(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetFloat(keyvalues, keyBufferPtr); @@ -102,7 +102,7 @@ public unsafe static float GetFloat(nint keyvalues, string key) public unsafe static double GetDouble(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetDouble(keyvalues, keyBufferPtr); @@ -114,7 +114,7 @@ public unsafe static double GetDouble(nint keyvalues, string key) public unsafe static string GetString(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetString(null, keyvalues, keyBufferPtr); @@ -131,7 +131,7 @@ public unsafe static string GetString(nint keyvalues, string key) public unsafe static nint GetPtr(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetPtr(keyvalues, keyBufferPtr); @@ -143,7 +143,7 @@ public unsafe static nint GetPtr(nint keyvalues, string key) public unsafe static CUtlStringToken GetStringToken(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetStringToken(keyvalues, keyBufferPtr); @@ -155,7 +155,7 @@ public unsafe static CUtlStringToken GetStringToken(nint keyvalues, string key) public unsafe static Color GetColor(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetColor(keyvalues, keyBufferPtr); @@ -167,7 +167,7 @@ public unsafe static Color GetColor(nint keyvalues, string key) public unsafe static Vector GetVector(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetVector(keyvalues, keyBufferPtr); @@ -179,7 +179,7 @@ public unsafe static Vector GetVector(nint keyvalues, string key) public unsafe static Vector2D GetVector2D(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetVector2D(keyvalues, keyBufferPtr); @@ -191,7 +191,7 @@ public unsafe static Vector2D GetVector2D(nint keyvalues, string key) public unsafe static Vector4D GetVector4D(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetVector4D(keyvalues, keyBufferPtr); @@ -203,7 +203,7 @@ public unsafe static Vector4D GetVector4D(nint keyvalues, string key) public unsafe static QAngle GetQAngle(nint keyvalues, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetQAngle(keyvalues, keyBufferPtr); @@ -215,7 +215,7 @@ public unsafe static QAngle GetQAngle(nint keyvalues, string key) public unsafe static void SetBool(nint keyvalues, string key, bool value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetBool(keyvalues, keyBufferPtr, value ? (byte)1 : (byte)0); @@ -226,7 +226,7 @@ public unsafe static void SetBool(nint keyvalues, string key, bool value) public unsafe static void SetInt(nint keyvalues, string key, int value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetInt(keyvalues, keyBufferPtr, value); @@ -237,7 +237,7 @@ public unsafe static void SetInt(nint keyvalues, string key, int value) public unsafe static void SetUint(nint keyvalues, string key, uint value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetUint(keyvalues, keyBufferPtr, value); @@ -248,7 +248,7 @@ public unsafe static void SetUint(nint keyvalues, string key, uint value) public unsafe static void SetInt64(nint keyvalues, string key, long value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetInt64(keyvalues, keyBufferPtr, value); @@ -259,7 +259,7 @@ public unsafe static void SetInt64(nint keyvalues, string key, long value) public unsafe static void SetUint64(nint keyvalues, string key, ulong value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetUint64(keyvalues, keyBufferPtr, value); @@ -270,7 +270,7 @@ public unsafe static void SetUint64(nint keyvalues, string key, ulong value) public unsafe static void SetFloat(nint keyvalues, string key, float value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetFloat(keyvalues, keyBufferPtr, value); @@ -281,7 +281,7 @@ public unsafe static void SetFloat(nint keyvalues, string key, float value) public unsafe static void SetDouble(nint keyvalues, string key, double value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetDouble(keyvalues, keyBufferPtr, value); @@ -292,8 +292,8 @@ public unsafe static void SetDouble(nint keyvalues, string key, double value) public unsafe static void SetString(nint keyvalues, string key, string value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { fixed (byte* valueBufferPtr = valueBuffer) @@ -307,7 +307,7 @@ public unsafe static void SetString(nint keyvalues, string key, string value) public unsafe static void SetPtr(nint keyvalues, string key, nint value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetPtr(keyvalues, keyBufferPtr, value); @@ -318,7 +318,7 @@ public unsafe static void SetPtr(nint keyvalues, string key, nint value) public unsafe static void SetStringToken(nint keyvalues, string key, CUtlStringToken value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetStringToken(keyvalues, keyBufferPtr, value); @@ -329,7 +329,7 @@ public unsafe static void SetStringToken(nint keyvalues, string key, CUtlStringT public unsafe static void SetColor(nint keyvalues, string key, Color value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetColor(keyvalues, keyBufferPtr, value); @@ -340,7 +340,7 @@ public unsafe static void SetColor(nint keyvalues, string key, Color value) public unsafe static void SetVector(nint keyvalues, string key, Vector value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetVector(keyvalues, keyBufferPtr, value); @@ -351,7 +351,7 @@ public unsafe static void SetVector(nint keyvalues, string key, Vector value) public unsafe static void SetVector2D(nint keyvalues, string key, Vector2D value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetVector2D(keyvalues, keyBufferPtr, value); @@ -362,7 +362,7 @@ public unsafe static void SetVector2D(nint keyvalues, string key, Vector2D value public unsafe static void SetVector4D(nint keyvalues, string key, Vector4D value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetVector4D(keyvalues, keyBufferPtr, value); @@ -373,7 +373,7 @@ public unsafe static void SetVector4D(nint keyvalues, string key, Vector4D value public unsafe static void SetQAngle(nint keyvalues, string key, QAngle value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetQAngle(keyvalues, keyBufferPtr, value); diff --git a/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs b/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs index 5ddbd0942..a1497878e 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs @@ -15,7 +15,7 @@ internal static class NativeCommandLine public unsafe static bool HasParameter(string parameter) { - byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter); + byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter + "\0"); fixed (byte* parameterBufferPtr = parameterBuffer) { var ret = _HasParameter(parameterBufferPtr); @@ -35,8 +35,8 @@ public unsafe static int GetParameterCount() public unsafe static string GetParameterValueString(string parameter, string defaultValue) { - byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter); - byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue); + byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter + "\0"); + byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue + "\0"); fixed (byte* parameterBufferPtr = parameterBuffer) { fixed (byte* defaultValueBufferPtr = defaultValueBuffer) @@ -56,7 +56,7 @@ public unsafe static string GetParameterValueString(string parameter, string def public unsafe static int GetParameterValueInt(string parameter, int defaultValue) { - byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter); + byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter + "\0"); fixed (byte* parameterBufferPtr = parameterBuffer) { var ret = _GetParameterValueInt(parameterBufferPtr, defaultValue); @@ -68,7 +68,7 @@ public unsafe static int GetParameterValueInt(string parameter, int defaultValue public unsafe static float GetParameterValueFloat(string parameter, float defaultValue) { - byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter); + byte[] parameterBuffer = Encoding.UTF8.GetBytes(parameter + "\0"); fixed (byte* parameterBufferPtr = parameterBuffer) { var ret = _GetParameterValueFloat(parameterBufferPtr, defaultValue); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Commands.cs b/managed/src/SwiftlyS2.Generated/Natives/Commands.cs index ad740ac7b..cfe57c711 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Commands.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Commands.cs @@ -18,7 +18,7 @@ internal static class NativeCommands /// public unsafe static int HandleCommandForPlayer(int playerid, string command) { - byte[] commandBuffer = Encoding.UTF8.GetBytes(command); + byte[] commandBuffer = Encoding.UTF8.GetBytes(command + "\0"); fixed (byte* commandBufferPtr = commandBuffer) { var ret = _HandleCommandForPlayer(playerid, commandBufferPtr); @@ -33,7 +33,7 @@ public unsafe static int HandleCommandForPlayer(int playerid, string command) /// public unsafe static ulong RegisterCommand(string commandName, nint callback, bool registerRaw) { - byte[] commandNameBuffer = Encoding.UTF8.GetBytes(commandName); + byte[] commandNameBuffer = Encoding.UTF8.GetBytes(commandName + "\0"); fixed (byte* commandNameBufferPtr = commandNameBuffer) { var ret = _RegisterCommand(commandNameBufferPtr, callback, registerRaw ? (byte)1 : (byte)0); @@ -55,8 +55,8 @@ public unsafe static void UnregisterCommand(ulong callbackID) /// public unsafe static ulong RegisterAlias(string aliasName, string commandName, bool registerRaw) { - byte[] aliasNameBuffer = Encoding.UTF8.GetBytes(aliasName); - byte[] commandNameBuffer = Encoding.UTF8.GetBytes(commandName); + byte[] aliasNameBuffer = Encoding.UTF8.GetBytes(aliasName + "\0"); + byte[] commandNameBuffer = Encoding.UTF8.GetBytes(commandName + "\0"); fixed (byte* aliasNameBufferPtr = aliasNameBuffer) { fixed (byte* commandNameBufferPtr = commandNameBuffer) diff --git a/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs b/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs index 3872b95ca..e344b02be 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs @@ -67,7 +67,7 @@ public unsafe static void ReloadFilterConfiguration() /// public unsafe static bool NeedsFiltering(string text) { - byte[] textBuffer = Encoding.UTF8.GetBytes(text); + byte[] textBuffer = Encoding.UTF8.GetBytes(text + "\0"); fixed (byte* textBufferPtr = textBuffer) { var ret = _NeedsFiltering(textBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Convars.cs b/managed/src/SwiftlyS2.Generated/Natives/Convars.cs index f6e1261f1..cbbdf29b6 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Convars.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Convars.cs @@ -15,7 +15,7 @@ internal static class NativeConvars public unsafe static void QueryClientConvar(int playerid, string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { _QueryClientConvar(playerid, cvarNameBufferPtr); @@ -98,8 +98,8 @@ public unsafe static void RemoveConCommandCreatedListener(ulong callbackID) public unsafe static void CreateConvarInt16(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, short defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -113,8 +113,8 @@ public unsafe static void CreateConvarInt16(string cvarName, int cvarType, ulong public unsafe static void CreateConvarUInt16(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, ushort defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -128,8 +128,8 @@ public unsafe static void CreateConvarUInt16(string cvarName, int cvarType, ulon public unsafe static void CreateConvarInt32(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, int defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -143,8 +143,8 @@ public unsafe static void CreateConvarInt32(string cvarName, int cvarType, ulong public unsafe static void CreateConvarUInt32(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, uint defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -158,8 +158,8 @@ public unsafe static void CreateConvarUInt32(string cvarName, int cvarType, ulon public unsafe static void CreateConvarInt64(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, long defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -173,8 +173,8 @@ public unsafe static void CreateConvarInt64(string cvarName, int cvarType, ulong public unsafe static void CreateConvarUInt64(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, ulong defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -188,8 +188,8 @@ public unsafe static void CreateConvarUInt64(string cvarName, int cvarType, ulon public unsafe static void CreateConvarBool(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, bool defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -203,8 +203,8 @@ public unsafe static void CreateConvarBool(string cvarName, int cvarType, ulong public unsafe static void CreateConvarFloat(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, float defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -218,8 +218,8 @@ public unsafe static void CreateConvarFloat(string cvarName, int cvarType, ulong public unsafe static void CreateConvarDouble(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, double defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -233,8 +233,8 @@ public unsafe static void CreateConvarDouble(string cvarName, int cvarType, ulon public unsafe static void CreateConvarColor(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Color defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -248,8 +248,8 @@ public unsafe static void CreateConvarColor(string cvarName, int cvarType, ulong public unsafe static void CreateConvarVector2D(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector2D defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -263,8 +263,8 @@ public unsafe static void CreateConvarVector2D(string cvarName, int cvarType, ul public unsafe static void CreateConvarVector(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -278,8 +278,8 @@ public unsafe static void CreateConvarVector(string cvarName, int cvarType, ulon public unsafe static void CreateConvarVector4D(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, Vector4D defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -293,8 +293,8 @@ public unsafe static void CreateConvarVector4D(string cvarName, int cvarType, ul public unsafe static void CreateConvarQAngle(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, QAngle defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -308,9 +308,9 @@ public unsafe static void CreateConvarQAngle(string cvarName, int cvarType, ulon public unsafe static void CreateConvarString(string cvarName, int cvarType, ulong cvarFlags, string helpMessage, string defaultValue, nint minValue, nint maxValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage); - byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] helpMessageBuffer = Encoding.UTF8.GetBytes(helpMessage + "\0"); + byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* helpMessageBufferPtr = helpMessageBuffer) @@ -327,7 +327,7 @@ public unsafe static void CreateConvarString(string cvarName, int cvarType, ulon public unsafe static void DeleteConvar(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { _DeleteConvar(cvarNameBufferPtr); @@ -338,7 +338,7 @@ public unsafe static void DeleteConvar(string cvarName) public unsafe static bool ExistsConvar(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { var ret = _ExistsConvar(cvarNameBufferPtr); @@ -350,7 +350,7 @@ public unsafe static bool ExistsConvar(string cvarName) public unsafe static int GetConvarType(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { var ret = _GetConvarType(cvarNameBufferPtr); @@ -362,8 +362,8 @@ public unsafe static int GetConvarType(string cvarName) public unsafe static void SetClientConvarValueString(int playerid, string cvarName, string defaultValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* defaultValueBufferPtr = defaultValueBuffer) @@ -377,7 +377,7 @@ public unsafe static void SetClientConvarValueString(int playerid, string cvarNa public unsafe static ulong GetFlags(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { var ret = _GetFlags(cvarNameBufferPtr); @@ -389,7 +389,7 @@ public unsafe static ulong GetFlags(string cvarName) public unsafe static void SetFlags(string cvarName, ulong flags) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { _SetFlags(cvarNameBufferPtr, flags); @@ -400,7 +400,7 @@ public unsafe static void SetFlags(string cvarName, ulong flags) public unsafe static nint GetMinValuePtrPtr(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { var ret = _GetMinValuePtrPtr(cvarNameBufferPtr); @@ -412,7 +412,7 @@ public unsafe static nint GetMinValuePtrPtr(string cvarName) public unsafe static nint GetMaxValuePtrPtr(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { var ret = _GetMaxValuePtrPtr(cvarNameBufferPtr); @@ -424,7 +424,7 @@ public unsafe static nint GetMaxValuePtrPtr(string cvarName) public unsafe static bool HasDefaultValue(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { var ret = _HasDefaultValue(cvarNameBufferPtr); @@ -436,7 +436,7 @@ public unsafe static bool HasDefaultValue(string cvarName) public unsafe static nint GetDefaultValuePtr(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { var ret = _GetDefaultValuePtr(cvarNameBufferPtr); @@ -448,7 +448,7 @@ public unsafe static nint GetDefaultValuePtr(string cvarName) public unsafe static void SetDefaultValue(string cvarName, nint defaultValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { _SetDefaultValue(cvarNameBufferPtr, defaultValue); @@ -459,8 +459,8 @@ public unsafe static void SetDefaultValue(string cvarName, nint defaultValue) public unsafe static void SetDefaultValueString(string cvarName, string defaultValue) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); - byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); + byte[] defaultValueBuffer = Encoding.UTF8.GetBytes(defaultValue + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { fixed (byte* defaultValueBufferPtr = defaultValueBuffer) @@ -474,7 +474,7 @@ public unsafe static void SetDefaultValueString(string cvarName, string defaultV public unsafe static nint GetValuePtr(string cvarName) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { var ret = _GetValuePtr(cvarNameBufferPtr); @@ -486,7 +486,7 @@ public unsafe static nint GetValuePtr(string cvarName) public unsafe static void SetValuePtr(string cvarName, nint value) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { _SetValuePtr(cvarNameBufferPtr, value); @@ -497,7 +497,7 @@ public unsafe static void SetValuePtr(string cvarName, nint value) public unsafe static void SetValueInternalPtr(string cvarName, nint value) { - byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName); + byte[] cvarNameBuffer = Encoding.UTF8.GetBytes(cvarName + "\0"); fixed (byte* cvarNameBufferPtr = cvarNameBuffer) { _SetValueInternalPtr(cvarNameBufferPtr, value); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Database.cs b/managed/src/SwiftlyS2.Generated/Natives/Database.cs index 28f31fad4..37146818e 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Database.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Database.cs @@ -41,7 +41,7 @@ public unsafe static string GetDefaultConnectionCredentials() public unsafe static string GetCredentials(string connectionName) { - byte[] connectionNameBuffer = Encoding.UTF8.GetBytes(connectionName); + byte[] connectionNameBuffer = Encoding.UTF8.GetBytes(connectionName + "\0"); fixed (byte* connectionNameBufferPtr = connectionNameBuffer) { var ret = _GetCredentials(null, connectionNameBufferPtr); @@ -58,7 +58,7 @@ public unsafe static string GetCredentials(string connectionName) public unsafe static bool ConnectionExists(string connectionName) { - byte[] connectionNameBuffer = Encoding.UTF8.GetBytes(connectionName); + byte[] connectionNameBuffer = Encoding.UTF8.GetBytes(connectionName + "\0"); fixed (byte* connectionNameBufferPtr = connectionNameBuffer) { var ret = _ConnectionExists(connectionNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs b/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs index 5f5525493..55d3ab369 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs @@ -31,7 +31,7 @@ public unsafe static string GetIP() /// public unsafe static bool IsMapValid(string map_name) { - byte[] map_nameBuffer = Encoding.UTF8.GetBytes(map_name); + byte[] map_nameBuffer = Encoding.UTF8.GetBytes(map_name + "\0"); fixed (byte* map_nameBufferPtr = map_nameBuffer) { var ret = _IsMapValid(map_nameBufferPtr); @@ -43,7 +43,7 @@ public unsafe static bool IsMapValid(string map_name) public unsafe static void ExecuteCommand(string command) { - byte[] commandBuffer = Encoding.UTF8.GetBytes(command); + byte[] commandBuffer = Encoding.UTF8.GetBytes(command + "\0"); fixed (byte* commandBufferPtr = commandBuffer) { _ExecuteCommand(commandBufferPtr); @@ -54,7 +54,7 @@ public unsafe static void ExecuteCommand(string command) public unsafe static nint FindGameSystemByName(string name) { - byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + byte[] nameBuffer = Encoding.UTF8.GetBytes(name + "\0"); fixed (byte* nameBufferPtr = nameBuffer) { var ret = _FindGameSystemByName(nameBufferPtr); @@ -66,7 +66,7 @@ public unsafe static nint FindGameSystemByName(string name) public unsafe static void SendMessageToConsole(string msg) { - byte[] msgBuffer = Encoding.UTF8.GetBytes(msg); + byte[] msgBuffer = Encoding.UTF8.GetBytes(msg + "\0"); fixed (byte* msgBufferPtr = msgBuffer) { _SendMessageToConsole(msgBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/EntitySystem.cs b/managed/src/SwiftlyS2.Generated/Natives/EntitySystem.cs index 75bbaa2b1..78a5b3473 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/EntitySystem.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/EntitySystem.cs @@ -29,7 +29,7 @@ public unsafe static void Despawn(nint entity) public unsafe static nint CreateEntityByName(string name) { - byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + byte[] nameBuffer = Encoding.UTF8.GetBytes(name + "\0"); fixed (byte* nameBufferPtr = nameBuffer) { var ret = _CreateEntityByName(nameBufferPtr); @@ -41,7 +41,7 @@ public unsafe static nint CreateEntityByName(string name) public unsafe static void AcceptInputInt32(nint entity, string input, nint activator, nint caller, int value, int outputID) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AcceptInputInt32(entity, inputBufferPtr, activator, caller, value, outputID); @@ -52,7 +52,7 @@ public unsafe static void AcceptInputInt32(nint entity, string input, nint activ public unsafe static void AcceptInputUInt32(nint entity, string input, nint activator, nint caller, uint value, int outputID) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AcceptInputUInt32(entity, inputBufferPtr, activator, caller, value, outputID); @@ -63,7 +63,7 @@ public unsafe static void AcceptInputUInt32(nint entity, string input, nint acti public unsafe static void AcceptInputInt64(nint entity, string input, nint activator, nint caller, long value, int outputID) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AcceptInputInt64(entity, inputBufferPtr, activator, caller, value, outputID); @@ -74,7 +74,7 @@ public unsafe static void AcceptInputInt64(nint entity, string input, nint activ public unsafe static void AcceptInputUInt64(nint entity, string input, nint activator, nint caller, ulong value, int outputID) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AcceptInputUInt64(entity, inputBufferPtr, activator, caller, value, outputID); @@ -85,7 +85,7 @@ public unsafe static void AcceptInputUInt64(nint entity, string input, nint acti public unsafe static void AcceptInputFloat(nint entity, string input, nint activator, nint caller, float value, int outputID) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AcceptInputFloat(entity, inputBufferPtr, activator, caller, value, outputID); @@ -96,7 +96,7 @@ public unsafe static void AcceptInputFloat(nint entity, string input, nint activ public unsafe static void AcceptInputDouble(nint entity, string input, nint activator, nint caller, double value, int outputID) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AcceptInputDouble(entity, inputBufferPtr, activator, caller, value, outputID); @@ -107,7 +107,7 @@ public unsafe static void AcceptInputDouble(nint entity, string input, nint acti public unsafe static void AcceptInputBool(nint entity, string input, nint activator, nint caller, bool value, int outputID) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AcceptInputBool(entity, inputBufferPtr, activator, caller, value ? (byte)1 : (byte)0, outputID); @@ -118,8 +118,8 @@ public unsafe static void AcceptInputBool(nint entity, string input, nint activa public unsafe static void AcceptInputString(nint entity, string input, nint activator, nint caller, string value, int outputID) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { fixed (byte* valueBufferPtr = valueBuffer) @@ -133,7 +133,7 @@ public unsafe static void AcceptInputString(nint entity, string input, nint acti public unsafe static void AddEntityIOEventInt32(nint entity, string input, nint activator, nint caller, int value, float delay) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AddEntityIOEventInt32(entity, inputBufferPtr, activator, caller, value, delay); @@ -144,7 +144,7 @@ public unsafe static void AddEntityIOEventInt32(nint entity, string input, nint public unsafe static void AddEntityIOEventUInt32(nint entity, string input, nint activator, nint caller, uint value, float delay) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AddEntityIOEventUInt32(entity, inputBufferPtr, activator, caller, value, delay); @@ -155,7 +155,7 @@ public unsafe static void AddEntityIOEventUInt32(nint entity, string input, nint public unsafe static void AddEntityIOEventInt64(nint entity, string input, nint activator, nint caller, long value, float delay) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AddEntityIOEventInt64(entity, inputBufferPtr, activator, caller, value, delay); @@ -166,7 +166,7 @@ public unsafe static void AddEntityIOEventInt64(nint entity, string input, nint public unsafe static void AddEntityIOEventUInt64(nint entity, string input, nint activator, nint caller, ulong value, float delay) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AddEntityIOEventUInt64(entity, inputBufferPtr, activator, caller, value, delay); @@ -177,7 +177,7 @@ public unsafe static void AddEntityIOEventUInt64(nint entity, string input, nint public unsafe static void AddEntityIOEventFloat(nint entity, string input, nint activator, nint caller, float value, float delay) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AddEntityIOEventFloat(entity, inputBufferPtr, activator, caller, value, delay); @@ -188,7 +188,7 @@ public unsafe static void AddEntityIOEventFloat(nint entity, string input, nint public unsafe static void AddEntityIOEventDouble(nint entity, string input, nint activator, nint caller, double value, float delay) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AddEntityIOEventDouble(entity, inputBufferPtr, activator, caller, value, delay); @@ -199,7 +199,7 @@ public unsafe static void AddEntityIOEventDouble(nint entity, string input, nint public unsafe static void AddEntityIOEventBool(nint entity, string input, nint activator, nint caller, bool value, float delay) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { _AddEntityIOEventBool(entity, inputBufferPtr, activator, caller, value ? (byte)1 : (byte)0, delay); @@ -210,8 +210,8 @@ public unsafe static void AddEntityIOEventBool(nint entity, string input, nint a public unsafe static void AddEntityIOEventString(nint entity, string input, nint activator, nint caller, string value, float delay) { - byte[] inputBuffer = Encoding.UTF8.GetBytes(input); - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] inputBuffer = Encoding.UTF8.GetBytes(input + "\0"); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* inputBufferPtr = inputBuffer) { fixed (byte* valueBufferPtr = valueBuffer) @@ -284,8 +284,8 @@ public unsafe static nint GetFirstActiveEntity() /// public unsafe static ulong HookEntityOutput(string className, string outputName, nint callback) { - byte[] classNameBuffer = Encoding.UTF8.GetBytes(className); - byte[] outputNameBuffer = Encoding.UTF8.GetBytes(outputName); + byte[] classNameBuffer = Encoding.UTF8.GetBytes(className + "\0"); + byte[] outputNameBuffer = Encoding.UTF8.GetBytes(outputName + "\0"); fixed (byte* classNameBufferPtr = classNameBuffer) { fixed (byte* outputNameBufferPtr = outputNameBuffer) diff --git a/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs b/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs index 8e7673da7..e60ded53b 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs @@ -15,7 +15,7 @@ internal static class NativeFileSystem public unsafe static string GetSearchPath(string pathId, int searchPathType, int searchPathsToGet) { - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* pathIdBufferPtr = pathIdBuffer) { var ret = _GetSearchPath(null, pathIdBufferPtr, searchPathType, searchPathsToGet); @@ -32,8 +32,8 @@ public unsafe static string GetSearchPath(string pathId, int searchPathType, int public unsafe static void AddSearchPath(string path, string pathId, int searchPathAdd, int searchPathPriority) { - byte[] pathBuffer = Encoding.UTF8.GetBytes(path); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] pathBuffer = Encoding.UTF8.GetBytes(path + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* pathBufferPtr = pathBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -47,8 +47,8 @@ public unsafe static void AddSearchPath(string path, string pathId, int searchPa public unsafe static bool RemoveSearchPath(string path, string pathId) { - byte[] pathBuffer = Encoding.UTF8.GetBytes(path); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] pathBuffer = Encoding.UTF8.GetBytes(path + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* pathBufferPtr = pathBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -63,8 +63,8 @@ public unsafe static bool RemoveSearchPath(string path, string pathId) public unsafe static bool FileExists(string fileName, string pathId) { - byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* fileNameBufferPtr = fileNameBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -79,8 +79,8 @@ public unsafe static bool FileExists(string fileName, string pathId) public unsafe static bool IsDirectory(string path, string pathId) { - byte[] pathBuffer = Encoding.UTF8.GetBytes(path); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] pathBuffer = Encoding.UTF8.GetBytes(path + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* pathBufferPtr = pathBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -102,8 +102,8 @@ public unsafe static void PrintSearchPaths() public unsafe static string ReadFile(string fileName, string pathId) { - byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* fileNameBufferPtr = fileNameBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -123,9 +123,9 @@ public unsafe static string ReadFile(string fileName, string pathId) public unsafe static bool WriteFile(string fileName, string pathId, string content) { - byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); - byte[] contentBuffer = Encoding.UTF8.GetBytes(content); + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); + byte[] contentBuffer = Encoding.UTF8.GetBytes(content + "\0"); fixed (byte* fileNameBufferPtr = fileNameBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -143,8 +143,8 @@ public unsafe static bool WriteFile(string fileName, string pathId, string conte public unsafe static uint GetFileSize(string fileName, string pathId) { - byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* fileNameBufferPtr = fileNameBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -159,8 +159,8 @@ public unsafe static uint GetFileSize(string fileName, string pathId) public unsafe static bool PrecacheFile(string fileName, string pathId) { - byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* fileNameBufferPtr = fileNameBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -175,8 +175,8 @@ public unsafe static bool PrecacheFile(string fileName, string pathId) public unsafe static bool IsFileWritable(string fileName, string pathId) { - byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* fileNameBufferPtr = fileNameBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) @@ -191,8 +191,8 @@ public unsafe static bool IsFileWritable(string fileName, string pathId) public unsafe static bool SetFileWritable(string fileName, string pathId, bool writable) { - byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName); - byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId); + byte[] fileNameBuffer = Encoding.UTF8.GetBytes(fileName + "\0"); + byte[] pathIdBuffer = Encoding.UTF8.GetBytes(pathId + "\0"); fixed (byte* fileNameBufferPtr = fileNameBuffer) { fixed (byte* pathIdBufferPtr = pathIdBuffer) diff --git a/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs b/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs index cf27125c4..babf2f80b 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs @@ -15,7 +15,7 @@ internal static class NativeGameEvents public unsafe static bool GetBool(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetBool(_event, keyBufferPtr); @@ -27,7 +27,7 @@ public unsafe static bool GetBool(nint _event, string key) public unsafe static int GetInt(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetInt(_event, keyBufferPtr); @@ -39,7 +39,7 @@ public unsafe static int GetInt(nint _event, string key) public unsafe static ulong GetUint64(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetUint64(_event, keyBufferPtr); @@ -51,7 +51,7 @@ public unsafe static ulong GetUint64(nint _event, string key) public unsafe static float GetFloat(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetFloat(_event, keyBufferPtr); @@ -63,7 +63,7 @@ public unsafe static float GetFloat(nint _event, string key) public unsafe static string GetString(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetString(null, _event, keyBufferPtr); @@ -80,7 +80,7 @@ public unsafe static string GetString(nint _event, string key) public unsafe static nint GetPtr(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetPtr(_event, keyBufferPtr); @@ -95,7 +95,7 @@ public unsafe static nint GetPtr(nint _event, string key) /// public unsafe static nint GetEHandle(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetEHandle(_event, keyBufferPtr); @@ -107,7 +107,7 @@ public unsafe static nint GetEHandle(nint _event, string key) public unsafe static nint GetEntity(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetEntity(_event, keyBufferPtr); @@ -119,7 +119,7 @@ public unsafe static nint GetEntity(nint _event, string key) public unsafe static int GetEntityIndex(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetEntityIndex(_event, keyBufferPtr); @@ -131,7 +131,7 @@ public unsafe static int GetEntityIndex(nint _event, string key) public unsafe static int GetPlayerSlot(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetPlayerSlot(_event, keyBufferPtr); @@ -143,7 +143,7 @@ public unsafe static int GetPlayerSlot(nint _event, string key) public unsafe static nint GetPlayerController(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetPlayerController(_event, keyBufferPtr); @@ -155,7 +155,7 @@ public unsafe static nint GetPlayerController(nint _event, string key) public unsafe static nint GetPlayerPawn(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetPlayerPawn(_event, keyBufferPtr); @@ -170,7 +170,7 @@ public unsafe static nint GetPlayerPawn(nint _event, string key) /// public unsafe static nint GetPawnEHandle(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetPawnEHandle(_event, keyBufferPtr); @@ -182,7 +182,7 @@ public unsafe static nint GetPawnEHandle(nint _event, string key) public unsafe static int GetPawnEntityIndex(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetPawnEntityIndex(_event, keyBufferPtr); @@ -194,7 +194,7 @@ public unsafe static int GetPawnEntityIndex(nint _event, string key) public unsafe static void SetBool(nint _event, string key, bool value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetBool(_event, keyBufferPtr, value ? (byte)1 : (byte)0); @@ -205,7 +205,7 @@ public unsafe static void SetBool(nint _event, string key, bool value) public unsafe static void SetInt(nint _event, string key, int value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetInt(_event, keyBufferPtr, value); @@ -216,7 +216,7 @@ public unsafe static void SetInt(nint _event, string key, int value) public unsafe static void SetUint64(nint _event, string key, ulong value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetUint64(_event, keyBufferPtr, value); @@ -227,7 +227,7 @@ public unsafe static void SetUint64(nint _event, string key, ulong value) public unsafe static void SetFloat(nint _event, string key, float value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetFloat(_event, keyBufferPtr, value); @@ -238,8 +238,8 @@ public unsafe static void SetFloat(nint _event, string key, float value) public unsafe static void SetString(nint _event, string key, string value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { fixed (byte* valueBufferPtr = valueBuffer) @@ -253,7 +253,7 @@ public unsafe static void SetString(nint _event, string key, string value) public unsafe static void SetPtr(nint _event, string key, nint value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetPtr(_event, keyBufferPtr, value); @@ -264,7 +264,7 @@ public unsafe static void SetPtr(nint _event, string key, nint value) public unsafe static void SetEntity(nint _event, string key, nint value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetEntity(_event, keyBufferPtr, value); @@ -275,7 +275,7 @@ public unsafe static void SetEntity(nint _event, string key, nint value) public unsafe static void SetEntityIndex(nint _event, string key, int value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetEntityIndex(_event, keyBufferPtr, value); @@ -286,7 +286,7 @@ public unsafe static void SetEntityIndex(nint _event, string key, int value) public unsafe static void SetPlayerSlot(nint _event, string key, int value) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { _SetPlayerSlot(_event, keyBufferPtr, value); @@ -297,7 +297,7 @@ public unsafe static void SetPlayerSlot(nint _event, string key, int value) public unsafe static bool HasKey(nint _event, string key) { - byte[] keyBuffer = Encoding.UTF8.GetBytes(key); + byte[] keyBuffer = Encoding.UTF8.GetBytes(key + "\0"); fixed (byte* keyBufferPtr = keyBuffer) { var ret = _HasKey(_event, keyBufferPtr); @@ -325,7 +325,7 @@ public unsafe static bool IsLocal(nint _event) public unsafe static void RegisterListener(string eventName) { - byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName); + byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName + "\0"); fixed (byte* eventNameBufferPtr = eventNameBuffer) { _RegisterListener(eventNameBufferPtr); @@ -372,7 +372,7 @@ public unsafe static void RemoveListenerPostCallback(ulong listenerID) public unsafe static nint CreateEvent(string eventName) { - byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName); + byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName + "\0"); fixed (byte* eventNameBufferPtr = eventNameBuffer) { var ret = _CreateEvent(eventNameBufferPtr); @@ -405,7 +405,7 @@ public unsafe static void FireEventToClient(nint _event, int playerid) public unsafe static bool IsPlayerListeningToEventName(int playerid, string eventName) { - byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName); + byte[] eventNameBuffer = Encoding.UTF8.GetBytes(eventName + "\0"); fixed (byte* eventNameBufferPtr = eventNameBuffer) { var ret = _IsPlayerListeningToEventName(playerid, eventNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs b/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs index b57bf7f14..bfef3bade 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs @@ -18,7 +18,7 @@ internal static class NativeMemoryHelpers /// public unsafe static nint FetchInterfaceByName(string ifaceName) { - byte[] ifaceNameBuffer = Encoding.UTF8.GetBytes(ifaceName); + byte[] ifaceNameBuffer = Encoding.UTF8.GetBytes(ifaceName + "\0"); fixed (byte* ifaceNameBufferPtr = ifaceNameBuffer) { var ret = _FetchInterfaceByName(ifaceNameBufferPtr); @@ -30,8 +30,8 @@ public unsafe static nint FetchInterfaceByName(string ifaceName) public unsafe static nint GetVirtualTableAddress(string library, string vtableName) { - byte[] libraryBuffer = Encoding.UTF8.GetBytes(library); - byte[] vtableNameBuffer = Encoding.UTF8.GetBytes(vtableName); + byte[] libraryBuffer = Encoding.UTF8.GetBytes(library + "\0"); + byte[] vtableNameBuffer = Encoding.UTF8.GetBytes(vtableName + "\0"); fixed (byte* libraryBufferPtr = libraryBuffer) { fixed (byte* vtableNameBufferPtr = vtableNameBuffer) @@ -46,8 +46,8 @@ public unsafe static nint GetVirtualTableAddress(string library, string vtableNa public unsafe static nint GetAddressBySignature(string library, string sig, int len, bool rawBytes) { - byte[] libraryBuffer = Encoding.UTF8.GetBytes(library); - byte[] sigBuffer = Encoding.UTF8.GetBytes(sig); + byte[] libraryBuffer = Encoding.UTF8.GetBytes(library + "\0"); + byte[] sigBuffer = Encoding.UTF8.GetBytes(sig + "\0"); fixed (byte* libraryBufferPtr = libraryBuffer) { fixed (byte* sigBufferPtr = sigBuffer) @@ -83,7 +83,7 @@ public unsafe static bool ObjectPtrHasVtable(nint objptr) public unsafe static bool ObjectPtrHasBaseClass(nint objptr, string baseClassName) { - byte[] baseClassNameBuffer = Encoding.UTF8.GetBytes(baseClassName); + byte[] baseClassNameBuffer = Encoding.UTF8.GetBytes(baseClassName + "\0"); fixed (byte* baseClassNameBufferPtr = baseClassNameBuffer) { var ret = _ObjectPtrHasBaseClass(objptr, baseClassNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs b/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs index bc0053e28..446bc5eaa 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs @@ -23,7 +23,7 @@ public unsafe static nint AllocateNetMessageByID(int msgid) public unsafe static nint AllocateNetMessageByPartialName(string name) { - byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + byte[] nameBuffer = Encoding.UTF8.GetBytes(name + "\0"); fixed (byte* nameBufferPtr = nameBuffer) { var ret = _AllocateNetMessageByPartialName(nameBufferPtr); @@ -42,7 +42,7 @@ public unsafe static void DeallocateNetMessage(nint netmsg) public unsafe static bool HasField(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _HasField(netmsg, fieldNameBufferPtr); @@ -54,7 +54,7 @@ public unsafe static bool HasField(nint netmsg, string fieldName) public unsafe static int GetInt32(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetInt32(netmsg, fieldNameBufferPtr); @@ -66,7 +66,7 @@ public unsafe static int GetInt32(nint netmsg, string fieldName) public unsafe static int GetRepeatedInt32(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedInt32(netmsg, fieldNameBufferPtr, index); @@ -78,7 +78,7 @@ public unsafe static int GetRepeatedInt32(nint netmsg, string fieldName, int ind public unsafe static void SetInt32(nint netmsg, string fieldName, int value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetInt32(netmsg, fieldNameBufferPtr, value); @@ -89,7 +89,7 @@ public unsafe static void SetInt32(nint netmsg, string fieldName, int value) public unsafe static void SetRepeatedInt32(nint netmsg, string fieldName, int index, int value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedInt32(netmsg, fieldNameBufferPtr, index, value); @@ -100,7 +100,7 @@ public unsafe static void SetRepeatedInt32(nint netmsg, string fieldName, int in public unsafe static void AddInt32(nint netmsg, string fieldName, int value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddInt32(netmsg, fieldNameBufferPtr, value); @@ -111,7 +111,7 @@ public unsafe static void AddInt32(nint netmsg, string fieldName, int value) public unsafe static long GetInt64(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetInt64(netmsg, fieldNameBufferPtr); @@ -123,7 +123,7 @@ public unsafe static long GetInt64(nint netmsg, string fieldName) public unsafe static long GetRepeatedInt64(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedInt64(netmsg, fieldNameBufferPtr, index); @@ -135,7 +135,7 @@ public unsafe static long GetRepeatedInt64(nint netmsg, string fieldName, int in public unsafe static void SetInt64(nint netmsg, string fieldName, long value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetInt64(netmsg, fieldNameBufferPtr, value); @@ -146,7 +146,7 @@ public unsafe static void SetInt64(nint netmsg, string fieldName, long value) public unsafe static void SetRepeatedInt64(nint netmsg, string fieldName, int index, long value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedInt64(netmsg, fieldNameBufferPtr, index, value); @@ -157,7 +157,7 @@ public unsafe static void SetRepeatedInt64(nint netmsg, string fieldName, int in public unsafe static void AddInt64(nint netmsg, string fieldName, long value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddInt64(netmsg, fieldNameBufferPtr, value); @@ -168,7 +168,7 @@ public unsafe static void AddInt64(nint netmsg, string fieldName, long value) public unsafe static uint GetUInt32(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetUInt32(netmsg, fieldNameBufferPtr); @@ -180,7 +180,7 @@ public unsafe static uint GetUInt32(nint netmsg, string fieldName) public unsafe static uint GetRepeatedUInt32(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedUInt32(netmsg, fieldNameBufferPtr, index); @@ -192,7 +192,7 @@ public unsafe static uint GetRepeatedUInt32(nint netmsg, string fieldName, int i public unsafe static void SetUInt32(nint netmsg, string fieldName, uint value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetUInt32(netmsg, fieldNameBufferPtr, value); @@ -203,7 +203,7 @@ public unsafe static void SetUInt32(nint netmsg, string fieldName, uint value) public unsafe static void SetRepeatedUInt32(nint netmsg, string fieldName, int index, uint value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedUInt32(netmsg, fieldNameBufferPtr, index, value); @@ -214,7 +214,7 @@ public unsafe static void SetRepeatedUInt32(nint netmsg, string fieldName, int i public unsafe static void AddUInt32(nint netmsg, string fieldName, uint value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddUInt32(netmsg, fieldNameBufferPtr, value); @@ -225,7 +225,7 @@ public unsafe static void AddUInt32(nint netmsg, string fieldName, uint value) public unsafe static ulong GetUInt64(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetUInt64(netmsg, fieldNameBufferPtr); @@ -237,7 +237,7 @@ public unsafe static ulong GetUInt64(nint netmsg, string fieldName) public unsafe static ulong GetRepeatedUInt64(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedUInt64(netmsg, fieldNameBufferPtr, index); @@ -249,7 +249,7 @@ public unsafe static ulong GetRepeatedUInt64(nint netmsg, string fieldName, int public unsafe static void SetUInt64(nint netmsg, string fieldName, ulong value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetUInt64(netmsg, fieldNameBufferPtr, value); @@ -260,7 +260,7 @@ public unsafe static void SetUInt64(nint netmsg, string fieldName, ulong value) public unsafe static void SetRepeatedUInt64(nint netmsg, string fieldName, int index, ulong value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedUInt64(netmsg, fieldNameBufferPtr, index, value); @@ -271,7 +271,7 @@ public unsafe static void SetRepeatedUInt64(nint netmsg, string fieldName, int i public unsafe static void AddUInt64(nint netmsg, string fieldName, ulong value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddUInt64(netmsg, fieldNameBufferPtr, value); @@ -282,7 +282,7 @@ public unsafe static void AddUInt64(nint netmsg, string fieldName, ulong value) public unsafe static bool GetBool(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetBool(netmsg, fieldNameBufferPtr); @@ -294,7 +294,7 @@ public unsafe static bool GetBool(nint netmsg, string fieldName) public unsafe static bool GetRepeatedBool(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedBool(netmsg, fieldNameBufferPtr, index); @@ -306,7 +306,7 @@ public unsafe static bool GetRepeatedBool(nint netmsg, string fieldName, int ind public unsafe static void SetBool(nint netmsg, string fieldName, bool value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetBool(netmsg, fieldNameBufferPtr, value ? (byte)1 : (byte)0); @@ -317,7 +317,7 @@ public unsafe static void SetBool(nint netmsg, string fieldName, bool value) public unsafe static void SetRepeatedBool(nint netmsg, string fieldName, int index, bool value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedBool(netmsg, fieldNameBufferPtr, index, value ? (byte)1 : (byte)0); @@ -328,7 +328,7 @@ public unsafe static void SetRepeatedBool(nint netmsg, string fieldName, int ind public unsafe static void AddBool(nint netmsg, string fieldName, bool value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddBool(netmsg, fieldNameBufferPtr, value ? (byte)1 : (byte)0); @@ -339,7 +339,7 @@ public unsafe static void AddBool(nint netmsg, string fieldName, bool value) public unsafe static float GetFloat(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetFloat(netmsg, fieldNameBufferPtr); @@ -351,7 +351,7 @@ public unsafe static float GetFloat(nint netmsg, string fieldName) public unsafe static float GetRepeatedFloat(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedFloat(netmsg, fieldNameBufferPtr, index); @@ -363,7 +363,7 @@ public unsafe static float GetRepeatedFloat(nint netmsg, string fieldName, int i public unsafe static void SetFloat(nint netmsg, string fieldName, float value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetFloat(netmsg, fieldNameBufferPtr, value); @@ -374,7 +374,7 @@ public unsafe static void SetFloat(nint netmsg, string fieldName, float value) public unsafe static void SetRepeatedFloat(nint netmsg, string fieldName, int index, float value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedFloat(netmsg, fieldNameBufferPtr, index, value); @@ -385,7 +385,7 @@ public unsafe static void SetRepeatedFloat(nint netmsg, string fieldName, int in public unsafe static void AddFloat(nint netmsg, string fieldName, float value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddFloat(netmsg, fieldNameBufferPtr, value); @@ -396,7 +396,7 @@ public unsafe static void AddFloat(nint netmsg, string fieldName, float value) public unsafe static double GetDouble(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetDouble(netmsg, fieldNameBufferPtr); @@ -408,7 +408,7 @@ public unsafe static double GetDouble(nint netmsg, string fieldName) public unsafe static double GetRepeatedDouble(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedDouble(netmsg, fieldNameBufferPtr, index); @@ -420,7 +420,7 @@ public unsafe static double GetRepeatedDouble(nint netmsg, string fieldName, int public unsafe static void SetDouble(nint netmsg, string fieldName, double value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetDouble(netmsg, fieldNameBufferPtr, value); @@ -431,7 +431,7 @@ public unsafe static void SetDouble(nint netmsg, string fieldName, double value) public unsafe static void SetRepeatedDouble(nint netmsg, string fieldName, int index, double value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedDouble(netmsg, fieldNameBufferPtr, index, value); @@ -442,7 +442,7 @@ public unsafe static void SetRepeatedDouble(nint netmsg, string fieldName, int i public unsafe static void AddDouble(nint netmsg, string fieldName, double value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddDouble(netmsg, fieldNameBufferPtr, value); @@ -453,7 +453,7 @@ public unsafe static void AddDouble(nint netmsg, string fieldName, double value) public unsafe static string GetString(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetString(null, netmsg, fieldNameBufferPtr); @@ -470,7 +470,7 @@ public unsafe static string GetString(nint netmsg, string fieldName) public unsafe static string GetRepeatedString(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedString(null, netmsg, fieldNameBufferPtr, index); @@ -487,8 +487,8 @@ public unsafe static string GetRepeatedString(nint netmsg, string fieldName, int public unsafe static void SetString(nint netmsg, string fieldName, string value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { fixed (byte* valueBufferPtr = valueBuffer) @@ -502,8 +502,8 @@ public unsafe static void SetString(nint netmsg, string fieldName, string value) public unsafe static void SetRepeatedString(nint netmsg, string fieldName, int index, string value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { fixed (byte* valueBufferPtr = valueBuffer) @@ -517,8 +517,8 @@ public unsafe static void SetRepeatedString(nint netmsg, string fieldName, int i public unsafe static void AddString(nint netmsg, string fieldName, string value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); - byte[] valueBuffer = Encoding.UTF8.GetBytes(value); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); + byte[] valueBuffer = Encoding.UTF8.GetBytes(value + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { fixed (byte* valueBufferPtr = valueBuffer) @@ -532,7 +532,7 @@ public unsafe static void AddString(nint netmsg, string fieldName, string value) public unsafe static Vector2D GetVector2D(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetVector2D(netmsg, fieldNameBufferPtr); @@ -544,7 +544,7 @@ public unsafe static Vector2D GetVector2D(nint netmsg, string fieldName) public unsafe static Vector2D GetRepeatedVector2D(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedVector2D(netmsg, fieldNameBufferPtr, index); @@ -556,7 +556,7 @@ public unsafe static Vector2D GetRepeatedVector2D(nint netmsg, string fieldName, public unsafe static void SetVector2D(nint netmsg, string fieldName, Vector2D value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetVector2D(netmsg, fieldNameBufferPtr, value); @@ -567,7 +567,7 @@ public unsafe static void SetVector2D(nint netmsg, string fieldName, Vector2D va public unsafe static void SetRepeatedVector2D(nint netmsg, string fieldName, int index, Vector2D value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedVector2D(netmsg, fieldNameBufferPtr, index, value); @@ -578,7 +578,7 @@ public unsafe static void SetRepeatedVector2D(nint netmsg, string fieldName, int public unsafe static void AddVector2D(nint netmsg, string fieldName, Vector2D value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddVector2D(netmsg, fieldNameBufferPtr, value); @@ -589,7 +589,7 @@ public unsafe static void AddVector2D(nint netmsg, string fieldName, Vector2D va public unsafe static Vector GetVector(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetVector(netmsg, fieldNameBufferPtr); @@ -601,7 +601,7 @@ public unsafe static Vector GetVector(nint netmsg, string fieldName) public unsafe static Vector GetRepeatedVector(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedVector(netmsg, fieldNameBufferPtr, index); @@ -613,7 +613,7 @@ public unsafe static Vector GetRepeatedVector(nint netmsg, string fieldName, int public unsafe static void SetVector(nint netmsg, string fieldName, Vector value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetVector(netmsg, fieldNameBufferPtr, value); @@ -624,7 +624,7 @@ public unsafe static void SetVector(nint netmsg, string fieldName, Vector value) public unsafe static void SetRepeatedVector(nint netmsg, string fieldName, int index, Vector value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedVector(netmsg, fieldNameBufferPtr, index, value); @@ -635,7 +635,7 @@ public unsafe static void SetRepeatedVector(nint netmsg, string fieldName, int i public unsafe static void AddVector(nint netmsg, string fieldName, Vector value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddVector(netmsg, fieldNameBufferPtr, value); @@ -646,7 +646,7 @@ public unsafe static void AddVector(nint netmsg, string fieldName, Vector value) public unsafe static Color GetColor(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetColor(netmsg, fieldNameBufferPtr); @@ -658,7 +658,7 @@ public unsafe static Color GetColor(nint netmsg, string fieldName) public unsafe static Color GetRepeatedColor(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedColor(netmsg, fieldNameBufferPtr, index); @@ -670,7 +670,7 @@ public unsafe static Color GetRepeatedColor(nint netmsg, string fieldName, int i public unsafe static void SetColor(nint netmsg, string fieldName, Color value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetColor(netmsg, fieldNameBufferPtr, value); @@ -681,7 +681,7 @@ public unsafe static void SetColor(nint netmsg, string fieldName, Color value) public unsafe static void SetRepeatedColor(nint netmsg, string fieldName, int index, Color value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedColor(netmsg, fieldNameBufferPtr, index, value); @@ -692,7 +692,7 @@ public unsafe static void SetRepeatedColor(nint netmsg, string fieldName, int in public unsafe static void AddColor(nint netmsg, string fieldName, Color value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddColor(netmsg, fieldNameBufferPtr, value); @@ -703,7 +703,7 @@ public unsafe static void AddColor(nint netmsg, string fieldName, Color value) public unsafe static QAngle GetQAngle(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetQAngle(netmsg, fieldNameBufferPtr); @@ -715,7 +715,7 @@ public unsafe static QAngle GetQAngle(nint netmsg, string fieldName) public unsafe static QAngle GetRepeatedQAngle(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedQAngle(netmsg, fieldNameBufferPtr, index); @@ -727,7 +727,7 @@ public unsafe static QAngle GetRepeatedQAngle(nint netmsg, string fieldName, int public unsafe static void SetQAngle(nint netmsg, string fieldName, QAngle value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetQAngle(netmsg, fieldNameBufferPtr, value); @@ -738,7 +738,7 @@ public unsafe static void SetQAngle(nint netmsg, string fieldName, QAngle value) public unsafe static void SetRepeatedQAngle(nint netmsg, string fieldName, int index, QAngle value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetRepeatedQAngle(netmsg, fieldNameBufferPtr, index, value); @@ -749,7 +749,7 @@ public unsafe static void SetRepeatedQAngle(nint netmsg, string fieldName, int i public unsafe static void AddQAngle(nint netmsg, string fieldName, QAngle value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _AddQAngle(netmsg, fieldNameBufferPtr, value); @@ -760,7 +760,7 @@ public unsafe static void AddQAngle(nint netmsg, string fieldName, QAngle value) public unsafe static byte[] GetBytes(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetBytes(null, netmsg, fieldNameBufferPtr); @@ -779,7 +779,7 @@ public unsafe static byte[] GetBytes(nint netmsg, string fieldName) public unsafe static byte[] GetRepeatedBytes(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedBytes(null, netmsg, fieldNameBufferPtr, index); @@ -799,10 +799,13 @@ public unsafe static byte[] GetRepeatedBytes(nint netmsg, string fieldName, int public unsafe static void SetBytes(nint netmsg, string fieldName, byte[] value) { var valueLength = value.Length; - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); + var valueLength = value.Length; + byte[] valueBuffer = new byte[valueLength]; + Buffer.BlockCopy(value, 0, valueBuffer, 0, valueLength); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = value) + fixed (byte* valueBufferPtr = valueBuffer) { _SetBytes(netmsg, fieldNameBufferPtr, valueBufferPtr, valueLength); } @@ -814,10 +817,13 @@ public unsafe static void SetBytes(nint netmsg, string fieldName, byte[] value) public unsafe static void SetRepeatedBytes(nint netmsg, string fieldName, int index, byte[] value) { var valueLength = value.Length; - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); + var valueLength = value.Length; + byte[] valueBuffer = new byte[valueLength]; + Buffer.BlockCopy(value, 0, valueBuffer, 0, valueLength); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = value) + fixed (byte* valueBufferPtr = valueBuffer) { _SetRepeatedBytes(netmsg, fieldNameBufferPtr, index, valueBufferPtr, valueLength); } @@ -829,10 +835,13 @@ public unsafe static void SetRepeatedBytes(nint netmsg, string fieldName, int in public unsafe static void AddBytes(nint netmsg, string fieldName, byte[] value) { var valueLength = value.Length; - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); + var valueLength = value.Length; + byte[] valueBuffer = new byte[valueLength]; + Buffer.BlockCopy(value, 0, valueBuffer, 0, valueLength); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = value) + fixed (byte* valueBufferPtr = valueBuffer) { _AddBytes(netmsg, fieldNameBufferPtr, valueBufferPtr, valueLength); } @@ -843,7 +852,7 @@ public unsafe static void AddBytes(nint netmsg, string fieldName, byte[] value) public unsafe static nint GetNestedMessage(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetNestedMessage(netmsg, fieldNameBufferPtr); @@ -855,7 +864,7 @@ public unsafe static nint GetNestedMessage(nint netmsg, string fieldName) public unsafe static nint GetRepeatedNestedMessage(nint netmsg, string fieldName, int index) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedNestedMessage(netmsg, fieldNameBufferPtr, index); @@ -867,7 +876,7 @@ public unsafe static nint GetRepeatedNestedMessage(nint netmsg, string fieldName public unsafe static nint AddNestedMessage(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _AddNestedMessage(netmsg, fieldNameBufferPtr); @@ -879,7 +888,7 @@ public unsafe static nint AddNestedMessage(nint netmsg, string fieldName) public unsafe static int GetRepeatedFieldSize(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedFieldSize(netmsg, fieldNameBufferPtr); @@ -891,7 +900,7 @@ public unsafe static int GetRepeatedFieldSize(nint netmsg, string fieldName) public unsafe static void ClearRepeatedField(nint netmsg, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _ClearRepeatedField(netmsg, fieldNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Offsets.cs b/managed/src/SwiftlyS2.Generated/Natives/Offsets.cs index 18f2b78c5..7e72b7468 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Offsets.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Offsets.cs @@ -15,7 +15,7 @@ internal static class NativeOffsets public unsafe static bool Exists(string name) { - byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + byte[] nameBuffer = Encoding.UTF8.GetBytes(name + "\0"); fixed (byte* nameBufferPtr = nameBuffer) { var ret = _Exists(nameBufferPtr); @@ -27,7 +27,7 @@ public unsafe static bool Exists(string name) public unsafe static int Fetch(string name) { - byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + byte[] nameBuffer = Encoding.UTF8.GetBytes(name + "\0"); fixed (byte* nameBufferPtr = nameBuffer) { var ret = _Fetch(nameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Patches.cs b/managed/src/SwiftlyS2.Generated/Natives/Patches.cs index c54088167..4ddb60fba 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Patches.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Patches.cs @@ -15,7 +15,7 @@ internal static class NativePatches public unsafe static void Apply(string patchName) { - byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName); + byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName + "\0"); fixed (byte* patchNameBufferPtr = patchNameBuffer) { _Apply(patchNameBufferPtr); @@ -26,7 +26,7 @@ public unsafe static void Apply(string patchName) public unsafe static void Revert(string patchName) { - byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName); + byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName + "\0"); fixed (byte* patchNameBufferPtr = patchNameBuffer) { _Revert(patchNameBufferPtr); @@ -37,7 +37,7 @@ public unsafe static void Revert(string patchName) public unsafe static bool Exists(string patchName) { - byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName); + byte[] patchNameBuffer = Encoding.UTF8.GetBytes(patchName + "\0"); fixed (byte* patchNameBufferPtr = patchNameBuffer) { var ret = _Exists(patchNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Player.cs b/managed/src/SwiftlyS2.Generated/Natives/Player.cs index 5a1857b6d..90ffcc57d 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Player.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Player.cs @@ -15,7 +15,7 @@ internal static class NativePlayer public unsafe static void SendMessage(int playerid, int kind, string message, int htmlDuration) { - byte[] messageBuffer = Encoding.UTF8.GetBytes(message); + byte[] messageBuffer = Encoding.UTF8.GetBytes(message + "\0"); fixed (byte* messageBufferPtr = messageBuffer) { _SendMessage(playerid, kind, messageBufferPtr, htmlDuration); @@ -98,7 +98,7 @@ public unsafe static ulong GetPressedButtons(int playerid) public unsafe static void PerformCommand(int playerid, string command) { - byte[] commandBuffer = Encoding.UTF8.GetBytes(command); + byte[] commandBuffer = Encoding.UTF8.GetBytes(command + "\0"); fixed (byte* commandBufferPtr = commandBuffer) { _PerformCommand(playerid, commandBufferPtr); @@ -122,7 +122,7 @@ public unsafe static string GetIPAddress(int playerid) public unsafe static void Kick(int playerid, string reason, int gamereason) { - byte[] reasonBuffer = Encoding.UTF8.GetBytes(reason); + byte[] reasonBuffer = Encoding.UTF8.GetBytes(reason + "\0"); fixed (byte* reasonBufferPtr = reasonBuffer) { _Kick(playerid, reasonBufferPtr, gamereason); @@ -196,7 +196,7 @@ public unsafe static string GetLanguage(int playerid) public unsafe static void SetCenterMenuRender(int playerid, string text) { - byte[] textBuffer = Encoding.UTF8.GetBytes(text); + byte[] textBuffer = Encoding.UTF8.GetBytes(text + "\0"); fixed (byte* textBufferPtr = textBuffer) { _SetCenterMenuRender(playerid, textBufferPtr); @@ -222,7 +222,7 @@ public unsafe static bool HasMenuShown(int playerid) public unsafe static void ExecuteCommand(int playerid, string command) { - byte[] commandBuffer = Encoding.UTF8.GetBytes(command); + byte[] commandBuffer = Encoding.UTF8.GetBytes(command + "\0"); fixed (byte* commandBufferPtr = commandBuffer) { _ExecuteCommand(playerid, commandBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/PlayerManager.cs b/managed/src/SwiftlyS2.Generated/Natives/PlayerManager.cs index dcfbccf35..835d9756a 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/PlayerManager.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/PlayerManager.cs @@ -39,7 +39,7 @@ public unsafe static int GetPlayerCap() public unsafe static void SendMessage(int kind, string message, int duration) { - byte[] messageBuffer = Encoding.UTF8.GetBytes(message); + byte[] messageBuffer = Encoding.UTF8.GetBytes(message + "\0"); fixed (byte* messageBufferPtr = messageBuffer) { _SendMessage(kind, messageBufferPtr, duration); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Schema.cs b/managed/src/SwiftlyS2.Generated/Natives/Schema.cs index 90ce25170..de1cb5fc9 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Schema.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Schema.cs @@ -22,7 +22,7 @@ public unsafe static void SetStateChanged(nint entity, ulong hash) public unsafe static uint FindChainOffset(string className) { - byte[] classNameBuffer = Encoding.UTF8.GetBytes(className); + byte[] classNameBuffer = Encoding.UTF8.GetBytes(className + "\0"); fixed (byte* classNameBufferPtr = classNameBuffer) { var ret = _FindChainOffset(classNameBufferPtr); @@ -42,7 +42,7 @@ public unsafe static int GetOffset(ulong hash) public unsafe static bool IsStruct(string className) { - byte[] classNameBuffer = Encoding.UTF8.GetBytes(className); + byte[] classNameBuffer = Encoding.UTF8.GetBytes(className + "\0"); fixed (byte* classNameBufferPtr = classNameBuffer) { var ret = _IsStruct(classNameBufferPtr); @@ -54,7 +54,7 @@ public unsafe static bool IsStruct(string className) public unsafe static bool IsClassLoaded(string className) { - byte[] classNameBuffer = Encoding.UTF8.GetBytes(className); + byte[] classNameBuffer = Encoding.UTF8.GetBytes(className + "\0"); fixed (byte* classNameBufferPtr = classNameBuffer) { var ret = _IsClassLoaded(classNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Signatures.cs b/managed/src/SwiftlyS2.Generated/Natives/Signatures.cs index ec9442248..b481e6a85 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Signatures.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Signatures.cs @@ -15,7 +15,7 @@ internal static class NativeSignatures public unsafe static bool Exists(string signatureName) { - byte[] signatureNameBuffer = Encoding.UTF8.GetBytes(signatureName); + byte[] signatureNameBuffer = Encoding.UTF8.GetBytes(signatureName + "\0"); fixed (byte* signatureNameBufferPtr = signatureNameBuffer) { var ret = _Exists(signatureNameBufferPtr); @@ -27,7 +27,7 @@ public unsafe static bool Exists(string signatureName) public unsafe static nint Fetch(string signatureName) { - byte[] signatureNameBuffer = Encoding.UTF8.GetBytes(signatureName); + byte[] signatureNameBuffer = Encoding.UTF8.GetBytes(signatureName + "\0"); fixed (byte* signatureNameBufferPtr = signatureNameBuffer) { var ret = _Fetch(signatureNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs b/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs index b797120b1..ae2fff232 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs @@ -42,7 +42,7 @@ public unsafe static uint Emit(nint soundEvent) public unsafe static void SetName(nint soundEvent, string name) { - byte[] nameBuffer = Encoding.UTF8.GetBytes(name); + byte[] nameBuffer = Encoding.UTF8.GetBytes(name + "\0"); fixed (byte* nameBufferPtr = nameBuffer) { _SetName(soundEvent, nameBufferPtr); @@ -109,7 +109,7 @@ public unsafe static void AddAllClients(nint soundEvent) public unsafe static bool HasField(nint soundEvent, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _HasField(soundEvent, fieldNameBufferPtr); @@ -121,7 +121,7 @@ public unsafe static bool HasField(nint soundEvent, string fieldName) public unsafe static void SetBool(nint soundEvent, string fieldName, bool value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetBool(soundEvent, fieldNameBufferPtr, value ? (byte)1 : (byte)0); @@ -132,7 +132,7 @@ public unsafe static void SetBool(nint soundEvent, string fieldName, bool value) public unsafe static bool GetBool(nint soundEvent, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetBool(soundEvent, fieldNameBufferPtr); @@ -144,7 +144,7 @@ public unsafe static bool GetBool(nint soundEvent, string fieldName) public unsafe static void SetInt32(nint soundEvent, string fieldName, int value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetInt32(soundEvent, fieldNameBufferPtr, value); @@ -155,7 +155,7 @@ public unsafe static void SetInt32(nint soundEvent, string fieldName, int value) public unsafe static int GetInt32(nint soundEvent, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetInt32(soundEvent, fieldNameBufferPtr); @@ -167,7 +167,7 @@ public unsafe static int GetInt32(nint soundEvent, string fieldName) public unsafe static void SetUInt32(nint soundEvent, string fieldName, uint value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetUInt32(soundEvent, fieldNameBufferPtr, value); @@ -178,7 +178,7 @@ public unsafe static void SetUInt32(nint soundEvent, string fieldName, uint valu public unsafe static uint GetUInt32(nint soundEvent, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetUInt32(soundEvent, fieldNameBufferPtr); @@ -190,7 +190,7 @@ public unsafe static uint GetUInt32(nint soundEvent, string fieldName) public unsafe static void SetUInt64(nint soundEvent, string fieldName, ulong value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetUInt64(soundEvent, fieldNameBufferPtr, value); @@ -201,7 +201,7 @@ public unsafe static void SetUInt64(nint soundEvent, string fieldName, ulong val public unsafe static ulong GetUInt64(nint soundEvent, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetUInt64(soundEvent, fieldNameBufferPtr); @@ -213,7 +213,7 @@ public unsafe static ulong GetUInt64(nint soundEvent, string fieldName) public unsafe static void SetFloat(nint soundEvent, string fieldName, float value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetFloat(soundEvent, fieldNameBufferPtr, value); @@ -224,7 +224,7 @@ public unsafe static void SetFloat(nint soundEvent, string fieldName, float valu public unsafe static float GetFloat(nint soundEvent, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetFloat(soundEvent, fieldNameBufferPtr); @@ -236,7 +236,7 @@ public unsafe static float GetFloat(nint soundEvent, string fieldName) public unsafe static void SetFloat3(nint soundEvent, string fieldName, Vector value) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { _SetFloat3(soundEvent, fieldNameBufferPtr, value); @@ -247,7 +247,7 @@ public unsafe static void SetFloat3(nint soundEvent, string fieldName, Vector va public unsafe static Vector GetFloat3(nint soundEvent, string fieldName) { - byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName); + byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetFloat3(soundEvent, fieldNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/VGUI.cs b/managed/src/SwiftlyS2.Generated/Natives/VGUI.cs index 9d5fead83..ee80b1a92 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/VGUI.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/VGUI.cs @@ -37,7 +37,7 @@ public unsafe static void ScreenTextCreate(ulong textid, Color col, int fontsize public unsafe static void ScreenTextSetText(ulong textid, string text) { - byte[] textBuffer = Encoding.UTF8.GetBytes(text); + byte[] textBuffer = Encoding.UTF8.GetBytes(text + "\0"); fixed (byte* textBufferPtr = textBuffer) { _ScreenTextSetText(textid, textBufferPtr); From d6f58d1b509ef2d45ad49a92ec9ee4fd6e7be774 Mon Sep 17 00:00:00 2001 From: Ambr0se Date: Sat, 15 Nov 2025 20:08:15 +0800 Subject: [PATCH 7/8] fix: Remove unnecessary buffer copies in native generator --- generator/native_generator/main.py | 6 +----- .../SwiftlyS2.Generated/Natives/NetMessages.cs | 15 +++------------ 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/generator/native_generator/main.py b/generator/native_generator/main.py index c6a06e441..845092582 100644 --- a/generator/native_generator/main.py +++ b/generator/native_generator/main.py @@ -216,16 +216,12 @@ def write_with_fixed_blocks(blocks, index=0): for param in string_params: writer.add_line(f"byte[] {param}Buffer = Encoding.UTF8.GetBytes({param} + \"\\0\");") - for param in bytes_params: - writer.add_line(f"var {param}Length = {param}.Length;") - writer.add_line(f"byte[] {param}Buffer = new byte[{param}Length];") - writer.add_line(f"Buffer.BlockCopy({param}, 0, {param}Buffer, 0, {param}Length);") fixed_blocks = [] for param in string_params: fixed_blocks.append(f"fixed (byte* {param}BufferPtr = {param}Buffer)") for param in bytes_params: - fixed_blocks.append(f"fixed (byte* {param}BufferPtr = {param}Buffer)") + fixed_blocks.append(f"fixed (byte* {param}BufferPtr = {param})") def write_native_call(): call_args = [] diff --git a/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs b/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs index 446bc5eaa..6ba56b95a 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs @@ -800,12 +800,9 @@ public unsafe static void SetBytes(nint netmsg, string fieldName, byte[] value) { var valueLength = value.Length; byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); - var valueLength = value.Length; - byte[] valueBuffer = new byte[valueLength]; - Buffer.BlockCopy(value, 0, valueBuffer, 0, valueLength); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) + fixed (byte* valueBufferPtr = value) { _SetBytes(netmsg, fieldNameBufferPtr, valueBufferPtr, valueLength); } @@ -818,12 +815,9 @@ public unsafe static void SetRepeatedBytes(nint netmsg, string fieldName, int in { var valueLength = value.Length; byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); - var valueLength = value.Length; - byte[] valueBuffer = new byte[valueLength]; - Buffer.BlockCopy(value, 0, valueBuffer, 0, valueLength); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) + fixed (byte* valueBufferPtr = value) { _SetRepeatedBytes(netmsg, fieldNameBufferPtr, index, valueBufferPtr, valueLength); } @@ -836,12 +830,9 @@ public unsafe static void AddBytes(nint netmsg, string fieldName, byte[] value) { var valueLength = value.Length; byte[] fieldNameBuffer = Encoding.UTF8.GetBytes(fieldName + "\0"); - var valueLength = value.Length; - byte[] valueBuffer = new byte[valueLength]; - Buffer.BlockCopy(value, 0, valueBuffer, 0, valueLength); fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { - fixed (byte* valueBufferPtr = valueBuffer) + fixed (byte* valueBufferPtr = value) { _AddBytes(netmsg, fieldNameBufferPtr, valueBufferPtr, valueLength); } From e4adfb8cd63775429b0491e8bec6062bb2102dbd Mon Sep 17 00:00:00 2001 From: Ambr0se Date: Sat, 15 Nov 2025 20:31:55 +0800 Subject: [PATCH 8/8] fix: Allocate extra byte for null terminator in string return values --- generator/native_generator/main.py | 10 ++++++++-- managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs | 2 +- .../SwiftlyS2.Generated/Natives/CEntityKeyValues.cs | 2 +- .../src/SwiftlyS2.Generated/Natives/CommandLine.cs | 4 ++-- .../src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs | 2 +- managed/src/SwiftlyS2.Generated/Natives/Database.cs | 6 +++--- .../src/SwiftlyS2.Generated/Natives/EngineHelpers.cs | 12 ++++++------ .../src/SwiftlyS2.Generated/Natives/FileSystem.cs | 4 ++-- .../src/SwiftlyS2.Generated/Natives/GameEvents.cs | 2 +- .../src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs | 2 +- .../src/SwiftlyS2.Generated/Natives/NetMessages.cs | 4 ++-- managed/src/SwiftlyS2.Generated/Natives/Player.cs | 4 ++-- .../src/SwiftlyS2.Generated/Natives/ServerHelpers.cs | 2 +- managed/src/SwiftlyS2.Generated/Natives/Sounds.cs | 2 +- 14 files changed, 32 insertions(+), 26 deletions(-) diff --git a/generator/native_generator/main.py b/generator/native_generator/main.py index 845092582..a7bbf15c9 100644 --- a/generator/native_generator/main.py +++ b/generator/native_generator/main.py @@ -182,7 +182,10 @@ def write_simple_call(): if is_buffer_return(return_type): first_call_args = ["null"] + call_args writer.add_line(f"var ret = _{function_name}({', '.join(first_call_args)});") - writer.add_line("var retBuffer = new byte[ret];") + if return_type == "string": + writer.add_line("var retBuffer = new byte[ret + 1];") + else: + writer.add_line("var retBuffer = new byte[ret];") def write_ret_fixed(): second_call_args = ["retBufferPtr"] + call_args @@ -238,7 +241,10 @@ def write_native_call(): if is_buffer_return(return_type): first_call_args = ["null"] + call_args writer.add_line(f"var ret = _{function_name}({', '.join(first_call_args)});") - writer.add_line("var retBuffer = new byte[ret];") + if return_type == "string": + writer.add_line("var retBuffer = new byte[ret + 1];") + else: + writer.add_line("var retBuffer = new byte[ret];") def write_ret_fixed(): second_call_args = ["retBufferPtr"] + call_args diff --git a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs index e23d40131..0aba93ee6 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Benchmark.cs @@ -154,7 +154,7 @@ public unsafe static string StringToString(string value) fixed (byte* valueBufferPtr = valueBuffer) { var ret = _StringToString(null, valueBufferPtr); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _StringToString(retBufferPtr, valueBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs b/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs index a492ced46..e8dee0f70 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/CEntityKeyValues.cs @@ -118,7 +118,7 @@ public unsafe static string GetString(nint keyvalues, string key) fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetString(null, keyvalues, keyBufferPtr); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetString(retBufferPtr, keyvalues, keyBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs b/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs index a1497878e..a0e6da30f 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/CommandLine.cs @@ -42,7 +42,7 @@ public unsafe static string GetParameterValueString(string parameter, string def fixed (byte* defaultValueBufferPtr = defaultValueBuffer) { var ret = _GetParameterValueString(null, parameterBufferPtr, defaultValueBufferPtr); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetParameterValueString(retBufferPtr, parameterBufferPtr, defaultValueBufferPtr); @@ -81,7 +81,7 @@ public unsafe static float GetParameterValueFloat(string parameter, float defaul public unsafe static string GetCommandLine() { var ret = _GetCommandLine(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetCommandLine(retBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs b/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs index e344b02be..6907ef5dc 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/ConsoleOutput.cs @@ -83,7 +83,7 @@ public unsafe static bool NeedsFiltering(string text) public unsafe static string GetCounterText() { var ret = _GetCounterText(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetCounterText(retBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Database.cs b/managed/src/SwiftlyS2.Generated/Natives/Database.cs index 37146818e..616a67337 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Database.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Database.cs @@ -16,7 +16,7 @@ internal static class NativeDatabase public unsafe static string GetDefaultConnection() { var ret = _GetDefaultConnection(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetDefaultConnection(retBufferPtr); @@ -29,7 +29,7 @@ public unsafe static string GetDefaultConnection() public unsafe static string GetDefaultConnectionCredentials() { var ret = _GetDefaultConnectionCredentials(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetDefaultConnectionCredentials(retBufferPtr); @@ -45,7 +45,7 @@ public unsafe static string GetCredentials(string connectionName) fixed (byte* connectionNameBufferPtr = connectionNameBuffer) { var ret = _GetCredentials(null, connectionNameBufferPtr); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetCredentials(retBufferPtr, connectionNameBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs b/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs index 55d3ab369..8e924dda2 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/EngineHelpers.cs @@ -16,7 +16,7 @@ internal static class NativeEngineHelpers public unsafe static string GetIP() { var ret = _GetIP(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetIP(retBufferPtr); @@ -86,7 +86,7 @@ public unsafe static nint GetTraceManager() public unsafe static string GetCurrentGame() { var ret = _GetCurrentGame(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetCurrentGame(retBufferPtr); @@ -99,7 +99,7 @@ public unsafe static string GetCurrentGame() public unsafe static string GetNativeVersion() { var ret = _GetNativeVersion(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetNativeVersion(retBufferPtr); @@ -112,7 +112,7 @@ public unsafe static string GetNativeVersion() public unsafe static string GetMenuSettings() { var ret = _GetMenuSettings(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetMenuSettings(retBufferPtr); @@ -133,7 +133,7 @@ public unsafe static nint GetGlobalVars() public unsafe static string GetCSGODirectoryPath() { var ret = _GetCSGODirectoryPath(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetCSGODirectoryPath(retBufferPtr); @@ -146,7 +146,7 @@ public unsafe static string GetCSGODirectoryPath() public unsafe static string GetGameDirectoryPath() { var ret = _GetGameDirectoryPath(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetGameDirectoryPath(retBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs b/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs index e60ded53b..134a76b5f 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/FileSystem.cs @@ -19,7 +19,7 @@ public unsafe static string GetSearchPath(string pathId, int searchPathType, int fixed (byte* pathIdBufferPtr = pathIdBuffer) { var ret = _GetSearchPath(null, pathIdBufferPtr, searchPathType, searchPathsToGet); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetSearchPath(retBufferPtr, pathIdBufferPtr, searchPathType, searchPathsToGet); @@ -109,7 +109,7 @@ public unsafe static string ReadFile(string fileName, string pathId) fixed (byte* pathIdBufferPtr = pathIdBuffer) { var ret = _ReadFile(null, fileNameBufferPtr, pathIdBufferPtr); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _ReadFile(retBufferPtr, fileNameBufferPtr, pathIdBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs b/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs index babf2f80b..b598fe90b 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/GameEvents.cs @@ -67,7 +67,7 @@ public unsafe static string GetString(nint _event, string key) fixed (byte* keyBufferPtr = keyBuffer) { var ret = _GetString(null, _event, keyBufferPtr); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetString(retBufferPtr, _event, keyBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs b/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs index bfef3bade..2f2c4fdf8 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/MemoryHelpers.cs @@ -63,7 +63,7 @@ public unsafe static nint GetAddressBySignature(string library, string sig, int public unsafe static string GetObjectPtrVtableName(nint objptr) { var ret = _GetObjectPtrVtableName(null, objptr); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetObjectPtrVtableName(retBufferPtr, objptr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs b/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs index 6ba56b95a..7a8d0ba87 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/NetMessages.cs @@ -457,7 +457,7 @@ public unsafe static string GetString(nint netmsg, string fieldName) fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetString(null, netmsg, fieldNameBufferPtr); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetString(retBufferPtr, netmsg, fieldNameBufferPtr); @@ -474,7 +474,7 @@ public unsafe static string GetRepeatedString(nint netmsg, string fieldName, int fixed (byte* fieldNameBufferPtr = fieldNameBuffer) { var ret = _GetRepeatedString(null, netmsg, fieldNameBufferPtr, index); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetRepeatedString(retBufferPtr, netmsg, fieldNameBufferPtr, index); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Player.cs b/managed/src/SwiftlyS2.Generated/Natives/Player.cs index 90ffcc57d..33c5927d3 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Player.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Player.cs @@ -110,7 +110,7 @@ public unsafe static void PerformCommand(int playerid, string command) public unsafe static string GetIPAddress(int playerid) { var ret = _GetIPAddress(null, playerid); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetIPAddress(retBufferPtr, playerid); @@ -184,7 +184,7 @@ public unsafe static void Teleport(int playerid, Vector pos, QAngle angle, Vecto public unsafe static string GetLanguage(int playerid) { var ret = _GetLanguage(null, playerid); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetLanguage(retBufferPtr, playerid); diff --git a/managed/src/SwiftlyS2.Generated/Natives/ServerHelpers.cs b/managed/src/SwiftlyS2.Generated/Natives/ServerHelpers.cs index c7218ce3c..602373309 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/ServerHelpers.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/ServerHelpers.cs @@ -16,7 +16,7 @@ internal static class NativeServerHelpers public unsafe static string GetServerLanguage() { var ret = _GetServerLanguage(null); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetServerLanguage(retBufferPtr); diff --git a/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs b/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs index ae2fff232..78586db32 100644 --- a/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs +++ b/managed/src/SwiftlyS2.Generated/Natives/Sounds.cs @@ -54,7 +54,7 @@ public unsafe static void SetName(nint soundEvent, string name) public unsafe static string GetName(nint soundEvent) { var ret = _GetName(null, soundEvent); - var retBuffer = new byte[ret]; + var retBuffer = new byte[ret + 1]; fixed (byte* retBufferPtr = retBuffer) { ret = _GetName(retBufferPtr, soundEvent);